2023.9: New climate entity dialogs, lots of tile features, and template sensors from the UI!
Home Assistant Core 2023.9! 🎉
Frenck is enjoying a well earned holiday, so I’m taking care of the release this month.
This month, on the 17th, it has been 10 years since Home Assistant started. We’ll be preparing a special event on the Home Assistant YouTube channel
This release is pretty packed! With some very nice updates to the UI with new entity dialogs for climate entities, and lots of tile card features. Template sensors can be created from the UI now, and for the more advanced template sensors, the ability to get data from services! A new service to get the weather forecast, and better options to display different forecasts.
And something you will probably not see when you are already using Home Assistant: the onboarding flow is completely redesigned!
I absolutely love it!
Enjoy the release!
Bram
- New climate, humidifier, and water heater entity dialogs
- Lots of new tile features
- Lawn mower
- Group previews
- Template sensors from the UI
- Actions for trigger template entities
- Weather forecast service
- Onboarding
- Other noteworthy changes
- New integrations
- Release 2023.9.1 - September 8
- Release 2023.9.2 - September 12
- Release 2023.9.3 - September 24
- Need help? Join the community!
- Backward-incompatible changes
- All changes
Don’t forget to join our release party live stream on YouTube
New climate, humidifier, and water heater entity dialogs
The entity dialogs for climate, humidifier, and water heater entities got an update, and if you ask me, it looks absolutely stunning! It now has a newly designed circular slider showing the current and target temperatures and allows you to easily swipe to the desired target temperature. There are also dedicated buttons to change the target, so it is easy to use if you are not using a touchscreen. It will glow in the middle to show its current action, for example when it is heating or cooling.
Screenshot of the more info dialog of a climate entity.
Lots of new tile features
The tile card gets many new features this release.
The features of a tile card are a great way to bring more functionalities directly into your dashboard, without needing to open the more info dialog.
- HVAC mode
- Water heater mode
- Temperature control
- Cover position
- Cover tilt
- Lawn mower commands
- Color temperature
Screenshot of tile cards with the new features.
Lawn mower
A new entity type was added this release: the lawn mower!
You can now integrate your lawn mower into Home Assistant! Never worry about the lawn mower when it starts raining, you can now automate the lawn mower to stop and go back when it rains. For now, just MQTT is supported, but keep an eye out for other integrations!
Screenshot of the more info dialog of a lawn mower entity.
Group previews
When setting up a helper, sometimes it can be useful to see how the entity that you are creating looks while you are setting it up. That’s why we added a preview when you create or change a group helper.
It will show exactly what the entity will look like with the current settings.
And talking about groups, we also got a new group, the event
group!
Screenshot of creating a sensor group.
Template sensors from the UI
We also added preview support to another helper that finally made its way into the UI, the template sensor.
From the UI you can use a template to set the state of the sensor. You can pick a unit of measurement, set the device class, and select a state class. Both sensors and binary sensors are supported.
This will make most of the use cases for template sensors available through the UI and one less need for YAML!
Other more advanced fields, like attributes, are unavailable from the UI. You will still have to set those up in YAML.
With the preview, you see a live update of the sensor value while writing the template.
Screenshot of creating a template sensor.
Actions for trigger template entities
Trigger template entities can now have an action block that is executed after the trigger but before the entities are rendered.
This will allow users to fetch things like calendar events and weather forecasts using services with responses and use them in their template entities. You can even use OpenAI to set the value of your entities now!
All variables from the action block will be available in the template.
An example that checks at midnight if you have something on your calendar tomorrow and sets a binary sensor:
template:
- trigger:
- platform: time
at: "00:00:00"
action:
- service: calendar.list_events
target:
entity_id: calendar.calendar
data:
start_date_time: "{{ today_at() + timedelta(days=1) }}"
duration:
hours: 24
response_variable: events
binary_sensor:
- name: Calendar events tomorrow
state: "{{ events.events is defined and events.events | count > 0 }}"
Weather forecast service
We added a new service for weather entities, weather.get_forecast
, that responds with the weather forecast.
Previously you would have to look at the forecast
attribute of a weather entity to get the forecast, now this can be done by calling a new service, weather.get_forecast
, that will respond with the forecast.
You can also specify what type of forecast you want. Do you want to see the forecast by day or do you want to know it for every hour? This means you no longer need separate entities for every forecast type, but it can all be done in 1 entity.
All weather integrations are updated to support this new service.
Screenshot of service developer tools showing the weather forecast service.
If an entity supports multiple forecasts, you can choose which forecast you want to see in the more info dialog. In the weather card in your dashboard, you can also now pick what kind of weather forecast you want to show in that card.
Screenshot of the weather more info dialog.
With this change, the forecast
attribute of the weather entity is deprecated, and will be removed in Home Assistant Core 2024.3.
This will make it possible to have on-demand forecasts, that update when you want them to, instead of them being updated all the time. It will also make the system faster; all state data gets sent to your browser or mobile app every time it is opened so the frontend has the latest states of your entities. The forecast attribute makes the state of weather entities very big, causing everything to be loaded slower.
While the way to access this data has changed and may impact your automations, you will not experience any loss in functionality. Even with this change, rest assured that the forecast cards in your dashboard will still work, they will now just use the service to retrieve the forecast data asynchronously instead of reading it from the state attribute. The end result is that your dashboards will load faster, and the frontend will be leaner.
You can use the newly added action
part of a template entity to fetch the forecast and use it in your template:
template:
- trigger:
- platform: time
at: "00:00:00"
action:
- service: weather.get_forecast
target:
entity_id: weather.home
data:
type: daily
response_variable: forecast
binary_sensor:
- name: Is it going to rain?
state: "{{ forecast.forecast[0].precipitation > 0 }}"
Onboarding
While it is certain that Home Assistant is a great tool once you understand how it works, one part that was often overlooked is its associated learning curve. We are now actively working to flatten that curve so that you can get more from your home faster and simpler. This release shows the first result of that effort, a new onboarding flow.
Something you probably have not seen for a while, but we gave our onboarding a fresh new look! It is shortened to get users in Home Assistant as fast as possible, so they can enjoy tinkering with their home faster!
Screenshot of the onboarding screen.
Other noteworthy changes
There are many more improvements in this release; here are some of the other noteworthy changes this release:
-
Enphase Envoy has gotten a lot of love this release, ensure it works
perfectly with the latest firmware available. Thanks @bdraco
and @cgarwood ! - The Shelly integration now supports the Shelly Gas Valve addon. Thanks @bieniu
! -
@starkillerOG
added zoom buttons and AI detection delay time controls to the Reolink integration. Nice! - You can now set separate damping factors for morning and evening in the
Forecast Solar integration. Thanks @joostlek
! -
@Kane610
added a restart device button to the UniFi integration. Thanks! - The Tomorrow.io integration now reports humidity and dew point in its weather
forecasts. Thanks @lymanepp
! - Support for soil moisture sensors was added to the Gardena integration.
Thanks @elupus
! -
@timmo001
added a power service to the System Bridge integration. Thanks! - If you change your password, you will be asked if you want to logout everywhere.
- The file and image upload elements have been revamped.
- You can now sort the options of an input select entity. Thanks @karwosts
! - Local Bluetooth has been optimized and is now faster, thanks @bdraco
!
New integrations
We welcome the following new integrations in this release:
-
Comelit SimpleHome, added by @chemelli74
Control your Comelit home automation devices. -
Lawn mower, added by @mikey0000
A new entity type, that allows integrations to provide lawn mower entities. -
Schlage, added by @dknowles2
Use your Schlage WiFi smart locks with Home Assistant. -
Trafikverket Camera, added by @gjohansson-ST
Adds Swedish traffic camera feeds from Trafikverket. -
Vodafone Station, added by @chemelli74
Provides device tracker support for Vodafone Station router. -
Yardian, added by @h3l1o5
Support for your Yardan Smart Sprinkler Controller.
This release also has a new virtual integration. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. These are new:
- Consolidated Edison (ConEd) provided by Opower
- Orange and Rockland Utilities (ORU) Opower provided by Opower
Release 2023.9.1 - September 8
- Fix the Hydrawise status sensor (@dknowles2
- #99271 ) - Fix tradfri asyncio.wait (@cdce8p
- #99730 ) - Handle alexa invalid climate temp adjustment (@jbouwh
- #99740 ) - Revert “Bump pyoverkiz to 1.10.1 (#97916)” (@joostlek
- #99742 ) - Fix Freebox disk free space sensor (@Quentame
- #99757 ) - Fix Freebox Home battery sensor (@Quentame
- #99756 ) - Bump sense_energy to 0.12.1 (@bdraco
- #99763 ) - Add support for more busy codes for Epson (@pszafer
- #99771 ) - Bump
aiorecollect
to 2023.09.0 (@bachya- #99780 ) - Bump pyenphase to 1.9.3 (@bdraco
- #99787 ) - Bump pylutron-caseta to v0.18.2 (@swamplynx
- #99789 ) - Fix missing dew point and humidity in tomorrowio forecasts (@lymanepp
- #99793 ) - Always set severity level flag on render_template error events (@emontnemery
- #99804 ) - Improve error handling in /api/states POST (@emontnemery
- #99810 ) - Use correct config entry id in Livisi (@joostlek
- #99812 ) - Fix missing name and identifiers for ELKM1 connected devices (@bdraco
- #99828 ) - Bump aiovodafone to 0.1.0 (@chemelli74
- #99851 ) - Bump dbus-fast to 1.95.0 (@bdraco
- #99749 ) - Bump dbus-fast to 1.95.2 (@bdraco
- #99852 ) - Bump ZHA dependencies (@puddly
- #99855 ) - Fix NOAA tides warnings (@jbouwh
- #99856 ) - Upgrade bluetooth deps to fix timeout behavior on py3.11 (@bdraco
- #99879 ) - Update frontend to 20230908.0 (@bramkragten
- #99939 ) - Bump pymodbus v3.5.0 (@janiversen
- #99343 ) - Bump pymodbus v.3.5.1 (@janiversen
- #99940 ) - Bump pyenphase to v1.11.0 (@joostlek
- #99941 ) - Fix key error MQTT binary_sensor when no name is set (@jbouwh
- #99943 ) - Bump zeroconf to 0.93.1 (@bdraco
- #99516 ) - Bump zeroconf to 0.96.0 (@bdraco
- #99549 ) - Bump zeroconf to 0.97.0 (@bdraco
- #99554 ) - Bump zeroconf to 0.98.0 (@bdraco
- #99748 ) - Make WS command render_template not give up if initial render raises (@emontnemery
- #99808 ) - Bump hatasmota to 0.7.1 (@emontnemery
- #99818 ) - Bump millheater to 0.11.2 (@Danielhiversen
- #99683 )
Release 2023.9.2 - September 12
- Remove modbus pragma no cover and solve nan (@janiversen
- #99221 ) - Bugfix: Electric Kiwi reduce interval so oauth doesn’t expire (@mikey0000
- #99489 ) - Read modbus data before scan_interval (@janiversen
- #99243 ) - Make modbus retry fast on read errors (@janiversen
- #99576 ) - Fix Soma cover tilt (@ratsept
- #99717 ) - Cache device trigger info during ZHA startup (@puddly
- #99764 ) - Airthings BLE unique id migration (@LaStrada
- #99832 ) - Update RestrictedPython to 6.2 (@cdce8p
- #99955 ) - Bump bleak to 0.21.1 (@bdraco
- #99960 ) - Bump python-roborock to 33.2 (@Lash-L
- #99962 ) - Handle disconnects in zwave_js repair flow (@raman325
- #99964 ) - Bump plugwise to v0.32.2 (@bouwew
- #99973 ) - Bump bluetooth-auto-recovery to 1.2.3 (@bdraco
- #99979 ) - Avoid probing ipp printers for unique_id when it is available via mdns (@bdraco
- #99982 ) - Bump pymodbus to v3.5.2 (@janiversen
- #99988 ) - Bump pywaze to 0.4.0 (@eifinger
- #99995 ) - Bump systembridgeconnector to 3.8.2 (@timmo001
- #100051 ) - Bump aiovodafone to 0.2.0 (@chemelli74
- #100062 ) - Remove Comelit alarm data retrieval (@chemelli74
- #100067 ) - Fix addon slug validation (@mdegat01
- #100070 ) - Remove duplicated word in enphase description text (@greiginsydney
- #100098 ) - Fix TriggerEntity.async_added_to_hass (@emontnemery
- #100119 ) - Bump hatasmota to 0.7.2 (@emontnemery
- #100129 ) - Update frontend to 20230911.0 (@bramkragten
- #100139 ) - Fix devices not always reporting IP - bump aiounifi to v62 (@Kane610
- #100149 ) - Fix AVM Fritz!Tools update entity (@mib1185
- #100151 ) - Bump ZHA dependencies (@puddly
- #100156 ) - Bump zwave-js-server-python to 0.51.2 (@raman325
- #100159 ) - Adjust tasmota sensor device class and icon mapping (@emontnemery
- #100168 ) - Bump hatasmota to 0.7.3 (@emontnemery
- #100169 ) - Bump Ultraheat to version 0.5.7 (@vpathuis
- #100172 ) - Fix entity name attribute on mqtt entity is not removed on update (@jbouwh
- #100187 ) - Bump hass-nabucasa from 0.70.0 to 0.71.0 (@ludeeus
- #100193 )
Release 2023.9.3 - September 24
- Always update unit of measurement of the utility_meter on state change (@dgomes
- #99102 ) - Netgear catch no info error (@starkillerOG
- #100212 ) - Bump python-roborock to 0.34.0 (@Lash-L
- #100236 ) - Bump pynetgear to 0.10.10 (@starkillerOG
- #100242 ) - Fix incorrect off peak translation key for Roborock (@Lash-L
- #100246 ) - Bump pyenphase to 1.11.2 (@cgarwood
- #100249 ) - Bump pyenphase to 1.11.3 (@cgarwood
- #100255 ) - Bump sensirion-ble to 0.1.1 (@akx
- #100271 ) - Future proof assist_pipeline.Pipeline (@emontnemery
- #100277 ) - Bump pyenphase to 1.11.4 (@cgarwood
- #100288 ) - Bump yalexs-ble to 2.3.0 (@bdraco
- #100007 ) - Bump yalexs to 1.9.0 (@bdraco
- #100305 ) - Update Mill library to 0.11.5, handle rate limiting (@Danielhiversen
- #100315 ) - Remove _next_refresh variable in update coordinator (@elupus
- #100323 ) - Fix timeout issue in devolo_home_network (@Shutgun
- #100350 ) - Fix Airthings ble migration (@LaStrada
- #100362 ) - Try Reolink ONVIF long polling if ONVIF push not supported (@starkillerOG
- #100375 ) - Bump reolink-aio to 0.7.10 (@starkillerOG
- #100376 ) - Add missing timer service translation (@steffenrapp
- #100388 ) - Fix current condition in IPMA (@dgomes
- #100412 ) - Bump yolink-api to 0.3.1 (@matrixd2
- #100426 ) - Fix timer reload description (@edenhaus
- #100433 ) - bump pywaze to 0.5.0 (@eifinger
- #100456 ) - Fix error is measurement is not sent by AirNow (@asymworks
- #100477 ) - Only get meteo france alert coordinator if it exists (@joostlek
- #100493 ) - Fix broken reconnect capability of fritzbox_callmonitor (@frimtec
- #100526 ) - Fix xiaomi_miio button platform regression (@rytilahti
- #100527 ) - Fix Roborock send command service calling not being enum (@Lash-L
- #100574 ) - Adjust hassfest.manifest based on config.action (@raman325
- #100577 ) - Fix ecobee aux_heat_off always returns to HEAT (@robinlee09201
- #100630 ) - Bump python-roborock to 0.34.1 (@Lash-L
- #100652 ) - Bump zwave-js-server-python to 0.51.3 (@raman325
- #100665 ) - Fix mqtt light rgbww update without state topic (@jbouwh
- #100707 ) - Bump aiocomelit to 0.0.8 (@chemelli74
- #100714 ) - Fix handling of unit system change in sensor (@emontnemery
- #100715 ) - Bump ZHA dependencies (@puddly
- #100732 ) - Bump intents to 2023.9.22 (@synesthesiam
- #100737 ) - Fix weather template forecast attributes (@gjohansson-ST
- #100748 ) - Fix rainbird unique id (@allenporter
- #99704 ) - Bump ring-doorbell to 0.7.3 (@sdb9696
- #100688 ) - Update home-assistant/wheels to 2023.09.1 (@frenck
- #100758 ) - Bump pyschlage to 2023.9.0 (@dknowles2
- #99624 ) - Bump pyschlage to 2023.9.1 (@dknowles2
- #100760 ) - Add strong to fan mode for Sensibo (@gjohansson-ST
- #100773 ) - Update home-assistant/builder to 2023.09.0 (@frenck
- #100797 ) - Fix Comelit device info (@chemelli74
- #100587 )
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
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.
Backward-incompatible changes
BMW Connected Drive
The “Refresh from cloud” button has been removed. Use the
homeassistant.update_entity
service with any BMW entity for a
full reload instead.
(@rikroe
DoorBird
The doorbird_reset_favorites
event is no longer fired when the clear webhook
is called. Note: this event was never documented.
(@bdraco
Enphase Envoy
Envoy versions < 3.9 (pre-API) are no longer supported as they require
web scraping which is disallowed by ADR-0004
(@bdraco
ESPHome
To prevent cross-linked devices, replacing an ESPHome device with a different board is no longer allowed. Instead, delete the integration entry and re-add the new device when the mac address of the board changes.
(@bdraco
EZVIZ
Only switches supported by the camera will be created. Non switchable switches have been removed.
(@RenierM26
Flume
You might get false positives for leak detected and high flow sensors if you have old unread notifications in the Flume app.
Before, the leak detected and high flow sensors would only trigger until you read the notification in the Flume app which was too late for Home Assistant to take any automated action.
Now, they trigger regardless if you have read or not the notification. They will remain active until you delete the notification in the Flume app, similar to the old behavior documented.
(@tronikos
Hive
The previously deprecated service hive.boost_heating
has been removed.
HTTP / Webserver
Home Assistant can’t be put in an iframe anymore by default. If you still want
to embed the Home Assistant interface in a frame, you can do so by disabling
use_x_frame_options
by setting it to false
in the http
configuration.
(@frenck
Météo-France
The Météo-France weather entities have been updated:
- The
forecast
state attribute is deprecated and will be removed in Home Assistant Core 2024.3, you should instead use theweather.get_forecast
service. - The config entry option to select hourly or daily forecast can no longer be adjusted, but any existing configuration of the forecast period will be respected until Home Assistant Core 2024.3.
- Météo-France now provides a single weather entity which supports both hourly and daily forecast.
(@emontnemery
Mill
Mill has moved to a new IoT solution and released a new API. The unique ID from the old API is no longer available, so all devices will be shown as new devices. Support for the heater fan will be added later.
MQTT
MQTT device trackers no longer always update when there is no state change. This means that automations that trigger on a state change no longer are triggered if there is no change.
(@jbouwh
Nextcloud
The CPU load sensor has been replaced, it is not a list of 3 values anymore, but there are now three single sensors for CPU load within last 1, 5, and 15 minutes.
(@mib1185
Plugwise
The maximum_boiler_temperature
sensor entity has been replaced by a number
entity, allowing control as well.
(@CoMPaTech
The additional schema state attributes of the climate entity have been removed. They have beeen previously replaced by a select entity.
(@bouwew
Start.ca
Start.ca limit
, usage
, and used_remaining
sensors will no longer be created
when there’s no bandwidth cap.
(@emontnemery
Trafikverket Train
All attributes have been converted into their own sensors. The original sensor is now renamed with suffix “Departure time”.
Any automation or script depending on these attributes needs to be adjusted to use these new sensors.
Z-Wave
The entity naming logic has been updated to be less brittle. As a result,
some zwave_js
entities that you haven’t given a custom name to may be renamed.
Since they are registered in the entity registry, the entity IDs will not change and your automations should therefore not be impacted by the change.
(@raman325
With this release, you will need to update your zwave-js-server instance. You must use zwave-js-server 1.31.0 or greater (schema 31).
If you use the Z-Wave JS add-on, you need at least version 0.1.88. If you use the Z-Wave JS UI add-on, you need at least version 1.15.9. If you use the Z-Wave JS UI Docker container, you need at least version 8.23.2. If you run your own Docker container or some other installation method, you will need to update your zwave-js-server instance to at least 1.31.0.
(@raman325
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:
- Entity state formatting
- HomeAssistant.init requires passing a string to it
- Numerical sensors are no longer allowed to set their state to NaN or inf
- Weather entity forecast types
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.9