0.47: Python Scripts, Sesame Smart Lock, Gitter, Onvif cameras


In this release a ton of new stuff! And who doesn’t like new stuff? This release we’re passing the 700 integrations for Home Assistant. As of today we’re 1369 days old, which means that roughly every two days a new integration gets added!

Python Scripts

The biggest change is a new type of script component: Python scripts. This new component will allow you to write scripts to manipulate Home Assistant: call services, set states and fire events. Each Python script is made available as a service. Head over to the docs to see how to get started.


The updater has received a new opt-in option to let us know which components you use. This will allow us to focus development efforts on the components that are popular.

  include_used_components: true

And as a reminder. We will never share gathered data in a manner that can be used to identify anyone. We do plan on making aggregate data public soon. This will include total number of users and which hardware/software platform people use to run Home Assistant.


Z-Wave is also getting a big update in this release. The confusing entity_ids will be on their way out. There is a zwave blog post that gives more detail, but the upgrade steps will be as follows:

  1. Run Home Assistant as normal and the old IDs will still be used.
  2. The new entity IDs will be shown in the more-info dialog for each entity. Check to make sure none of them will have conflicts once the new names are applied.
  3. Rename entities using the ui card as described in the blog post to avoid conflicts. Restart Home Assistant to observe the changes.
  4. Update all places mentioning IDs (groups, automation, customization, etc.) in configuration.yaml.
  5. Add new_entity_ids: true to your zwave config.
  6. Restart Home Assistant to run with new IDs.
  7. The old entity IDs will be available in the more info dialog to trace down any remaining errors.

Monkey Patching Python 3.6

Some people have noticed that running Home Assistant under Python 3.6 can lead to segfaults. It seems to be related to the earlier segfault issues that we experienced when we released the asyncio-based core. We thought that those issues would have been fixed when Python bug 26617 was resolved. Although we see less reports compared to the old bug, there are still users experiencing them (gdb stacktrace points at PyObject_GC_Del()).

Since Python 3.6, the Task and Future classes have been moved to C. This gives a nice speed boost but also prevents us from monkey patching the Task class to avoid the segfault. Ben Bangert managed to brew up another monkey patch to stop Python 3.6 from using the C classes, falling back to the Python versions instead. This allows us to apply the original monkey patch again.

Both monkey patches are now active by default starting version 0.47 to avoid our users experiencing segfaults. This comes at a cost of not being able to benefit from all optimizations that were introduced in Python 3.6.

To run without the monkey patch, start Home Assistant with HASS_NO_MONKEY=1 hass. We will further investigate this issue and try to fix it in a future version of Python.

Release 0.47.1 - June 21

New platforms

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

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.

Backward-incompatible changes

  - platform: opencv
    name: OpenCV
      - entity_id: camera.front_door
        file: /path/to/classifier
        name: Husband
        neighbors: 4
        min_size: (40, 40)
        scale: 1.1
  host: IP_ADDRESS
  username: lutron
  password: integration
  domain: !secret mailgun_domain
  api_key: !secret mailgun_api_key
  sandbox: false

  - name: mailgun
    platform: mailgun
    recipient: !secret mailgun_recipient
  • Z-Wave node and scene activated trigger events now use the full entity ID (@armills - #7786) (zwave docs) (breaking change)
  - alias: "Button 1"
      platform: event
      event_type: zwave.scene_activated
        entity_id: living_room_remote_13
        scene_id: 1
  - alias: "Event 1"
      platform: event
      event_type: zwave.node_event
        entity_id: zwave.living_room_remote_13
        basic_level: 1
  • LIFX: add multiple modes to pulse effect. The lifx_effect_breathe call has been deprecated. Use lifx_effect_pulse with the new mode: breathe attribute instead. (@amelchio - #8016) (light.lifx docs) (breaking change)
  • Use standard entity_ids for zwave entities. This also introduces a small API breakage, where EVENT_SCENE_ACTIVATED and EVENT_NODE_EVENT will no longer supply an object_id. They will now be tied to the node entity_id. (@armills - #7786) (zwave docs) (light.zwave docs) (breaking change)
  • Fix attribute entities. Home Assistant will no longer filter out entities that are ‘falsey’. So you might see more entity attributes show up. (@pvizeli - #8066) (breaking change)

All changes