2024.1: Happy automating!
Happy New Year! 🍾
We wish you, and all the loved ones around you, all the best for 2024! 🥂
I cannot think of a better way to start the new year: Home Assistant Core 2024.1! 🎉
This release is fairly small, as expected; we are just coming out of the holiday season. However, it does contain some nice improvements and features to be excited about and a stunning total of 13 new integrations!
My favorite: the automation editor changes. It had quite a bunch of user interface tweaks. Most are focused on making it friendlier and easier to use for new and long-term users, making it quicker to find the right trigger, condition, or action.
I greatly like this improved experience, and I hope you do too!
Enjoy the release!
../Frenck
- Automation editor improvements
- Description & due date support for to-do list items
- New entity type: Valve
- Swappable current/target on thermostat & humidifier cards
- New card features
- Other noteworthy changes
- New integrations
- Integrations now available to set up from the UI
- Release 2024.1.1 - January 5
- Release 2024.1.2 - January 6
- Release 2024.1.3 - January 12
- Release 2024.1.4 - January 19
- Release 2024.1.5 - January 20
- Release 2024.1.6 - January 30
- Need help? Join the community!
- Backward-incompatible changes
- All changes
Don’t forget to join our release party live stream on YouTube
Automation editor improvements
The automation editor got some love for this release, with many small improvements to make it easier for both new and long-time users.
As there are many small improvements, let’s go over them individually.
PS: One quick note: all changes are UI changes, meaning that these changes do not affect the underlying automation configuration. All your existing automations will continue to work as they did before.
Improved empty automations dashboard
If you start with Home Assistant, visiting the automations dashboard would result in an empty page. That is not very helpful if you see this for the first time. So, we’ve improved that!
You are now greeted by the little automation robot that explains what an automation is and references to the documentation that can help you get started.
A small but effective improvement to help new users get started. We have also applied this same improvement to the scripts and scenes dashboards.
Guidance when creating a new automation
When starting a new automation from scratch, you used to be greeted by some, possibly, new terminology and almost a blank page with some buttons to add triggers, conditions or actions. As a new user, this immediately imposes a challenge: what do I need to do?
You guessed it: We have slightly improved that. We have changed the big headers to be more descriptive and less technical. We have also added some help text to explain each section, including examples of what they can be used for.
Don’t worry; we’ll hide the explanation once you add elements to the sections to keep the overview of existing automations as clean as possible.
Building blocks
You might have noticed in the screenshots above the conditions and actions have a new button next to them: + Add building block.
Selecting these new buttons allows you to add logical elements to your automation or scripts, like And, Or, If-then, Choose, etc.
These used to be mixed in with the conditions and actions but now have their own dedicated button. It makes it easier to find them and declutters the list of conditions and actions.
Notice how this now opens up a dialog? A dialog gives us more space to describe what each building block does and room for a search box to find the one you need.
Improved trigger, condition & action buttons
The bigger change can be found in the buttons to add a trigger, conditions, or actions to your automation. This change was not just aimed at new users but also long-time users.
All these buttons are used to give a dropdown that allows you to select the type of trigger, condition, or action you want to add. This dropdown has been replaced by a new dialog similar to the one we just saw for the building blocks.
Like the building block, it describes what each trigger, condition, or action does. These descriptions are important, as they help you understand what they do.
If you add an element, we will first show you the most used triggers/conditions/actions by our community. We now have all others neatly grouped. For actions, we took it a step further and unified them with service calls.
Unified actions
If you have been using Home Assistant for a while, you are probably familiar with the “service call”-action that you can add to your automation. But, honestly, what is a “service call”? It is a bit of a technical term that is especially confusing for newer users. You just want to turn on a light, right?
This release unifies those “service calls” with all other actions, meaning there is no “service call” anymore; that layer has been refactored from the UI. Instead, you add an action and select the action you want to take, for example, turn on a light.
This means that if you add an action, you see all actions (including all service calls), categorized, with description, and searchable! Being able to search through all available actions is a huge improvement.
By default, just like with the triggers and conditions, we show you the most used actions first and the actions for the entities you have on your system. All others are neatly grouped by integration in the Other actions section.
Description & due date support for to-do list items
The to-do list integration keeps getting better and better. This release adds support for descriptions and due dates!
If the integration you are using supports it, you can now add descriptions to each task on your list. It fully supports the Markdown markup to add links, bold text, etc. If due dates (or due date + time) are supported, you can set these.
As shown in the screenshot above, there is a whole new dialog to adjust your to-do item. But this is not the only change. The list itself has been improved as well.
It is much cleaner, all big text boxes are gone, and each item is nicely formatted, including an excerpt of the description and the due date. If the due date is overdue, it will be highlighted.
New entity type: Valve
A brand new entity type has been added to Home Assistant: Valve!
Integrations can use this entity type to expose valves, such as a valve on a radiator, pool, sprinkler system, and main house gas or water line.
Currently, the Shelly integration supports it and now provides a valve
entity
for the Valve addon for Shelly Gas. Additionally, support for it has been
added to MQTT, and the valve entities also work with Amazon Alexa
and Google Assistant.
Tip: Do you have a switch entity that controls a valve? You can now change the entity type to valve in the entity settings.
Swappable current/target on thermostat & humidifier cards
By popular demand, the thermostat and humidifier cards now support setting current temperature/humidity as the primary information to show on the card.
You can enable the show current temperature as primary information option in the card, which will result in the target temperature being swapped with the current temperature in the card.
New card features
Last year, we saw many new features added to the cards, so let’s start the new year with some more!
@Quentame
Also new is the update actions card feature. This addition by @piitaya
Other noteworthy changes
There are many more improvements in this release; here are some of the other noteworthy changes this release:
- Two brand new template functions have been added this release:
median
andstatistical_mode
. Thanks, @TheFes! -
@bieniu
added support for the brand new Shelly 3rd generation devices to the Shelly integration. Nice! - A long-time shutdown bug has been fixed: You can now run automations triggered
when Home Assistant shuts down. This could, for example, be used to send
yourself a notification when that happens. Thanks, @tetele
! - Created your own fan controller using ESPHome? You can now add preset modes
to it! Thanks, @mill1000
! - The ping integration now has the option to configure the number of seconds
that must elapse before considering a disconnected device “not at home”.
Awesome, @jpbede
! - Looking for the ZAMG integration? It has been renamed to GeoSphere Austria.
Thanks, @killer0071234
! - Got one of those Sonos amps? @jjlawren
added support for the subwoofer crossover setting to the Sonos integration. Nice! -
@tkdrob
added support for the new calendar entity to the Radarr integration. So you can see the release schedules straight from Home Assistant. Awesome! - You can now configure the minimal number of samples the trend helper uses.
It allows you to make it less sensitive when there is not that much data.
Thanks, @jpbede
! - Got cold toes in bed? @kbickar
to the rescue! He added support for foot warmers to the SleepIQ integration. Nice!
New integrations
We welcome the following new integrations in this release:
-
A. O. Smith, added by @bdr99
Integrate and control your A. O. Smith water heater. -
Blue Current, added by @Floris272
Monitor your Blue Current EV charger charge point(s). -
DROP, added by @pfrazer
Manage your DROP Smart Water System with Home Assistant. -
Flexit Nordic (BACnet), added by @lellky
Control and monitor your Flexit Nordic series air handling units. -
Holiday, added by @jrieger
Add holiday calendars to Home Assistant for powering automations. -
Midea CCM15 AC Controller, added by @ocalvo
Use your AC connected to a Midea CCM15 AC Controller. -
OSO Energy, added by @osohotwateriot
Use your OSO Energy water heater with Home Assistant. -
Sun WEG, added by @rokam
Collect and monitor energy production data from your Sun WEG inverter. -
Tailwind, added by @frenck
Operate your garage door openers connected to a Tailwind smart garage door controller. -
Tessie, added by @Bre77
Integrate, monitor and control your Tesla vehicle connected to the Tessie platform. -
Refoss, added by @ashionky
Use your Refoss smart devices directly with Home Assistant. -
Valve, added by @cibernox
An entity type for valves, which can be used by integrations to expose valves. -
Vogel’s MotionMount, added by @RJPoelstra
Control the position of your Vogel’s MotionMount TV mount.
This release also has a new virtual integration. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. The following virtual integrations have been added:
- AEP Ohio, provided by Opower
- AEP Texas, provided by Opower
- Appalachian Power, provided by Opower
- Fujitsu anywAIR, provided by Advantage Air
- Indiana Michigan Power, provided by Opower
- Kentucky Power, provided by Opower
- Public Service Company of Oklahoma (PSO), provided by Opower
- Seattle City Light, provided by Opower
- Southwestern Electric Power Company (SWEPCO), provided by Opower
Integrations now available to set up from the UI
The following integrations are now available via the Home Assistant UI:
-
Netgear LTE, done by @tkdrob
-
StreamLabs, done by @joostlek
-
Suez Water, done by @joostlek
-
Swiss public transport, done by @miaucl
-
System Monitor, done by @gjohansson-ST
-
Trend, done by @jpbede
Release 2024.1.1 - January 5
- Enable strict typing for airthings_ble (@cdce8p
- #106815 ) - Fix qBittorrent torrent count when empty (@finder39
- #106903 ) - Bump dropmqttapi to 1.0.2 (@pfrazer
- #106978 ) - bump openwebifpy to 4.0.3 (@autinerd
- #106593 ) - Close stale connections (Airthings BLE) (@LaStrada
- #106748 ) - Bump openwebifpy to 4.0.4 (@autinerd
- #107000 ) - Get Shelly RPC device
gen
from config entry data (@bieniu- #107019 ) - Fix missing backwards compatiblity layer for humidifier supported_features (@bdraco
- #107026 ) - Use async_register in streamlabswater (@joostlek
- #107060 ) - Fix data access in streamlabs water (@joostlek
- #107062 ) - Fix mobile_app cloudhook creation (@edenhaus
- #107068 ) - Deduplicate handling of duplicated constants (@emontnemery
- #107074 ) - Fix missing backwards compatibility layer for water_heater supported_features (@bdraco
- #107091 ) - Bump habluetooth to 2.0.2 (@bdraco
- #107097 ) - Include deprecated constants in wildcard imports (@emontnemery
- #107114 ) - Update frontend to 20240104.0 (@bramkragten
- #107155 ) - Bump Orvibo to 1.1.2 (@emericklaw
- #107162 ) - Bump aiohomekit to 3.1.2 (@bdraco
- #107177 ) - Bump to PyTado 0.17.3 (@erwindouna
- #107181 ) - Fix switch states in AVM FRITZ!Box Tools (@mib1185
- #107183 ) - Hotfix cache logic bug in Tessie (@Bre77
- #107187 ) - Disable IPv6 in the opower integration to fix AEP utilities (@tronikos
- #107203 ) - Fix entity property cache creation arguments (@ppetru
- #107221 ) - Use supported_features_compat in update.install service (@ludeeus
- #107224 ) - Bump zwave-js-server-python to 0.55.3 (@raman325
- #107225 )
Release 2024.1.2 - January 6
- Fix support for play/pause functionality in System Bridge (@timmo001
- #103423 ) - Fix passing correct location id to streamlabs water (@joostlek
- #107291 ) - Fix Shelly missing Gen value for older devices (@thecode
- #107294 ) - enigma2: fix exception when device in deep sleep, fix previous track (@autinerd
- #107296 ) - Fix assertion error when unloading ZHA with pollable entities (@dmulcahey
- #107311 )
Release 2024.1.3 - January 12
- Add diagnostics to A. O. Smith integration (@bdr99
- #106343 ) - Catch missing inverter in Enphase Envoy (@catsmanac
- #106730 ) - Prevent toggle from calling stop on covers which do not support it (@vexofp
- #106848 ) - Fix missing unique_id for spt integration (@miaucl
- #107087 ) - Add support for the Spotify DJ (@BTMorton
- #107268 ) - Fix evohome high_precision temps not retreived consistently (@zxdavb
- #107366 ) - Reduce polling rate in Blink (@mkmer
- #107386 ) - Fix KNX telegram device trigger not firing after integration reload (@farmio
- #107388 ) - Fix language flavors in holiday (@gjohansson-ST
- #107392 ) - Handle OSError during setup for System Monitor (@gjohansson-ST
- #107396 ) - Remove name from faa_delays (@joostlek
- #107418 ) - Fix Swiss public transport initial data for attributes (@miaucl
- #107452 ) - Fix reauth flow for Comelit VEDO (@chemelli74
- #107461 ) - Fix asyncio.gather call (@cdce8p
- #107500 ) - Fix Luftdaten sensor id string (@mrueg
- #107506 ) - Bump zm-py version to v0.5.3 for zoneminder (@nabbi
- #107331 ) - Retry zoneminder connection setup (@nabbi
- #107519 ) - Don’t include position in binary valve attributes (@emontnemery
- #107531 ) - Bump blinkpy to 0.22.5 (@mkmer
- #107537 ) - Bump reolink_aio to 0.8.6 (@starkillerOG
- #107541 ) - Bump mcstatus to v11.1.1 (@elmurato
- #107546 ) - Bump aioshelly to 7.1.0 (@thecode
- #107593 ) - Fix Tado unique mobile device dispatcher (@erwindouna
- #107631 ) - Fix tplink_lte setup (@cdce8p
- #107642 ) - Prevent overriding cached attribute as property (@emontnemery
- #107657 ) - Set max and min temp for flexit_bacnet climate entity (@lellky
- #107665 ) - Fix duplicated resource issue in System Monitor (@gjohansson-ST
- #107671 ) - Fix invalid alexa climate or water_heater state report with double listed targetSetpoint (@jbouwh
- #107673 ) - Redact sensitive data in alexa debug logging (@jbouwh
- #107676 ) - Fix
device_class
type for Shelly Gen1 sleeping sensors (@bieniu- #107683 ) - Clamp tplink color temp to valid range (@bdraco
- #107695 ) - Fix cloud tts loading (@MartinHjelmare
- #107714 ) - Allow configuration of min_gradient from UI to be negative in Trend (@jpbede
- #107720 ) - Bump aioswitcher to 3.4.1 (@YogevBokobza
- #107730 ) - Fix mqtt text text min max config params can not be equal (@jbouwh
- #107738 ) - Fix “not-logged” edge cases for Comelit VEDO (@chemelli74
- #107741 ) - Fix Mac address check in kef integration (@eugenet8k
- #107746 ) - Fix ld2410_ble not being able to setup because it has a stale connection (@bdraco
- #107754 ) - Bump pyunifiprotect to 4.23.1 (@AngellusMortis
- #107758 ) - Bump pyunifiprotect to 4.23.2 (@AngellusMortis
- #107769 ) - Rework events for UniFi Protect (@AngellusMortis
- #107771 ) - Fix switcher kis logging incorrect property for device’s name (@idofl
- #107775 ) - Bump bluetooth deps (@bdraco
- #107816 ) - Fix Tailwind cover stuck in closing state (@frenck
- #107827 ) - Fix for exception in screenlogic.set_color_mode (@dieselrabbit
- #107850 ) - Bump aio_geojson_generic_client to 0.4 (@exxamalte
- #107866 )
Release 2024.1.4 - January 19
- Fix MatrixBot not resolving room aliases per-command (@PaarthShah
- #106347 ) - Bump Pyenphase to 1.16.0 (@catsmanac
- #107719 ) - Fix loading empty yaml files with include_dir_named (@pedrolamas
- #107853 ) - Bump openwebifpy to 4.2.1 (@autinerd
- #107894 ) - Bump aiohomekit to 3.1.3 (@bdraco
- #107929 ) - Skip disk types in System Monitor (@gjohansson-ST
- #107943 ) - Fix duplicate unique id in System Monitor (again) (@gjohansson-ST
- #107947 ) - Bump pyenphase to 1.17.0 (@catsmanac
- #107950 ) - Update sleep period for Shelly devices with buggy fw (@chemelli74
- #107961 ) - Reload ZHA only a single time when the connection is lost multiple times (@puddly
- #107963 ) - Don’t load entities for docker virtual ethernet interfaces in System Monitor (@gjohansson-ST
- #107966 ) - Improve coordinator logic in Tessie to allow sleep (@Bre77
- #107988 ) - Fix Shelly Gen1 entity description restore (@thecode
- #108052 ) - Fix malformed user input error on MJPEG config flow (@codyc1515
- #108058 ) - Fix turning on the light with a specific color (@marcelveldt
- #108080 ) - Bump Jinja2 to 3.1.3 (@edenhaus
- #108082 ) - Use compat for supported features in media player (@joostlek
- #108102 ) - Speed up ZHA initialization and improve startup responsiveness (@puddly
- #108103 ) - Bump
aioridwell
to 2024.01.0 (@bachya- #108126 ) - Bump flipr-api to 1.5.1 (@cnico
- #108130 ) - Send target temp to Shelly TRV in F when needed (@jra3
- #108188 ) - Use cache update for WIFI blinds (@starkillerOG
- #108224 ) - Bump reolink_aio to 0.8.7 (@starkillerOG
- #108248 ) - Bump PyTado to 0.17.4 (@erwindouna
- #108255 ) - Bump aiounifi to v69 to improve websocket logging (@Kane610
- #108265 ) - Bump ZHA dependency zigpy to 0.60.6 (@puddly
- #108266 )
Release 2024.1.5 - January 20
- Bump async-upnp-client to 0.38.1 (@StevenLooman
- #108382 ) - Fix empty files included by !include_dir_named (@emontnemery
- #108489 ) - Pin pandas to 2.1.4 (@frenck
- #108509 )
Release 2024.1.6 - January 30
- Pass default SSLContext instances to Octoprint custom HTTP sessions (@vexofp
- #105351 ) - Reduce overhead for google calendar state updates (@allenporter
- #108133 ) - Fix SleepIQ setting FootWarmer timer (@jmwaldrip
- #108433 ) - Fix zha illuminance measured value mapping (@floriankisser
- #108547 ) - Bump yolink-api to 0.3.6 fix aiomqtt breaking changes (@matrixd2
- #108555 ) - Update openerz-api to 0.3.0 (@misialq
- #108575 ) - Bump aiovodafone to 0.5.4 (@chemelli74
- #108592 ) - Bump airthings-ble to 0.6.0 (@LaStrada
- #108612 ) - Fix alexa fails reporting the state in specific cases (@jbouwh
- #108743 ) - Reduce log level of ZHA endpoint handler init (@puddly
- #108749 ) - Fix google_assistant climate modes might be None (@jbouwh
- #108793 ) - Fix unhandled exception on humidifier intent when available_modes is None (@jbouwh
- #108802 ) - Fix processing supported color modes for emulated_hue (@jbouwh
- #108803 ) - Reduce log level for creating ZHA cluster handler (@TheJulianJES
- #108809 ) - Fix stalls in config flow of APCUPSD (@yuxincs
- #108931 ) - Add strings to Sensirion BLE (@joostlek
- #109001 ) - Fix entity naming for heatpump heatings in ViCare (@CFenner
- #109013 ) - Bump aiohttp to 3.9.3 (@bdraco
- #109025 ) - Bump ZHA dependency zigpy to 0.60.7 (@puddly
- #109082 ) - Add missing abort message for Spotify (@joostlek
- #109102 )
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
Blink
The service calls of Blink have been adjusted. This affects
blink.trigger_camera
, blink.save_video
and blink.save_recent_clips
.
This change will require these service calls to be updated with a target
for
the camera and by removing name
from data
of the blink service calls.
For example, service call before 2023.11:
service: blink.save_video
data:
name: Front door
filename: test.mp4
Service call after 2023.11 and before 2024.1:
service: blink.save_video
data:
device_id: 87dc3b85c18ee84f8c322a95e8230eb2
name: Front door
filename: test.mp4
New service call:
service: blink.save_video
target:
entity_id:
- camera.front_door
data:
filename: test.mp4
The blink.send_pin
service now uses an integration/configuration entry selector:
Example service call before 2023.11:
service: blink.send_pin
data:
pin: "1234"
Service call after 2023.11 and before 2024.1:
service: blink.send_pin
data:
pin: "1234"
device_id: 87dc3b85c18ee84f8c322a95e8230eb2
New service call:
service: blink.send_pin
data:
config_entry_id: a1bee602deade2b09bc522749bbce48e
pin: "1234"
The blink.blink_update
service is deprecated and will be removed in 2024.7.0.
Use the homeassistant.update_entity
service instead.
(@mkmer
Home Assistant shutdown event
The event key in the (undocumented) trigger data for the homeassistant
trigger
platform is now the string shutdown
for a homeassistant
trigger configured
to fire on shutdown instead of an Event
object.
(@tetele
Modbus
Setting swap: none
has been removed from the Modbus configuration.
It is identical to omitting it: swap:
.
(@janiversen
PrusaLink
- The printer state now contains several new statuses, most importantly “attention”, which always needs your intervention.
- Firmware 4.7.0 is now the minimum version for Prusa XL and MK4.
- Firmware 5.1.0 is now the minimum version for Prusa Mini since 4.7.x and 5.0.x aren’t available for the Mini.
(@Skaronator
Reolink
The Reolink Infrared lights in night mode
entity has been migrated from
the light
to the switch
domain.
This means the entity ID also changed, and automations and dashboards may need to be adjusted to use the new entity ID.
If you want to go back to the light domain, use the
switch_as_x “Show as” option
on the new Infrared lights in night mode
switch entity and select light.
Shelly
The minimum supported firmware version for generation 1 devices is 1.11.0 (2021-07-15). The minimum supported firmware version for generation 2 devices is 1.0.0 (2023-08-03).
You must update your devices to the firmware versions listed or newer.
(@bieniu
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:
- Changes to EntityDescription data classes
- Config entry now supports minor versions
- Deprecated constants create a log entry
- Deprecating all magic numbers for supported features
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 2024.1