2023.2: How can I Assist?

Feb 2, 2023 | Smarthus


Home Assistant Core 2023.2! 🎉

This release covers the first month of development of 2023, and it is setting
one heck of a high bar for the rest of the year! 😅

Undoubtedly, the most spectacular features are related to the
first chapter of Year of the Voice. 🎙️
It is hard to sum up all of this in this release blog, so I’m not even going
to try doing it in this introduction, but holy mother of smart homes: this is
exciting stuff! 😮

My personal favorite this release: huge steps into an even tighter integration
with our amazing sister project: ESPHome. Creating
and maintaining your own secure DIY IoT devices just became a lot easier.

And since we are talking about awesomeness, have you noticed the large amount
of logos in the release image above? So many new integrations! 🤩

Enjoy the release!

../Frenck

PS: Just a reminder that valentine’s day is coming up. Be sure to share the love! ❤️

  • Meet: Assist!
  • Streaming history
  • Grouping sensors
  • Now even tighter integrated with ESPHome
  • Other noteworthy changes
  • New Integrations
  • Integrations now available to set up from the UI
  • Need help? Join the community!
  • Breaking Changes
  • Farewell to the following
  • All changes

Don’t forget to join our release party live stream on YouTube 1 February 2023, at 12:00 PST / 21:00 CET!

Meet: Assist!

It’s Home Assistant’s Year of the Voice, and
it’s our goal to let users control Home Assistant in their own language.
Together with the Home Assistant community, we have been hard at work building
the foundation for this.

Today we like you to meet:

Screenshot showing the new assist feature being used to turn on lights

Assist icon Assist
allows you to use natural language to control Home Assistant. It is powered by
Hassil and the sentences
(contributed by 112! people) from the
Home Assistant Intents project.

We believe technology is meant to be played with, and projects should be
usable as soon as possible. Together with the community, we can then iterate
and refine. That’s why today, we’re delivering a basic experience supporting
a stunning 22! languages that work with Assist.

Go ahead, it is enabled by default; just tap the new Assist icon
Assist icon
at the top right of your dashboard to start using it.

Oh, and we are also releasing some fun stuff we’ve cooked up along the way!
Read more about Assist and other released voice features in the
Chapter 1: Assist blogpost
and a video presentation (including live demos) on YouTube.

Streaming history

History cards now update live! We now stream the state changes while they are
happening and update the graphs in real-time 😲

Screenshot showing a history card presenting the power usage of a kitchen coffeemaker, updating live while brewing coffee
These history cards now show live power usage, while I’m brewing a cup of coffee.

But this isn’t just limited to history cards, your
history dashboard is now live too!

As a result of this all, we can now write less frequently to the database in our
recorder. It took years of changes to get us to this point (thanks @bdraco 🙏).
It greatly reduces resource usage and increases storage lifetimes significantly.
The previously introduced live logbook and now the live history were the
last pieces that made this possible.

As a side-effect, it should also resolve the authentication errors some people
experienced re-opening the iOS companion app when using history cards.

Grouping sensors

The group helper now supports sensors too! Sensor groups
can combine entities with a numeric state, like sensors,
number, and number helpers
entities.

Screenshot showing the process of adding a new sensor group

This feature is a revised, improved, and more logical version of the
“Min/Max” integration / “Combine the state of several sensors” helper.
It is likely we are going to replace those with this new sensor group
in the future.

Compared to those previously mentioned methods, the sensor groups have the
additional options to hide their member entities and the option to ignore
sensors that currently are not in a numeric state (i.e., currently “unavailable”
or “unknown”).

Now even tighter integrated with ESPHome

ESPHome already works really well with Home Assistant.
Yet, this release makes it even better!

If you are using the ESPHome add-on, we have some great improvements for you.
The add-on and Home Assistant will now communicate with each other, bringing
in many new features.

When you set up a new device in ESPHome and next add it to Home Assistant,
they will be able to exchange encryption keys. Removing the need for you to
find, copy & paste those. Just a single click and the setup is done! 🚀

But that is not all. What is really mind-blowing, is that the ESPHome
integration will now provide update entities when using the add-on!

Screenshots, left one showing pending updates for ESPHome devices. Right one: an ESPHome device installing an update straight from Home Assistant

Right now, the update entities will only indicate if a device needs updating.
However, when the next major release of ESPHome (2023.2) becomes available,
it will support updating them too! Yes, at that point, you can update your
ESPHome devices directly from Home Assistant and even automate it!

Also, ESPHome is deprecating the old password-based authentication for its
API in favor of the more secure encryption key. If one of your ESPHome devices
is still using a plain password, Home Assistant will notify you by creating
an issue in your Repairs dashboard.

Screenshot showing a raised repair issue for an ESPHome device still using the deprecated API password instead of an API encryption key

We’ve also prepared for the next release of ESPHome (2023.2), in which you can
add a friendly, more human name to your ESPHome devices. Home Assistant will
pick those up, making your ESPHome devices look better out-of-the-box!

Other noteworthy changes

There is much more juice in this release; here are some of the other
noteworthy changes this release:

  • You can now add aliases to your areas too! Our new Assist feature
    leverages this.
  • Got an energy sensor in Wh, but you’d like it to be kWh? You can now
    change the units of energy sensors in the entity settings.
  • Each entity in the frontend has its own color, which is based on the current
    entity state. We now have officially added support
    for themes to customize these.
  • The most awesome integration of all, got even better. @Lash-L added support
    for the battery state of your Oral-B toothbrush!
  • The automations & scripts UI now support selecting other entities for
    above/below in the numeric state conditions & triggers. Thanks, @karwosts!
  • The Reolink integration now supports FLV streams, cameras can be discovered
    on the network, but more importantly: binary sensors! For things
    like motion, person, vehicle detection, and… Doorbell presses!
    Thanks, @starkillerOG!
  • There is now a service that allows for the creation of calendar events. So,
    you can now automate events to be added to your calendars! Amazing, @allenporter!
  • When selecting multiple entities from a list in the UI, it will now exclude
    already added entities. No more accidentally added duplicates! Thanks, @piitaya!
  • @Kane610 added PoE power sensors to the UniFi Network integrations, nice!
  • The Tile card now has a vertical option! Great, @TheZoker!
  • Jellyfin now works with TV shows in the media browser. Thanks, @j-stienstra!
  • We have bumped the CHIP/Matter SDK version used by our Matter implementation
    to 1.0.0.2, which contains many fixes.
  • From the Month of “What the heck?”: Old-style groups can now remove entities
    from the group using the group.set service. Thanks, @gjohansson-ST!
  • You might have noticed a Thread and an Open Thread Border Router integration
    being added to this release. These are currently not for active use but for
    initial early development.
  • The experimental multi-pan feature has been enabled again. Allowing to run
    both Zigbee and
    Thread using the single radio found in both Home Assistant
    Yellow and Home Assistant SkyConnect.
  • The following integrations now reached a Platinum level on the
    integration quality scale:

    • Renault excellent job @epenet!
    • HomeWizard Energy awesome work @DCSBL!

New Integrations

We welcome the following new integrations in this release:

  • EnergyZero, added by @klaasnicolaas
    Retrieves dynamic (hourly) energy & gas prices from the Dutch utility company
    EnergyZero.

  • EufyLife, added by @bdr99
    Integrate Eufy smart scales over Bluetooth.

  • Everything but the Kitchen Sink, added by @emontnemery
    This is a test integration, which provides various odd and obscure entities.
    It can be helpful for development purposes, but generally no use otherwise.

  • Google Mail, added by @tkdrob
    Provides services to manage your Google Mail auto-response and provides
    a notification service to send (or draft) emails.

  • LD2410 BLE, added by @930913
    Integrates a $4 LD2410 Bluetooth mmWave sensor, which works with our
    Bluetooth proxies!

  • Mopeka, added by @bdraco
    Works with your Mopeka BLE propane tank monitors.

  • OpenAI Conversation, added by @balloob
    OpenAI integration that uses GPT-3 to showcase replacing the Home Assistant
    conversation agent. Note: It cannot control anything in your home.

  • Read Your Meter Pro, added by @OnFreund
    Pull in your water usage/meter readings from your Read Your Meter Pro account.

  • Ruuvi Gateway, added by @akx
    Integrates the Ruuvi Gateway that reads your Ruuvi sensors.

  • SFR Box, added by @epenet
    Offers integration with the SFR broadband routers.

  • Starlink, added by @boswelja
    Starlink is a satellite internet constellation operated by SpaceX.
    Integrate your Starlink dish with Home Assistant.

  • Stookwijzer, added by @fwestenberg
    Stookwijzer advises wether to burn pallets or wood, or to
    use the barbecue. This can prevent health problems for people in the area
    (NL only).

  • Zeversolar, added by @kvanzuijlen
    Get power and energy information from your Zeversolar solar inverter locally.

This release also has some new virtual integrations. Virtual integrations
are stubs that are handled by other (existing) integrations to help with
findability. These are new:

  • ANWB Energie provided by EnergyZero, added by @klaasnicolaas
  • Energie VanOns provided by EnergyZero, added by @klaasnicolaas
  • Mijndomein Energie provided by EnergyZero, added by @klaasnicolaas
  • Fire TV provided by Android TV, added by @jrieger

Integrations now available to set up from the UI

The following integrations are now available via the Home Assistant UI:

  • Rain Bird, done by @allenporter
  • IMAP, done by @engrbm87
  • D-Link, done by @tkdrob

Need help? Join the community!

Home Assistant has a great community of users who are all more than willing
to help each other out. So, join us!

Our very active Discord chat server is an excellent place to be
at, and don’t forget to join our amazing forums.

Found a bug or issue? Please report it in our issue tracker,
to get it fixed! Or, check our help page for guidance for more
places you can go.

Are you more into email? Sign-up for our Building the Open Home Newsletter
to get the latest news about features, things happening in our community and
other news about building an Open Home; straight into your inbox.

Breaking Changes

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

Python 3.9 support has previously been deprecated and has now been removed.
Home Assistant now requires Python 3.10 to run.

If you are using Home Assistant OS, Home Assistant Container, or Home Assistant
Supervised installation method, you don’t have to do anything. In those cases,
we handle this all for you.

Your system has been using Python 3.10 for quite some time already.

(@frenck – #85456)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

If you are using MariaDB with Home Assistant recorder, please make sure
you run 10.5.17 , 10.6.9, 10.7.5, 10.8.4 (depending on which major
release you are using). If you are using the MariaDB core add-on,
make sure to update it to the latest version: 2.5.2.

Older versions of MariaDB suffer from a significant performance regression
when retrieving history data or purging the database.

(@bdraco – #87040)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

A disabled condition, for example, in an automation or script, will no longer
always be a pass/True within an OR condition. Instead, in those
cases, the condition will now have no effect when disabled.

(@karliemeads – #79718) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

For the precipitation entity, the unit was changed from mm to mm/h
(in to in/h), resulting in the need to fix the unit for long-term
statistics. You can do that in Developer Tools -> Stats.

(@bieniu – #86088) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

If the language in the Home Assistant settings is set to Polish, the language
of the advice and description attributes of the CAQI entity will change
from English to Polish.

If you are using these in your automations or scripts, you might need to adjust
them to match this change.

(@bieniu – #85655) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The state values of the Fitbit sensor entities will change to remove any
thousands delimiters. For example, 1,500 will become 1500.

If you’re using the state of these entities in automations or scripts,
you need to update them to handle the new state format.

(@sw-carlos-cristobal – #85251) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The scan/update interval for water values has been restored to match the Flume
app.

To stay under Flume’s API limits, the device connection is now checked hourly,
and notifications are checked every 5 minutes.

(@bdraco – #86354) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The use_include_order YAML configuration option has been removed.

This option was used to sort the history on the original history panel which,
is no longer used. As it no longer has a function and only serves to
slow down the response, it has been removed.

(@bdraco – #86365) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The IoTAWatt integration no longer provides sensors with the “Accumulated”
suffix. The accumulated sensors have been introduced to support net energy
export/import metering.

Newer versions of IoTaWatt provide “Integrators”, which allow achieving the
same more efficiently and with higher accuracy.

You should configure Integrators
to calculate the net energy export and import.

(@agners – #86611) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The Matter integration now requires running Matter Server version 2.0.0.

If you’re using the Matter Server add-on to run the Matter Server,
you will need version 3.0.0 of the add-on.

We had to change our vendor ID in the add-on; as a result, all devices
need to be recommissioned.

(@MartinHjelmare – #86470) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The states of air quality sensors have been standardized to match Home Assistant
core rules. This affects two states of the sensors that NAM can provide:

  • very low, which now became very_low
  • very high, which now became very_high

If you used those states directly in your automations, scripts, or templates;
you would need to adjust those to match these changes.

(@frenck – #85245) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The Pentair ScreenLogic integration now correctly categorizes all known lights.
Removing any lights that were previously incorrectly created as switch entities
may be necessary.

(@dieselrabbit – #86608) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The previously deprecated YAML configuration of the Pi-hole
integration has been removed.

Pi-hole is now configured via the UI. Any existing YAML configuration
has been imported in previous releases and can now be safely removed from your
YAML configuration files.

(@mib1185 – #84803) (documentation)


The extra state attribute “Domains blocked” has been removed from all sensors.
It is already exposed as its own dedicated sensor.

If you used the state attribute in your automations or scripts, you would
need to adjust them to use the dedicated sensor instead.

(@mib1185 – #85424) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

Rainbird is now configured via the UI, and configuration from YAML has been
imported automatically.

However, there are a few notable changes:

  • Custom per zone overrides for irrigation time are no longer supported.
  • The Rain delay binary_sensor that duplicates the Rain delay time sensor
    has been removed. You should move all uses to the sensor value and check
    for a non-zero value to get equivalent behavior.
  • The Rain sensor that duplicates the Rain binary_sensor has been removed.
    You may check the binary_sensor state to get equivalent behavior.

Also, the way the “Rain Delay” is managed has changed. The Rain Delay, which
pauses irrigation for a specified number of days, is now managed with a number
entity which can be controlled directly from the UI.

The existing service call rainbird.set_rain_delay and the Raindelay sensor
have been deprecated. Any existing automations or scripts that make service
calls to rainbird.set_rain_delay will need to be replaced with a call
to number.set_value. Additionally, the existing service call was updated to
require an integration entry configuration since it previously had undefined
behavior, so it is recommended to move directly to the new number service call.

(@allenporter – #85271 #86208) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The recorder’s default commit interval has been increased to 5 seconds to
reduce disk I/O and increase storage longevity.

As the history and logbook integrations both support live streaming, which
avoids the need to read the database after the initial sync, there is no
remaining core functionality that needs a lower commit interval.

The commit_interval can be adjusted
to a lower value in the event an integration has not been updated to watch for
events instead of reading the database and needs to read the database sooner.

(@bdraco – #86115) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The previously deprecated renault.charge_start service has been removed.
Please use the dedicated start charge button entity to start the charge instead.

(@epenet – #86070) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

Sony Bravia TV media players no longer have fake (assumed) playing or paused
states, and those are replaced with the on state.

If you have automations or scripts that use the playing or paused state,
please update them to be compatible with this change.

(@Drafteed – #84885) (documentation)


The source_list no longer contains a list of applications and TV channels.
Apps and channels have been separated from the input list and moved
to the Media Browser.

If you have automations or scripts that use media_player.select_source to
switch apps or channels on the Bravia TV, the automations need to be
updated to use media_player.play_media service instead.

The options flow has been removed from the integration, as the only
configurable setting ignored_sources was no longer relevant
and incompatible with this change.

(@Drafteed – #85288) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The previously deprecated YAML configuration of the Spain electricity hourly
pricing (PVPC) integration has been removed.

Spain electricity hourly pricing (PVPC) is now configured via the UI. Any
existing YAML configuration has been imported in previous releases and can now
be safely removed from your YAML configuration files.

(@azogue – #85614) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The swing modes of Tado have changed. This is to standardize with other
integrations, and so it can support translations.

  • ON became the lowercase on
  • OFF became the lowercase off

If you used these swing modes in your automations or scripts, you might
need to adjust those to this change.

(@emontnemery – #84278) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

All extra state attributes from Twinkly light entities have been removed.

They mostly added information about the device,
not the actual light state itself.

(@frenck – #84986) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

ISY/IoX Variables have been moved from sensor entities to number entities;
the existing sensor entities are deprecated and will be removed in a future
release.

The isy994.set_variable service has been deprecated in favor of using
the number entities to directly set the variable values.

Please update any dashboards, scripts, and automations that may be using these
entities or service.

(@shbatm – #85511) (documentation)


Entities for INSTEON Aux Properties and Device Communication Errors have been
removed for nodes that are not the main (load) node.

On Level and Ramp Rate sensors have been removed for non-dimmable (non-light.)
devices. Only load devices receive communication error updates and only
dimmable devices support OL and RR commands.

The other entities were previously added but did not receive valid states from
the ISY or end-devices. These sensors were disabled by default.

(@shbatm – #85744) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The previously deprecated YAML configuration of the Uptime
integration has been removed.

Uptime is now configured via the UI. Any existing YAML configuration has been
imported in previous releases and can now be safely removed from your YAML
configuration files.

(@frenck – #86292) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

When there is a connection error with the receiver, the device will now
go into an unavailable state until the connection has been restored.

(@sredna – #85018) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The raw state/option values of the Yamaha MusicCast zone sleep select entities
have been standardized to match Home Assistant core rules.

The following states/options have been changed

  • 120 min, which now became 120_min
  • 90 min, which now became 90_min
  • 60 min, which now became 60_min
  • 30 min, which now became 30_min

If you used those states/options directly in your automations, scripts,
or templates; you will need to adjust those to match these changes.

(@frenck – #85292) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The previously deprecated YAML configuration of the Zentralanstalt für
Meteorologie und Geodynamik (ZAMG) integration has been removed.

Zentralanstalt für Meteorologie und Geodynamik (ZAMG) is now configured via the
UI. Any existing YAML configuration has been imported in previous releases and
can now be safely removed from your YAML configuration files.

(@killer0071234 – #86113) (documentation)

function showDetails(el) {
const content = el.parentElement.querySelector(“.details-block-content”);
const up = el.querySelector(“svg#up”);
const down = el.querySelector(“svg#down”);
const shouldExpand = down.style.display === “block”;
up.style.display = shouldExpand ? “block” : “none”;
down.style.display = !shouldExpand ? “block” : “none”;
content.hidden = !shouldExpand;
el.ariaExpanded = shouldExpand;
}

The AnalogInput sensor entities for certain Xiaomi plugs have been removed
from ZHA.

Properly working “Active power” and “Summation delivered” sensors are available
to replace the older entities. These newer sensor entities can also be used in
Home Assistant Energy dashboard.

(@TheJulianJES – #86261) (documentation)

If you are a custom integration developer and want to learn about breaking
changes and new features available for your integration: Be sure to follow our
developer blog. The following are the most notable for this release:

  • Bluetooth updates for 2023.2 and later
  • Cover intents deprecated
  • Database schema v32 updates
  • Future proofing the Conversation integration
  • Sensor entity can now do rounding of numerical values

Farewell to the following

The following integrations are also no longer available as of this release:

  • Almond has been removed. It is in a non-working state, and the services
    have been shut down.
  • OpenALPR Local was previously deprecated and has now been removed. It
    doesn’t work correctly and has no usage, according to our public analytics.

All changes

Of course, there is a lot more in this release. You can find a list of
all changes made here: Full changelog for Home Assistant Core 2023.2



Her er kilden til saken

Smart Occupancy Sensor vet alt

I løpet av de siste tiårene har bygningsingeniører og arkitekter gjort enorme fremskritt i å forbedre effektiviteten til ulike bygninger og enhetene som holder dem trygge og komfortable å bo i. Tilsetningen av ny teknologi som varmepumper er en viktig faktor,...

Et smart hjem som kan gjøre alt

I et ideelt smart hjem har eksplosjonen av billige WiFi- og Bluetooth-brikker tillatt hundrevis av små trådløse enheter å kontrollere bryterne, lysene og alt annet som kreves for et "smarthjem" til en relativt lav pris. Men hva om du ikke vil at hundrevis av...