0.103: Happy Holidays, Service calls, StarLine, GeoNet NZ and Proxmox


Here it is! Home Assistant 0.103 is released, which is the last major release for this year. For the final stretch of this year, we’ve focussed on cleaning things up. This release contains many things that were still in progress (e.g., due to Hacktoberfest), lots of bugfixes; mainly things that help to improve the stability and experience of Home Assistant.

We wish you happy holidays! As always, we skip a release cycle at the end of the year, making this the final, major release of 2019. This gives all of us time to enjoy the holidays with our families as well. The first release of 2020, will be on 15 January.

Furthermore, we’d like to take the opportunity to thank all of our contributors, no matter how small or big the contribution; code, documentation, issue reporting, beta testing, supporters in our forum and chat. We salute and thank you and wish you the best for the new decade, as we are entering 2020! ❤️


Service’s have been moved to their respective integration namespaces

For 0.103, an extensive cleanup has been taken place around the names of the services. We realize this affects many users; therefore, we made sure all these changes are in this release. This change was driven by @raman325, who did an excellent job of completing this in time for 0.103.

We used to have services that were placed inside other domains, which wasn’t always the case, and therefore inconsistent. So, for example, the service to add an item to Todoist was actually a service call under the calendar domain: calendar.todoist_new_task.

This release, all services that were not placed correctly, are moved into their respective integration domain. So, for the above example of calendar.todoist_new_task, has been renamed to todoist.new_task.

We hope this brings a more streamlined experience to the use of services, for now, and in the future. For a complete list of old vs. new service names, a table as been added to the release notes, below.

Moving imports of Python packages

Internally, Home Assistant uses a lot of Python packages, that our integrations are using. In the past weeks, the locations where all those imports take place, was changed. This does not directly resonate with your system and is mainly an internal cleanup.

A big shout out to the following contributors that together are responsible for making hundreds of contributions the past weeks to help us out:

@Bouni, @briglx, @djpremier, @exxamalte, @javicalle, @Michsior14, @Misiu, @mnigbur, @Quentame, @springstan, @thaohtp, @tulindo

Thank you so much!

Python 3.6 support is deprecated

Since version 0.101, support for Python 3.6 has been deprecated. We are currently working on Python 3.8 support, which is expected soon.

Therefore, this release marks the last release, which supports Python 3.6.

If you haven’t upgraded your system to Python 3.7 yet, it is recommended to do so, to ensure you can keep using Home Assistant in the future.

If you are using Docker or Hass.io, you don’t have to worry about this, since we provide a matching and working Python version for you.

Frenck Joins Nabu Casa

As announced during the State of the Union 2019, Frenck has joined Nabu Casa.

Today marks the first day of my full time open-source adventure! 🥳 Heading into my office this morning, full of energy and lots thankfulness for this opportunity! I feel blessed to be able to work on @home_assistant for @NabuCasa 🙏 pic.twitter.com/mjkMYeCNaz

— Franck Nijhof (@Frenck) December 2, 2019


We gave some love and attention to the automation editor, fixing some bugs and adding some useful features.

Natural language improvements

We add area support for automations that you create with natural language, and we try to pick the right area or device for you if you mentioned the name.

So you can now say: “Turn the lights on in the living room”, and it adds all the light devices of your living room to the automation. By clicking Choose individual devices, you can add or remove devices.

![](upload://xW5V0BTezPdZ1iO6QGdOwPcJqID.png) Screenshot of the result of the above query.

YAML support

You can now edit every individual trigger, condition or action as YAML. This makes it possible even to do very complicated automations in the automation editor and allows you to copy parts of your automation quickly.

![](upload://gsfQEn5HoL174sKLT9Z7KrTxiyS.png) Screenshot of the automation YAML editor.

Rearange actions

We also added the ability to rearrange your actions, so you don’t have to start all over when you want to add a delay between 2 service calls. Talking about the service call action, that has now an entity picker to help you search for the right one.

![](upload://qx6UlNxJ7ZClUudzBX1P0WSXYxL.png) Screenshot of automation actions.

In other news

Looking for a present for the holidays? T-shirts with our rainbow logo are now available in our online store. 🌈

EU: https://t.co/KiTDuOFgG2 US: https://t.co/OdtILXBoDh pic.twitter.com/BG5mDWhwYN

— Home Assistant (@home_assistant) December 5, 2019

.@home_assistant for iOS version 2019.1/2.0 is now (finally) available in an App Store near you! Also releasing today: beautiful new documentation for the app! Check it out at https://t.co/4RhY8tOand. pic.twitter.com/YkuhhdRjwu

— Robbie Trencheny (@Robbie) November 26, 2019

Home Assistant: Controlling Addressable LEDs like any other light! (WLED integration) https://t.co/bJJMkZbdn9 @home_assistant @Frenck #homeassistant #wled #ws2812b #tutorial #howto

— Intermit.Tech (@IntermitTech) November 25, 2019

New Integrations

The following integrations are added in this release:

New Platforms

The following platforms have been added to existing integrations:

Breaking Changes

If you are an existing user, make sure to read the this section before upgrading, this helps you understand the changes and avoids having issues during an upgrade.

Updated Service Names

All services for use in Home Assistant are moved to their integration naming space.

The list below shows service calls and platforms which have been moved to their own integrations - @raman325

  • Local File: camera.local_file_update_file_path -> local_file.update_file_path (#28890)
  • Elk-M1 Controller: alarm_control_panel.elkm1_* -> elkm1.* (#29128)
  • Neato: vacuum.neato_custom_cleaning -> neato.custom_cleaning (#29148)
  • Envisalink: alarm_control_panel.envisalink_alarm_keypress -> envisalink.alarm_keypress (#29126)
  • IFTTT: alarm_control_panel.ifttt_push_alarm_state -> ifttt.push_alarm_state (#29129)
  • AlarmDecoder Alarm: alarm_control_panel.alarmdecoder_alarm_toggle_chime -> alarmdecoder.alarm_toggle_chime (#29127)
  • Econet: water_heater.econet_* -> econet.* (#29149)
  • APNS: notify.apns_* -> apns.apns_* (#29165)
  • Facebox: image_processing.facebox_teach_face -> facebox.teach_face (#29151)
  • HTML5: notify.html5_dismiss -> html5.dismiss (#29145)
  • Lifx: light.lifx_* -> lifx.* (#29136)
  • Mill: climate.mill_set_room_temperature -> mill.set_room_temperature (#29132)
  • Todoist: calendar.todoist_new_task -> todoist.new_task (#29131)
  • Wink: lock.wink_* -> wink.* (#29137)
  • Wemo: fan.wemo_* -> wemo.* (#29135)
  • Bluetooth: device_tracker.update -> bluetooth_tracker.update (#29161)
  • Demo: device_tracker.randomize_device_tracker_data -> demo.randomize_device_tracker_data (#29164)
  • iCloud: device_tracker.icloud_* -> icloud.* (#29144)
  • Blackbird: media_player.blackbird_set_all_zones -> blackbird.set_all_zones (#29112)
  • Bluesound: media_player.bluesound_* -> bluesound.* (#29111)
  • Channels: media_player.channels_* -> channels.* (#29139)
  • Epson: media_player.epson_select_cmode -> epson.select_cmode (#29113)
  • Monoprice: media_player.monoprice_* -> monoprice.* (#29099)
  • Songpal: media_player.songpal_set_sound_setting -> songpal.set_sound_setting (#29143)
  • Soundtouch: media_player.soundtouch_* -> soundtouch.* (#29140)
  • Squeezebox: media_player.squeezebox_call_method -> squeezebox.call_method (#29141)
  • Xiaomi Miio: *.xiaomi_miio_* -> xiaomi_miio.* (#29134)
  • Xiaomi Miio: *.xiaomi_* -> xiaomi_miio.* (#29134)
  • Yamaha: media_player.yamaha_* -> yamaha.* (#29142)

Other Breaking Changes

  • Mobile App - Loading the Mobile App no longer causes the Cloud integration to be loaded. If you relied on this, add cloud: to your configuration.yaml. - (@balloob - #29373) (mobile_app docs)

  • Samsung TV - The behavior for next and previous track commands for Samsung TVs has changed. Before the change, the Samsung TV integration reacted to the two above commands sending the KEY_FF and KEY_REWIND commands. While watching TV programs, those two commands do nothing. After the change, the entity sends the KEY_CHUP and KEY_CHDOWN commands instead, thus allowing the user to change the channel using the media player standard Lovelace interface. The user doesn’t need to change anything in the configuration. - (@tulindo - #28213) (samsungtv docs)

  • Wake on LAN - The configuration key mac_address: was renamed to mac: to be in sync with the service. (@fabaff - #28830) (wake_on_lan docs)

  • PulseAudio Loopback Switch - The default port was incorrectly set to 4712, however, the official documentation states that the default port is 4713. Therefore, the port has been changed and all previously configured switches now need to listen to port 4713. - (@springstan - #28857) (pulseaudio_loopback docs)

  • Z-Wave - This changes the primary command class for z-wave thermostats in discovery schemas from COMMAND_CLASS_THERMOSTAT_SETPOINT to COMMAND_CLASS_THERMOSTAT_MODE. This will cause a typical dual setpoint thermostat to be correctly represented as a single entity. - (@oandrew - #27040) (zwave docs)

  • Transmission - Added host field to add_torrent service in order to support multiple Transmission instances. (@engrbm87 - #28653) (transmission docs)

  • Opentherm Gateway - Adds device support. This change breaks enabled sensor and binary_sensor entities, which are now disabled by default and can be re-enabled through the Devices panel. It also breaks entity_id of the climate entity in some configurations. The entity_id is now based on the gateway_id rather than the configured name to guarantee uniqueness. - (@mvn23 - #28722) (opentherm_gw docs)

  • Intent - If you use the built-in intents for shopping list, cover or light, you need to add intent: to your configuration.yaml. - (@balloob - #29280) (conversation docs) (cover docs) (intent docs) (light docs) (shopping_list docs)

  • Emulated Hue - As previous entityid were not Hue compliant, emulated_hue_ids.json will need to be cleared out and devices re-discovered and configured in Alexa / Google Home. This is a necessary growing pain to move the integration forward in a Hue-compliant fashion. - (@NobleKangaroo - #28317) (emulated_hue docs)

  • Miflora - Values for an unresponsive device aren’t reported any more as if they were valid, so it’s possible to send an alert. - (@ferbar - #29276) (miflora docs)

    Example configuration YAML:

    - id: plant_unreachable
      alias: plant unreachable
        - entity_id: sensor.plant_moisture
          for: 01:00:00
          platform: state
          to: unavailable
  • Entity ID - It is no longer possible to target all entities by not passing both entity_id and area_id to your service data. This feature was previously deprecated and has been printing warnings. The correct way to target all entities is to set entity_id: all - (@balloob - #29178)

  • Heatmiser Thermostat - The Heatmiser integration has been updated to the latest version of the heatmiserV3 library, meaning less code inside HA, and more leverage on the library. The current version of the Heatmiser integration went out of date with the introduction of voluptuous. This has now been fixed, but it breaks the old config syntax slightly. See the updated docs for the new config format. - (@andylockran - #29006) (heatmiser docs)

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat.

Reporting Issues

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Beta Fixes

All changes

This is a companion discussion topic for the original entry at https://www.home-assistant.io/blog/2019/12/11/release-103/

I’ve been running on python 3.8 since 0.101. Should that not be working? Am I unsupported? :slight_smile:

“You can now edit every individual trigger, condition or action as YAML.”

I plan on putting this to the test right away… I am hoping I can finally EDIT automatons from my phone IN the room with the devices instead of running back to my PC all the time to open a text editor.

Basically: Yes. While most works, there is a possibility of running into issues at this point. However, for the larger part, it shouldn’t be a problem.

Just updated, the Alexa media compoent takes a while to load when restarting:

Setup of platform alexa_media is taking longer than 60 seconds. Startup will proceed without waiting any longer.

but apart from that all good so far, no other errors for me and everything seems to be working. :slight_smile:

How exciting! Lots of tinkering to do over the holidays with all breaking changes. I’ll have something to do!


1 Like

The addition of the NZ volcanic alerts is a little ironic at this time. ,


The only weird thing I’ve noticed (which may be a factor of running under Python 3.8) is that I get this in the logs from time to time:

ERROR (MainThread) [homeassistant.core] Error doing job: An open stream object is being garbage collected; call "stream.close()" explicitly.

Can’t tell what’s causing it.

There are no climate entities for Danfoss 014G0013 (Z-Wave) after update. Only zwave.* and sensor.battery* entities are in HA. There are no errors related to Z-Wave in log.


Definitely file a bug for that, wonder what thermostats are impacted by it.

I’m not seeing the upgrade to .10 being offered on y HA dashboard.

After update I have issues with two things:

  • Smartthings integration - easily fixed by deleting and recreating integration
  • Trakt.tv - component - if it’s enabled - than HA hangs. For the moment I just disable it, but I’ll try to investigate the problem and to try to find fix a tomorrow.

I have already done that: https://github.com/home-assistant/home-assistant/issues/29844


What? There is no upgrade to .10

This thread is about 0.103.

  1. 2019-12-11 21:53:13 WARNING (MainThread) [homeassistant.setup] Setup of xiaomi_aqara is taking over 10 seconds.
  2. 2019-12-11 21:53:28 ERROR (SyncWorker_8) [homeassistant.components.xiaomi_aqara] No gateway discovered
  3. 2019-12-11 21:53:28 ERROR (MainThread) [homeassistant.setup] Setup failed for xiaomi_aqara: Integration failed to initialize.

Xiaomi Gateway cant be discovered.

Seems the actions still don’t accept data_template:, only data: in automations :frowning:

My web-view is broken after update. Can’t open it in browser:

Unable to serialize to JSON: Object of type method is not JSON serializable

And then a JSON line with 89k of symbols with all my states.

1 Like

that was a typo on my part. I did mean .103

Hello, all. I just upgraded to 0.103 (HA on Docker on Ubuntu) and the Overview tab is the only thing that works. Map, Logbook, History, HACS, Developer Tools, Configuration, Notifications, and the Profile button all tell me “Error while loading …” and then a spinner. Has anyone else seen/reported this?

LOL Ok. Well on docker the image was only updated an hour ago https://hub.docker.com/r/homeassistant/home-assistant/tags

You don’t say what installation you have (hassio, hassos, venv etc) but images take time to be built. Patience is a virtue.