Do you know how excited I am for bringing you Home Assistant Core 0.110?
Would you believe me, if I told you I’ve been upgrading my personal Home Assistant production instance to the latest development version almost every day?
Well, better believe it, it is how I started my day for the last 3 weeks. It felt like opening new presents and enjoying amazing improvements every day.
Today, we are shipping it all to you, as one big package. 🎁
This is definitely one of the bigger releases of Home Assistant on all levels. Speed improvements to both the frontend and backend, lots of usability improvements, 12! new awesome integrations and an insane amount of major updates to existing ones.
Enjoy the release!
In Home Assistant Core 0.109, we made the frontend lighter and faster, this release takes it a step further.
The way icons are loaded is updated. With the ever-growing Material Icons set, it was necessary to update the way we handle icons to make sure our application continues performing.
The Material Icons are now split in chunks, so the frontend does not have to load all the icons if you just need one; besides that, we no longer store the icons in the DOM but in a database.
This saves a lot of memory and thus makes the Home Assistant frontend even more leaner and faster!
Honestly, it is not just icons… A lot is optimized to make the frontend faster this release. It is now snappier than ever!
@timmo001 added the possibility to search your integrations, so you can find what you are looking for quickly.
We also grouped the entries by integration now, this means we no longer show multiple cards for the same integration, but show a list of the names if there are multiple entries.
If you click the entry, it will show that entry in the card. This makes it easier to keep an overview of all your integrations.
Oh! We’ve also made the icons and logos available for custom integrations!
Screenshot of the HACS integration with its icon shown.
This release features the new OpenZwave integration. It has been in testing as a custom integration by the community since last December and is now ready for a wider audience.
It is still early days for this integration, though; not all platforms and devices are supported yet and the setup process has prerequisites that raise the accessibility bar. See our documentation for the current requirements and instructions.
If you want to give it a shot, you should be comfortable with setting up custom add-ons and MQTT. There is no migration from the current Z-Wave integration yet, this is still to come.
The plan is to add more platforms in the future, making it super simple to set up the integration. Stay tuned.
There is currently no plan to deprecate the existing Z-Wave integration. But the hope is that the new integration, in the future, will offer a simpler, more stable and more feature-rich experience than the current Z-Wave integration.
Thanks go out to the community that has been testing the custom integration and provided very valuable data to allow us to catch bugs and support more devices. A special thanks to @cgarwood and @marcelveldt who have been pioneering building the integration.
An often reported issue/request feature is to allow any discovered item to be ignored. Most integrations supported that already, but some didn’t.
As of 0.110, we have a new development rule requiring an integration to support ignoring discovered items; and for 0.110, we have upgraded all integrations that didn’t support it yet!
Result: Any discovered item, can be ignored.
Thanks to @zsarnett we got a beautiful new calendar panel!
It shows you all items of the calendars you select in a month, week or day view. There is also a calendar card for Lovelace in the making.
We got a lot of feedback about the updated weather card of the last release, we listened to feedback and added some features. You can now theme the colors of the new icons, and you can even completely replace them with another image.
You can also set the attribute you want to show as the secondary information.
Screenshot of the updated weather card.
Check the documentation for more information.
There are many cases where an integration needs the URL/link to your Home Assistant instance. For example, to set up a webhook, communicate audio files or camera streams to an Amazon Alexa or Google Assistant device.
We used to have a
base_url setting to deal with those cases, but that wasn’t
always sufficient. Some integrations require specific requirements for that
setting, which could lead to conflicting or impossible settings.
It often resulted in broken TTS, streaming issues for camera’s or issues with casting. This release addresses this issue by introducing two new settings in Configuration -> General.
If you want to set those via YAML,
homeassistant: main configuration has now
These settings allow you to override the URLs Home Assistant uses when communicating on your internal network versus the outside world. Please note, that these are overrides. By default, Home Assistant will try to figure this out on its own.
If you have a Home Assistant Cloud subscription, integrations can now also leverage that. This will reduce the amount of, often complex, configuration needed.
After upgrading to 0.110, you can delete
base_url from your configuration
as Home Assistant will automatically migrate that setting for you on upgrade.
When an automation triggers, one can use conditions to check if the set actions of an automation should be run. Conditions, however, always take the positive approach: If “something” equals or is “this”.
As of this release, the conditions now have support for specifying if a condition (or set of conditions) should “not” match. This can be helpful for devices or entities that have multiple states, but you actually only want to ensure it is not just that one state.
This feature has been added to the automation editor, but is also available for writing automations in YAML:
# Example automation alias: Turn kitchen lights off when alarm is armed. trigger: - platform: state entity_id: alarm_control_panel.home_alarm condition: - condition: not conditions: - condition: state entity_id: alarm_control_panel.home_alarm state: disarmed action: - service: light.turn_off entity_id: light.kitchen
@bdraco has been busy improving HomeKit support for Home Assistant in 0.109, but it seems like that didn’t stop him even a tiny bit. This release @xdissent and @stickpin jumped on the HomeKit bandwagon as well!
HomeKit can now be configured and set up from the Home Assistant frontend, and even allows you to set up multiple instances! This allows one to bypass the maximum amount of devices a single HomeKit gateway supports by adding multiple. Using multiple, will also allow you to bypass the 1 TV per bridge limit on HomeKit.
Ready for this? Home Assistant Core 0.110 now has camera support for HomeKit!
And if that wasn’t enough already, the HomeKit integration now sends out more information as HomeKit accessory information. So besides the entity id, which was already present, you can also see which integration (and its name) provided the accessory in HomeKit.
The ONVIF integration did get lots of love from @hunterjm! ONVIF Profile S conformant camera’s, can now be set up via the UI!
And that is not all… It now leverages more features of the ONVIF protocol: pull point subscriptions. This means that events from ONVIF will now show up in Home Assistant as well. So, if your ONVIF compatible camera supports things like motion, object or sound detection, those will be available now!
Have you seen the new supervisor UI? @ludeeus did a great job redoing it’s UI! It now uses the same tabs as the configuration panel. The add-on page is split into multiple tabs, the add-on store is cleaned up and you can view all logs in the system tab now (requires advanced mode).
Some add-ons are now also marked “advanced” and are only visible when you’ve enabled advanced mode on your user profile.
It took a while, as many adjustments had to be made. This is the first release supporting Python 3.8 🎉!
Quite a few optimizations to make Home Assistant go faster. One of the major changes is that Home Assistant will now set up all configured integration instances in parallel during startup. Some startup speed reported improvements from 82 seconds before this change and 28 seconds after this change. That is a huge improvement!
The info page in the development tools now shows more information about your set up. Including the name for your installation method. It will tell you if you run Home Assistant, Home Assistant Supervised or Home Assistant Core.
@MartinHjelmare added a new detection method for integrations that potentially harm Home Assistant during runtime. We can now detect if an integration tries to close Home Assistant’s (shared) HTTP client. If this happens, it will be prevented and write an error message to your log, similar to how the I/O detection does it (released in 0.109).
The ISY994 got a major upgrade! While it has quite a few breaking changes, it is now available via the UI and many bug are squashed. Thanks @shbatm!
The following integrations are now available via the Home Assistant UI:
- Blink, done by @fronzbot
- HomeKit, done by @bdraco
- Hunter Douglas PowerView, done by @bdraco
- Lutron Caséta, done by @chrisaljoudi
- Mill, done by @Danielhiversen
- ONVIF, done by @hunterjm
- Pi-hole, done by @shenxn
- Tibber, done by @Danielhiversen
- Tuya, done by @ollo69
- Universal Devices ISY994, done by @shbatm
Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.
Manual Alarm Panel - When going from state
disarmedto any other (armed) state such as
armed_away, the state will be
pendingduring the transition time as set in the configuration. When going from an armed state (such as
armed_away) to the
triggeredstate the state will still be
pendingduring the transition time as set in the configuration (as it was before). - (@starkillerOG - #32950) (manual docs)
- State attribute
- State attribute
- Configuration option
pending_timeis renamed to
arming_time, functionality is the same.
- The time the alarm stays at
pendingwhen triggered has changed from
delay_timeof the previous state +
arming_time(previously known as
pending_time) of the triggered state to only the
delay_timeof the previous state.
- State attribute
Cert Expiry - The “name” configuration option marked as deprecated in 0.107 has been removed and will now cause errors on startup if it remains in the configuration. You should change your configuration accordingly. - (@jjlawren - #34628) (cert_expiry docs)
Stream - pyAV >7.0.0 has dropped support for FFmpeg versions <4.0. FFmpeg will need to be updated to at least 4.0 for stream to work. If you run an Home Assistant with the Superviser or Docker, no manual intervention is needed. Alternative installs can check the stream integration documentation for troubleshooting tips. - (@hunterjm - #34648) (stream docs)
Nederlandse Spoorwegen - The punctuality attribute has been removed from the integration. Ever since NS updated its API a few months ago, its behavior with regards to the punctuality has been incoherent, sometimes even missing from the API’s response. This has caused numerous Issues to be created in this repo by users getting errors that the punctuality attribute was unlike what the integration was expecting. - (@YarmoM - #34680) (nederlandse_spoorwegen docs)
Fortigate (Deprecated) - The Fortigate integration will be removed in 0.112.0 and has a replacement in the FortiOS integration.
Please refer to the fortios integration on how to configure the new parameters: https://www.home-assistant.io/integrations/fortios/ - (@kifeo - #34854) (fortigate docs)
Old YAML configuration example:
camera: - platform: rpi_camera image_width: 1296 image_height: 972 image_quality: 75
New YAML configuration example:
rpi_camera: image_width: 1296 image_height: 972 image_quality: 75
ONVIF - ONVIF is now available to be added from the Integrations UI! The
rtsp_transportconfiguration from YAML is now a part of the Options flow for the integration, and is not automatically imported to the configuration flow with the rest of the defined ONVIF platforms. - (@hunterjm - #34520) (onvif docs)
- The default connection honors the configuration in
/etc/pulseand no longer defaults to
- When a host is configured, the default port has been changed to 4713 to use the native interface of PulseAudio.
- The configuration parameters
tcp_timeouthave been removed.
- The default connection honors the configuration in
Example YAML configuration:
Starting with the following radio configuration options:
IMAP Email Content - The state of the
imap_email_contentis replaced when there is no email found. With this change, any other thing like an automation can react to the arrival of an email - (@isk0001y - #35123) (imap_email_content docs)
Sony Songpal - This is now enabled through the Integrations UI. To call
songpal/set_sound_settingon all songpal devices, the
entity_idnow needs to be set to
allinstead of left unset. - (@shenxn - #34714, #35318) (songpal docs)
Kodi - Kodi previously reported the media content type for all PVR channels as “channel”, no matter if it was a TV or a radio channel. The media content type is now derived from the used player type, i.e., it reports as “music” for radio channels and “video” for TV channels. - (@Tho85 - #35091) (kodi docs)
Homematic - Automations relying on the numeric value for the garage door status might break, since the status will now be reported as human-readable strings. - (@guillempages - #35349) (homematic docs)
LG webOS Smart TV - A new
unique_idis used for
webostvmedia players for users running a 0.109.X release. Duplicate entities will be created with new entity IDs and old entities will need to be manually removed. - (@jjlawren - #34979) (webostv docs)
Blink As of May 11, 2020 Blink has removed the old username/password authentication method, which means all current Blink integrations prior to this release are broken.
In order to support this change, a 2FA key must be entered before setup can continue. Some users may not have 2FA enabled on their account yet, but you will still receive an email at login asking you to allow the device to continue setting up.
Your current YAML configuration will be converted to a UI-based configuration, but the only supported entries are
scan_interval. All other entries must be removed; otherwise, the integration will not be configured. - (@fronzbot - #35396) (blink docs)
Universal Devices ISY994 - This migrates ISY994 to PyISY v2 and is now available to be added from the Integrations UI. PyISY Version 2 is a significant update to the original module used to communicate with the ISY. (@shbatm - #35212, #35338, #35413, #35391 ) (isy994 docs)
This is a companion discussion topic for the original entry at https://www.home-assistant.io/blog/2020/05/20/release-110/