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.
Updater
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.
updater:
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
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:
- Run Home Assistant as normal and the old IDs will still be used.
- 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.
- Rename entities using the ui card as described in the blog post to avoid conflicts. Restart Home Assistant to observe the changes.
- Update all places mentioning IDs (groups, automation, customization, etc.) in configuration.yaml.
- Add
new_entity_ids: true
to your zwave config. - Restart Home Assistant to run with new IDs.
- 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
- Fix Vera lights issue #8098 (@tsvi - #8101) (light.vera docs)
- Fix Dyson async_add_job (@CharlesBlonde - #8113) (fan.dyson docs) (sensor.dyson docs)
- Update InfluxDB to handle datetime objects and multiple decimal points (@philhawthorne - #8080) (influxdb docs)
- Fixed iTach command parsing with empty data (@alanfischer - #8104) (remote.itach docs)
- Allow iteration in python_script (@balloob - #8134) (python_script docs)
New platforms
- Added a Taps Aff binary sensor (@bazwilliams - #7880) (binary_sensor.tapsaff docs) (new-platform)
- lock.sesame: New lock platform for Sesame smart locks (@trisk - #7873) (lock.sesame docs) (new-platform)
- Etherscan.io sensor (@nkgilley - #7855) (sensor.etherscan docs) (new-platform)
- blockchain.info sensor (@nkgilley - #7856) (sensor.blockchain docs) (new-platform)
- Add Radarr sensor (@tboyce021 - #7318) (sensor.radarr docs) (new-platform)
- Added buienradar sensor and weather (@mjj4791 - #7592) (sensor.buienradar docs) (weather.buienradar docs) (new-platform)
- Add support for Vanderbilt SPC alarm panels and attached sensors (@mbrrg - #7663) (spc docs) (alarm_control_panel.spc docs) (binary_sensor.spc docs) (new-platform)
- Add raspihats switch (@florincosta - #7665) (switch.raspihats docs) (new-platform)
- Add juicenet platform (@jesserockz - #7668) (juicenet docs) (sensor.juicenet docs) (new-platform)
- add ripple sensor (@nkgilley - #7935) (sensor.ripple docs) (new-platform)
- New component: Python Script (@balloob - #7950) (python_script docs) (new-platform)
- Nadtcp component (@mwsluis - #7955) (media_player.nadtcp docs) (new-platform)
- Add Gitter.im sensor (@fabaff - #7998) (sensor.gitter docs) (new-platform)
- Update mailgun (@happyleavesaoc - #7984) (mailgun docs) (notify.mailgun docs) (breaking change) (new-platform)
- Add Flexit AC climate platform (@Sabesto - #7871) (climate.flexit docs) (new-platform)
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.
Breaking changes
- Update opencv config to match other image processors (@Teagan42 - #7864) (image_processing.opencv docs) (breaking change)
image_processing:
- platform: opencv
name: OpenCV
source:
- entity_id: camera.front_door
classifier:
faces:
file: /path/to/classifier
name: Husband
neighbors: 4
min_size: (40, 40)
scale: 1.1
- Lutron: Add configuration check and use default var names (@fabaff - #7963) (lutron docs) (light.lutron docs) (breaking change)
lutron:
host: IP_ADDRESS
username: lutron
password: integration
- Convert mailgun to component (@happyleavesaoc - #7984) (mailgun docs) (notify.mailgun docs) (breaking change) (new-platform)
mailgun:
domain: !secret mailgun_domain
api_key: !secret mailgun_api_key
sandbox: False
notify:
- 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)
```yaml
automation:
- alias: Button 1
trigger:
platform: event
event_type: zwave.scene_activated
event_data:
entity_id: living_room_remote_13
scene_id: 1
- alias: Event 1 trigger: platform: event event_type: zwave.node_event event_data: entity_id: zwave.living_room_remote_13 basic_level: 1 ```
- alias: Button 1
trigger:
platform: event
event_type: zwave.scene_activated
event_data:
entity_id: living_room_remote_13
scene_id: 1
- LIFX: add multiple modes to pulse effect. The
lifx_effect_breathe
call has been deprecated. Uselifx_effect_pulse
with the newmode: 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
andEVENT_NODE_EVENT
will no longer supply anobject_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
- Update squeezebox.py (@molobrakos - #7617) (media_player.squeezebox docs)
- Fix html5 unsub (@balloob - #7874) (notify.html5 docs)
- Added effects to Yeelight bulbs (@Mister-Espria - #7152) (light.yeelight docs)
- Enocean Binary Sensor: Handle click of both rockers (@twendt - #7770) (binary_sensor.enocean docs)
- Support for renaming ZWave values (@armills - #7780) (zwave docs)
- Fix telegram_bot (@balloob - #7877) (telegram_bot.polling docs) (telegram_bot.webhooks docs)
- [light.lifx] Update aiolifx (@amelchio - #7882) (light.lifx docs)
- Change nad_receiver to pypi (@joopert - #7852) (media_player.nad docs)
- Switch pymyq to pypi (@andrey-git - #7884) (cover.myq docs)
- Use constants (@fabaff - #7888) (notify.xmpp docs)
- Upgrade pyasn1-modules to 0.0.9 (@fabaff - #7887) (notify.xmpp docs)
- Upgrade sendgrid to 4.2.0 (@fabaff - #7886) (notify.sendgrid docs)
- Upgrade python-telegram-bot to 6.0.3 (@fabaff - #7885)
- Fix MQTT camera test (@balloob - #7878)
- Added a Taps Aff binary sensor (@bazwilliams - #7880) (binary_sensor.tapsaff docs) (new-platform)
- lock.sesame: New lock platform for Sesame smart locks (@trisk - #7873) (lock.sesame docs) (new-platform)
- Dsmr5 revert (@aequitas - #7900) (sensor.dsmr docs)
- Fix typos in Wunderground component (Percipitation -> Precipitation) (@mje-nz - #7901) (sensor.wunderground docs)
- Add support for the expirationTime parameter. (@perosb - #7895) (notify.html5 docs)
- Etherscan.io sensor (@nkgilley - #7855) (sensor.etherscan docs) (new-platform)
- blockchain.info sensor (@nkgilley - #7856) (sensor.blockchain docs) (new-platform)
- Mqtt cover modifications (@cribbstechnologies - #7841) (cover.mqtt docs)
- Add Radarr sensor (@tboyce021 - #7318) (sensor.radarr docs) (new-platform)
- Add service to set nest away/home modes (@mattsch - #7619) (nest docs)
- Added buienradar sensor and weather (@mjj4791 - #7592) (sensor.buienradar docs) (weather.buienradar docs) (new-platform)
- Add support for Vanderbilt SPC alarm panels and attached sensors (@mbrrg - #7663) (spc docs) (alarm_control_panel.spc docs) (binary_sensor.spc docs) (new-platform)
- Add raspihats switch (@florincosta - #7665) (switch.raspihats docs) (new-platform)
- Add ‘icon_template’ to switch templates (similar to sensor template) (@PhracturedBlue - #7862) (switch.template docs)
- Fix docstring (@fabaff - #7907)
- Sync crypto-currency platforms (@fabaff - #7906) (sensor.bitcoin docs) (sensor.blockchain docs) (sensor.coinmarketcap docs) (sensor.etherscan docs)
- Move consts to ‘const.py’ (@fabaff - #7909) (media_player.sonos docs) (sensor.imap_email_content docs) (sensor.pvoutput docs) (sensor.waqi docs)
- Minor cleanup - Define ‘CONF_ICON_TEMPLATE’ constant centrally (@PhracturedBlue - #7910) (sensor.template docs) (switch.template docs)
- Do not call update() in constructor (@fabaff - #7912) (sensor.cpuspeed docs) (sensor.cups docs) (sensor.currencylayer docs) (sensor.fixer docs)
- Add juicenet platform (@jesserockz - #7668) (juicenet docs) (sensor.juicenet docs) (new-platform)
- Bump pyEight version to fix 0hr session errors (@mezz64 - #7916) (eight_sleep docs)
- update to pywebpush 1.0.4 which allows install on system with openssl-1.1.0 (cryptography dep) (@perosb - #7915) (notify.html5 docs)
- Do not call update() in constructor (@fabaff - #7917) (sensor.dte_energy_bridge docs) (sensor.dublin_bus_transport docs) (sensor.dweet docs) (sensor.ebox docs) (sensor.ecobee docs) (sensor.hddtemp docs) (sensor.mold_indicator docs) (sensor.pi_hole docs) (sensor.yahoo_finance docs)
- Fix changes introduced with #7917 (@fabaff - #7930) (sensor.waqi docs)
- Do not call update() in constructor (@fabaff - #7931) (sensor.yweather docs)
- Add service_url config option to volvooncall (@palp - #7919) (volvooncall docs)
- Added ‘change’ field to statistics sensor (@jminn - #7820) (sensor.statistics docs)
- add ripple sensor (@nkgilley - #7935) (sensor.ripple docs) (new-platform)
- Add Yahoo! weather platform (@fabaff - #7939)
- [media_player.sonos] Send media_stop on turn_off (@Juggels - #7940) (media_player.sonos docs)
- update to 006 (@joopert - #7945) (media_player.nad docs)
- Update ping.py (@vrs01 - #7944) (device_tracker.ping docs)
- Add option to display all input sources / Add support for favourite channels / Treat Marantz SR5008 as Denon AVR-X device (@scarface-4711 - #7949) (media_player.denonavr docs)
- [WIP] Fix opencv (@Teagan42 - #7864) (image_processing.opencv docs) (breaking change)
- Upgrade coinmarketcap to 3.0.1 (@fabaff - #7951) (sensor.coinmarketcap docs)
- test connection without needing admin rights (@heinemml - #7947)
- Fix the negative values bug in history_stats (@bokub - #7934)
- Vera colored light support (@alanfischer - #7942) (vera docs) (light.vera docs)
- Fix typos (@fabaff - #7957) (http docs) (fan.zwave docs)
- Osram lightify, removed double set to the lightify bridge in case of brightness changes (@commento - #7662) (light.osramlightify docs)
- Add configuration check and use default var names (@fabaff - #7963) (lutron docs) (light.lutron docs) (breaking change)
- lock.sesame: Update pysesame, add state attributes (@trisk - #7953) (lock.sesame docs)
- Fixed metadata issue (@bazwilliams - #7932) (media_player.openhome docs)
- Create metoffice.py (@cyberjacob - #7965) (sensor.metoffice docs)
- Prevent Roku doing I/O in event loop (@balloob - #7969) (media_player.roku docs)
- Fix platforms being able to block startup (@balloob - #7970)
- New component: Python Script (@balloob - #7950) (python_script docs) (new-platform)
- Nadtcp component (@mwsluis - #7955) (media_player.nadtcp docs) (new-platform)
- HomeMatic optimizations and code cleanup (@danielperna84 - #7986) (homematic docs) (binary_sensor.homematic docs) (cover.homematic docs) (sensor.homematic docs) (switch.homematic docs)
- Update eliqonline.py (@molobrakos - #7977) (sensor.eliqonline docs)
- test that all lights turn off when no entity id is given (@chilicheech - #7981)
- make
last_name
field optional (@azogue - #7988) - Bugfixing with version 0.4.4 of denonavr (@scarface-4711 - #7995) (media_player.denonavr docs)
- Upgrade py-cpuinfo to 3.3.0 (@fabaff - #7992) (sensor.cpuspeed docs)
- LIFX: clean up internal color conversions (@amelchio - #7964) (light.lifx docs)
- LIFX: add support for setting infrared level (@amelchio - #8000) (light.lifx docs)
- dismiss service for persistent notifications (@tedstriker - #7996) (persistent_notification docs)
- Add Gitter.im sensor (@fabaff - #7998) (sensor.gitter docs) (new-platform)
- Fixing Client connection error (@sander76 - #7991) (telegram_bot.polling docs)
- Additional demo fan with only speed support (@armills - #7985)
- Update mailgun (@happyleavesaoc - #7984) (mailgun docs) (notify.mailgun docs) (breaking change) (new-platform)
- Fixed bug in spotify component. (@soldag - #7976) (media_player.spotify docs)
- fixing potential null issue with optional param being parsed as a script (@cribbstechnologies - #7928) (light.template docs)
- Make it more flexible (fixes #7954) (@fabaff - #8001) (image_processing.seven_segments docs)
- Add Flexit AC climate platform (@Sabesto - #7871) (climate.flexit docs) (new-platform)
- update pyripple (@nkgilley - #8015) (sensor.ripple docs)
- Allow put as method (@fabaff - #8004) (switch.rest docs)
- Configure conversation for custom actions with keywords (@mjsir911 - #7734) (conversation docs)
- Remove globally disabled pylint issues (@fabaff - #8005) (vera docs) (calendar.google docs) (climate.wink docs) (device_tracker.owntracks docs) (media_player.aquostv docs) (media_player.plex docs) (sensor.openevse docs)
- entity_id for service fan.turn_off is optional (@chilicheech - #7982)
- Make percentage string values as floats/ints in InfluxDB (@philhawthorne - #7879) (influxdb docs)
- Take in account Spotify account permissions (@Tommatheussen - #8012) (media_player.spotify docs)
- Add Dyson Pure Cool Link support (@CharlesBlonde - #7795)
- Allow device_tracker platforms to specify picture and icon upon discovery (@andrey-git - #8018)
- Discover Z-Wave values by index (@armills - #7853) (zwave docs)
- LIFX: add multiple modes to pulse effect (@amelchio - #8016) (light.lifx docs) (breaking change)
- Do not call update() in constructor (@fabaff - #8048) (sensor.snmp docs)
- Upgrade pysnmp to 4.3.8 (@fabaff - #8044) (device_tracker.snmp docs) (sensor.snmp docs)
- Upgrade zeroconf to 0.19.1 (@fabaff - #8043) (zeroconf docs)
- Vera fix for dimmable vs rgb lights (@alanfischer - #8007) (vera docs) (light.vera docs)
- Group service / dynamic handling (@pvizeli - #7971) (group docs)
- Adding ssocr to docker to support Seven Segments Display (@MartyTremblay - #8028)
- Added host variable to Splunk.py and updated tox tests (@boojew - #8052) (splunk docs)
- Restrict Python Script (@balloob - #8053) (python_script docs)
- Fixed the Wind sensor following new release of netatmo-api-python (@glpatcern - #8030) (netatmo docs) (sensor.netatmo docs)
- media_player.firetv - Adding support for https. (@coolcow - #8022) (media_player.firetv docs)
- Added ONVIF camera component (@matt2005 - #7979)
- Provide entity_id to avoid sensor mixup (fixes #7636). Use async_dispatcher. Provide icon. (@molobrakos - #7946) (volvooncall docs)
- Updater improvements to send option component information (@infamy - #7720) (updater docs)
- Use standard entity_ids for zwave entities (@armills - #7786) (zwave docs) (light.zwave docs) (breaking change)
- Update numpy 1.13.0 (@pvizeli - #8059) (image_processing.opencv docs)
- No update in MQTT Binary Sensor #7478 (@pezinek - #8057)
- Always enable monkey patch (@balloob - #8054)
- Add to zwave services descriptions (@andrey-git - #8072)
- Fix attribute entity (@pvizeli - #8066) (breaking change)
- Added ‘all_plants’ group and support for plant groups state. (@aronsky - #8063) (group docs) (plant docs)
- Fix EntityComponent handle entities without a name (@balloob - #8065)
- Update pyunifi component to use APIError passed from pyunifi 2.13. Better accommodate login failures with wrapper in pyunifi 2.13. (@finish06 - #7899) (device_tracker.unifi docs)
- bump usps version (@happyleavesaoc - #8074) (sensor.usps docs)
- bump ups (@happyleavesaoc - #8075) (sensor.ups docs)