From 53913af89b4f152c0659888283df68b65134182f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 15 Jul 2020 21:56:58 +0200 Subject: [PATCH 01/22] Beta release notes for 0.113 (#14001) Co-authored-by: Bram Kragten Co-authored-by: cogneato --- _config.yml | 6 +- source/_posts/2020-07-01-release-113.markdown | 1491 +++++++++++++++++ .../blog/2020-07-0.113/automation-modes.png | Bin 0 -> 14809 bytes .../images/blog/2020-07-0.113/script-name.png | Bin 0 -> 13754 bytes 4 files changed, 1494 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2020-07-01-release-113.markdown create mode 100644 source/images/blog/2020-07-0.113/automation-modes.png create mode 100644 source/images/blog/2020-07-0.113/script-name.png diff --git a/_config.yml b/_config.yml index 911082b60aa..2c77e52e45d 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 112 -current_patch_version: 5 -date_released: 2020-07-13 +current_minor_version: 113 +current_patch_version: 0 +date_released: 2020-07-22 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown new file mode 100644 index 00000000000..b0d7bd83f1f --- /dev/null +++ b/source/_posts/2020-07-01-release-113.markdown @@ -0,0 +1,1491 @@ +--- +layout: post +title: "0.113: Beta release notes" +description: "0.113: Beta release notes" +date: 2020-07-14 00:00:00 +date_formatted: "July 22, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-07-0.113/social.png +--- + + + +Beta release notes for 0.113.0 + +Please be sure to report issues on our GitHub issue tracker: + +Issues with core & integrations: +Issues with the frontend/UI: + +Issues introduced in this beta, are generally picked up with priority. + +## Introduction + +Another special, themed, release inbound! + +It seems like [@bdraco] is unstoppable; he just keeps going on improving +the performance of the Core. I truly admire him for the work he has been +delivering the past months, however, that is not the point of this release. +Sorry, [@bdraco]! + +This release is about: Automations & Scripts! Yes!!! + +A long, long time bug with automation triggering has been resolved, but not +only that, [@pnbruckner] went all-in by extending the automation/script engine +even more. + +Adding repeat, a chooser and running modes (with cool down possibilities as a side-effect). + +I've been playing with these features on my home already and I've +changed/improved quite a few things. For real, [@pnbruckner], thank you! + +Enjoy the release! + +../Frenck + +## Automations & Scripts + +This release brings changes to our automations and scripts. Before we start with +this all, please note, that the `action` part of an automation is a script +`sequence`. + +**So, all discussed below, apply to both scripts and automations.** + +Before diving in: All automation and script changes, have been driven by +[@pnbruckner]! It is awesome! Thanks! + +### Automations & Scripts: Bug fix + +There has been an issue with our automations for a long time already, which +you actually might have never noticed. It is kinda hard to explain, so this +needs an example. + +Consider the following automation: + +```yaml +automation: + - alias: "Example" + description: "On button press, turn on the light bulb for 10 seconds." + trigger: + - platform: state + entity_id: binary_sensor.button + to: "on" + action: + - service: light.turn_on + entity_id: light.bulb + - delay: + seconds: 10 + - service: light.turn_off + entity_id: light.bulb +``` + +This automation turns on a light bulb when the button is pressed, and after +10 seconds, it turns off the light bulb again. A fairly basic automation, which +does exactly what one would expect, except when a button is pressed twice. + +So it takes 10 seconds for the bulb to turn off, what if you press the button +again after 5 seconds? + +_Please, think about this for a moment..._ + +What actually happened before 0.113, is that the light bulb would turn off +immediately! Chances are, you didn't expect that. + +Let's explain this: So the first button push, turns on the light, and the delay +is active for 10 seconds. The second button push, done after 5 seconds, is +actually not handled, however, it does cause the delay of the first run to +cancel itself and continues to run the rest of the actions/sequence, +causing the light to turn off immediately! + +That bug, has been fixed. As of this release, the second button press wouldn't +do anything and the light will now turn off after 10 seconds, which the first +button push has triggered. + +### Automations & Scripts: Running modes + +With the above-mentioned bug fix, it now becomes possible to introduce new +running modes for both scripts and automations. It allows you to control +what happens if actions of a previous trigger are still running. + +Considering the light bulb example in the bug fix paraph above, it shows +the default mode: `single`, which means: Do not run and ignore the trigger +if a previous action of the same automation is still running. + +Besides the default `single` mode, the following modes are now available: + +Mode | Description +-|- +`single` | Do not start a new run, if running already. +`restart` | Start a new run, after stopping the previous run. +`queued` | Start a new run after all previous runs complete. +`parallel` | Start a new, independent, run in parallel with previous runs. + +

+Automation/script running modes visual explained. +Automation/script running modes visual explained. +

+ +For the queued and parallel modes, an additional parameter `max` is available +to control the maximum number of runs that are awaiting each other. When +omitting this setting, it would default to 10. + +To clarify a little more, remember the first example in the bug fix paragraph +where the light bulb would turn on for 10 seconds after a button press? + +This would make every button press within the 10 seconds, restart the countdown +again: + +```yaml +automation: + - trigger: + - ... + mode: restart + action: + - ... +``` + +And this example, would turn on/off the light, for 10 seconds twice, if the +button was pressed after 5 seconds. + +```yaml +automation: + - trigger: + - ... + mode: queue + action: + - ... +``` + +The modes are also available for automations and scripts in the frontend UI: + +

+Screenshot of running modes in the frontend +Screenshot of running modes in the frontend. +

+ +This is a powerful feature, which allows you to control how automations +and scripts are run in ways you could not do before. + +More information about the running mode can be found the [automations][automation-mode] +and [scripts][scripts-mode] documentation. + +[automation-mode]: /docs/automation/#automation-modes +[scripts-mode]: /integrations/script#script-modes + +### Automations & Scripts: Repeats + +A brand new action is made to allow for repeating (also called loops) +part of your automations or scripts. + +The new repeat feature can be used in three different ways: + +- **Counted repeat**: Control how many times to repeat a sequence. +- **While loop**: Keep repeating as long the condition(s) is/are met. +- **Repeat until**: Runs at least once, and decides after that to repeat until the condition(s) is/are met. + +For example, this would spam your phone with the same message 10 times: + +```yaml +- alias: Send notification spam to phone + repeat: + count: 10 + sequence: + - service: notify.frenck + data: + message: Ding dong! Someone is at the door! +``` + +More information about repeats can be found in the [documentation][repeats]. + +[repeats]: /docs/scripts/#repeat-a-group-of-actions + +### Automations & Scripts: Chooser + +Got multiple automations for that single light to turn it on/off? Or multiple +automations/scripts to handle the different buttons on some remote? + +You can now combine them using a chooser. The chooser is able to pick the +first sequence that matches a condition, or if none match, run a default +sequence. + +This means each individual sequence in the chooser is paired with its own set +of conditions. + +```yaml +automation: + - alias: "Example" + description: "On button press, turn on the light bulb for 10 seconds." + trigger: + - platform: state + entity_id: + - binary_sensor.button1 + - binary_sensor.button2 + - binary_sensor.button3 + action: + - choose: + - conditions: + - condition: state + entity_id: binary_sensor.button1 + state: "on" + sequence: + - service: light.turn_on + entity_id: light.bulb + - conditions: + - condition: state + entity_id: binary_sensor.button2 + state: "on" + sequence: + - service: light.turn_off + entity_id: light.bulb + default: + - service: notify.frenck + data: + message: Some other unknown button was pressed! +``` + +In the above example, pushing button1, turns on the bulb; while button2 turns +it off again. The third button isn't handled by any of the conditions in +the chooser and the (optional) default is run instead. + +The chooser can be used as an `if`/`else` statement, where the `default` acts as +the else. Or even as `if`/`else if`/`else` statement as shown in the YAML +example above. + +More information about the chooser can be found in the [documentation][chooser]. + +[chooser]: /docs/scripts/#choose-a-group-of-actions + +### Automations & Scripts: Bonus! Cool down + +An often requested feature is to allow for a cool down time on an automation. +What that entails is setting a limiting the run of an automation or script +to a certain time frame. + +While this is not a feature specifically added or build, it can be achieved +now using the new run modes. + +```yaml +automation: + - alias: "Doorbell cool down" + description: "Prevent multiple message being send when spamming the doorbell." + mode: single # Which is the default + trigger: + - platform: state + state: binary_sensor.doorbell + to: "on" + action: + - service: notify.frenck + data: + message: Ding dong! Someone is at the door! + - delay: + seconds: 10 +``` + +The `single` run mode of this automation, combined with the last `delay` of 10 +seconds, prevents this automation from being ran more often than only once +every 10 seconds. This is ideal for things like a doorbell. + +## MDI icons updated + +It has taken some time for us to upgrade to the newest version of +[Material Design Icons][mdi], 5.3.45, there was a reason for that, +version [5.0.45][mdi-upgrade] contains a lot of breaking changes. + +We wanted to handle these well, so it took some time. + +A lot of icons are renamed, and some are removed. In this release, we included +all new, and all removed icons and we made sure the new and the old name work. + +If you use an icon that is renamed or removed we will show a warning in the log, +in version 0.115,this conversion path will be removed and removed icons and +old names no longer work. + +So make sure to check your logs if you need to adjust any of your used MDI +icons. + +Most of the removed MDI icons can be found in [Simple icons][simple-icons], +which is available as a [custom integration][hass-simpleicons]. + +Please note: It is possible that custom integrations (also known as +custom components) use deprecated icons. These can throw warnings that need +to be addressed in the custom integration. + +[mdi]: https://dev.materialdesignicons.com +[mdi-upgrade]: https://dev.materialdesignicons.com/upgrade#4.9.95-to-5.0.45 +[simple-icons]: https://simpleicons.org/ +[hass-simpleicons]: https://github.com/vigonotion/hass-simpleicons + +## Script and Scene editor updates + +The UI to edit or create a script has been updated, besides support for the +new running mode and you can give your scripts a custom icon and ID from the UI. + +Especially the naming is helpful, you no longer have to search your states for +a long numeric entity id that matches your script. + +

+Screenshot of a script name, icon and run mode. +Screenshot of a script name, icon and run mode. +

+ +The support for setting a custom icon, is also added to the scenes editor. + +## More speed optimizations + +After, the well-received, speed optimization done in the 0.111 & 0.112 releases, +the sega towards improving resource usage and responsiveness of the platform +continues. + +This time we have both [@bdraco] and [@pvizeli] to thank for some great +optimizations that will reduce the CPU usage of Home Assistant. + +First of all, if you are running a Home Assistant OS, Container or +Supervised installation, this your Home Assistant instance will run on +Python 3.8. No action from your end is needed for this. + +It is not just a normal Python version, but [@pvizeli] has worked on a highly +optimized Python version for Home Assistant, hitting performance improvements +that can reach up to 40%! He wrote a more [technical article about this on +our developers blog][python-speed]. + +Then [@bdraco] did his part on adding some improvements to the Core. He +changed a lot of handling around event & state listeners, in such a way +less things trigger unneeded, which reduces processing when states change. + +This lowers CPU usage and improves response speed when you have many state +changes happening in a short time span, or when having a lot of automations. + +Also, all time listeners now have microsecond precision as they are scheduled +on the internal event loop, instead of the previous situation when it relied on +the internal clock that triggered every second. + +This release should drastically lower the CPU usage of Home Assistant for +most installations. + +[python-speed]: https://developers.home-assistant.io/blog/2020/07/13/alpine-python + +## Other noteworthy changes + +- Philips Hue groups can now be turned on/off in the integration options via the UI. +- The [OpenZWave][ozw docs] (beta) got 3 new services. Two of those are for + setting user codes on locks. The other allows for setting device-specific + configuration parameters. +- After a moment of absence, [@yosilevy](https://github.com/yosilevy) is back! + He has been the one fixing all kinds of RTL issues we had in Home Assistant, + with his return, this release is full of RTL tweaks again! + +## New Integrations + +- Create PoolSense integration ([@haemishkyd] - [#35561]) ([poolsense docs]) +- Add Dexcom Integration ([@gagebenne] - [#33852]) ([dexcom docs]) +- Add new integration for Bond hub ([@prystupa] - [#37477]) ([bond docs]) + +## New Platforms + +- Add support for window covers to ozw integration ([@Michsior14] - [#37217]) ([ozw docs]) +- Support Fan domain in Bond integration ([@prystupa] - [#37703]) ([bond docs]) +- Updates to poolsense integration ([@haemishkyd] - [#37613]) ([poolsense docs]) +- Apply code quality updates to poolsense ([@haemishkyd] - [#37781]) ([poolsense docs]) +- Add basic support for lights in bond integration ([@prystupa] - [#37802]) ([bond docs]) +- Add support for generic device (switch) to bond integration ([@prystupa] - [#37837]) ([bond docs]) + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [Syncthru][syncthru docs], done by [@scop] +- [SmartHab][smarthab docs], done by [@outadoc] + +## If you need help... + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/core/issues). Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +Below is a listing of the breaking change for this release, per subject or +integration. Click on one of those to read more about the breaking change +for that specific item. + +
+ Minimum Python version 3.7.1 +

+ +The minimum required Python version has been bumped from Python 3.7.0 to 3.7.1. + +([@bdraco] - [#37184]) + +

+
+ +
+ Automations/Scripts +

+ +The way automations behaved when they were triggered while "suspended" in a +delay or wait_template step from a previous trigger event was unexpected. If +this happened the suspended step would be aborted and the automation would +continue the action sequence with the following step. + +This change removes support for that "legacy" behavior, in both automations +and scripts (although scripts were less affected by this.) + +It also provides new "modes" of operation for these action sequences, namely +`single`, `restart`, `queued` & `parallel`. To minimize the impact on existing +automations and scripts, the default mode is `single`. + +In addition, for `queued` & `parallel` modes there is now a new configuration +option -- `max` -- that controls the maximum number of "runs" that can be +running and/or queued up at a time. + +And lastly, the delay step is now much more precise, and supports delays of +less than one second. + +([@pnbruckner] - [#37729]) ([automation docs]) ([script docs]) + +

+
+ +
+ Templates +

+ +Most of the template platforms would check for extract_entities failing to +extract entities and avoid setting up a state change listener for "all" after +extract_entities had warned that it could not extract the entities and updates +would need to be done manually. + +This protection has been extended to all template platforms. + +Alter the behavior of extract_entities to return the successfully extracted +entities if one or more templates fail extraction instead of returning "all" +and getting rejected by the platform itself. + +([@bdraco] - [#37831]) ([template docs]) + +

+
+ +
+ Relative time +

+ +Previously, the value used for displaying a relative time was floored before +being interpolated into the localized string, leading to situations like these: + +- 47 hours ago is displayed as "1 day ago" instead of "2 days ago" +- 13 days in the future is displayed as "in 1 week" + +This change modifies the `relativeTime` function to use `Math.round` instead of +`Math.floor` so the output more closely matches the actual relative time of the +input. + +([@GMTA] - [#37125]) + +

+
+ +
+ MQTT +

+ +Birth and will messages are now published by default. + +MQTT birth message defaults to:`{"topic": "homeassistant/status", "payload": "online"}` +MQTT will message defaults to: `{"topic": "homeassistant/status", "payload": "offline"}` + +MQTT will published also on clean connect from broker. + +([@emontnemery] - [#37371]) ([mqtt docs]) + +

+
+ +
+ ZHA with Hue remotes +

+ +This update does contains a breaking change if you are using Device Triggers +for the Hue Dimmer models RWL020 and RWL021. + +We decided to configure these to use the extended manufacturer support so that +we can support 4 triggers per button. + +If you were previously using Device Triggers in automations for these devices +you will have reconfigure the device leveraging the button on the device page +or remove and re-pair the device after updating Home Assistant. + +Then you will have to update the automations to use the new triggers. + +Sorry for the inconvenience. + +([@dmulcahey] - [#37859]) ([zha docs]) + +

+
+ +
+ Philips Hue +

+ +Configuring a Hue bridge via YAML configuration is now deprecated. Your current +YAML configuration is imported and can be safely removed after upgrading. + +Adding Hue bridges manually by IP can now be done via the UI. Changing allowing +Hue groups or unreachable Hue bulb is now managed by clicking the options button +on the Hue integration in the UI. + +([@frenck] - [#37268]) ([hue docs]) + +

+
+ +
+ InfluxDB +

+ +Support for glob matching is added with InfluxDB filters. + +InfluxDB was not using the common filtering logic shared by `recorder`, +`logbook`, `homekit`, etc. and as a result had filtering logic that is +inconsistent with the filtering logic of every other recorder-like component. +This has been corrected causing the following changes in filtering logic. + +Same domain specified in both include and exclude: + +- Previous behavior: All entities in that domain excluded +- New behavior: All entities of that domain included unless entity is excluded + by ID or by glob + +Same entity ID specified in both include and exclude: + +- Previous behavior: Entity excluded +- New behavior: Entity included + +Filtering has 1+ exclude domains, 0 include domains, and 1+ include entity ID's specified: + +- Previous behavior: All entities not specifically listed by ID were excluded +- New behavior: All entities not specifically excluded by either domain or ID + are included. + +([@mdegat01] - [#37069]) ([influxdb docs]) + +

+
+ +
+ Transmission +

+ +For all torrents sensors (e.g., `active_torrents` or `started_torrents`) order +of the content of the `torrent_info` attribute has changed to `oldest first` +which means older torrents will appear first in the list. + +Also a default limit of 10 items is also applied to the list to avoid very long +strings stored in the recorder database. Both configuration options, `order` and +`limit`, can be adjusted in the integrations UI. + +([@zhulik] - [#35411]) ([transmission docs]) + +

+
+ +
+ Logitech Harmony Hub +

+ +New devices and activities are visible as harmony attributes. The current +activity is now updated as soon as the remote starts the activity change +instead of being delayed until the activity is finished setting up. + +([@bdraco] - [#37559]) ([harmony docs]) + +

+
+ +
+ Xiaomi Miio +

+ + Fan and remote components now have unique LED strings. + If you had previously set your automation calls from + "**fan**_set_led_on/off" to "**remote**_set_led_on/off", + you will now need to set those back to "fan". + + ([@alexhardwicke] - [#37605]) ([xiaomi_miio docs]) + +

+
+ +
+ Samsung SyncThru Printer +

+ +Syncthru configuration is now done through the integrations UI page. + +([@scop] - [#36690]) ([discovery docs]) ([syncthru docs]) +

+
+ +
+ Slack +

+ +Re-added the ability to use remote files (by URL) in Slack messages. + +The data schema for sending files in Slack messages has changed, so be sure to +update any Slack-related service calls with the new schema as listed in +the Slack integration documentation. + +([@bachya] - [#37161]) ([slack docs]) + +

+
+ +
+ RFXCOM RFXtrx +

+ +- Configuration of rfxtrx devices now happens through the Integration UI page. +- Configuration of entity name must now be done inside home assistant +- Multiple entities may be generated for a single device +- The events signalled from entity id's are removed in favor of events from an integration level. +- The events format has changed. + +([@elupus] - [#37742] [#37565]) ([rfxtrx docs]) + +

+
+ +
+ Fibaro +

+ +Fibaro Home Center switches that control light sources will now correctly be configured as Light entities (instead of Switch entities). This causes those entities IDs to change from `switch`. to `light`. If this is not desirable, change the device role in Home Center to something that isn't a light source (e.g., Other device). + +([@danielpervan] - [#37690]) ([fibaro docs]) + +

+
+ +
+ Frontend: Deprecated HTML imports +

+ +`extra_html_url` is now deprecated and support will be removed in 0.115. +You can switch to the new `extra_module_url` or `extra_js_url_es5` by changing +your imported file to JavaScript. + +With the start of custom components, you would import a HTML file for your +component instead of JavaScript. That's why we have always supported importing +extra HTML in the frontend and custom panels. + +This has been deprecated and superseded by ES modules since some time and has + no support anymore in browsers. We have a polyfill in place to still support + this, but we are going to remove this. + +In version 0.115 we will remove the ability to import HTML, you can use ES +modules as a replacement. + +([@bramkragten] - [#37843]) ([frontend docs]) + +

+
+ +## All changes + +
+ Click to see all changes! + +- Zerproc cleanup ([@emlove] - [#37072]) ([zerproc docs]) +- Add concept of allowed external URLs to config ([@bachya] - [#36988]) +- Add legacy polling option for Amcrest motion detection ([@pnbruckner] - [#36955]) ([amcrest docs]) +- Improve setup ([@balloob] - [#37075]) +- Add worldclock custom format ([@InduPrakash] - [#36157]) ([worldclock docs]) +- Bump version to 0.113.0dev0 ([@frenck] - [#37071]) +- Migrate doorbird to use new logbook platform ([@bdraco] - [#37097]) ([doorbird docs]) +- Improve isoformat timestamp performance for full states ([@bdraco] - [#37105]) ([history docs]) +- Plex tests cleanup and additions ([@jjlawren] - [#37117]) ([plex docs]) +- Ensure doorbird events can be filtered by entity_id ([@bdraco] - [#37116]) ([doorbird docs]) +- Upgrade sqlalchemy to 1.3.18 ([@frenck] - [#37123]) ([recorder docs]) ([sql docs]) +- Add optimistic Guardian switch updating ([@bachya] - [#37141]) ([guardian docs]) +- Update remote_rpi_gpio switch parent ([@Kdemontf] - [#37136]) ([remote_rpi_gpio docs]) +- Improve Smappee integration ([@bsmappee] - [#37087]) ([smappee docs]) +- Add support for glob matching in InfluxDB filters ([@mdegat01] - [#37069]) ([influxdb docs]) (breaking-change) +- Update Plex tests to mock websockets ([@jjlawren] - [#37147]) ([plex docs]) +- add phillips remote cluster ([@dmulcahey] - [#37172]) ([zha docs]) +- Improve scalability of state change event routing ([@bdraco] - [#37174]) ([automation docs]) +- Ensure all async_track_state_change_event callbacks run if one throws ([@bdraco] - [#37179]) +- Fixup rfxtrx tests to at least run ([@elupus] - [#37186]) ([rfxtrx docs]) +- Attempt to set unique id of rfxtrx device ([@elupus] - [#37159]) ([rfxtrx docs]) +- Bump aioguardian ([@bachya] - [#37188]) ([guardian docs]) +- Add debug output for invalid service call data ([@pnbruckner] - [#37171]) +- Limit and sort transmission torrents_info attribute ([@zhulik] - [#35411]) ([transmission docs]) (breaking-change) +- Move transmission limit and order config options to the options flow ([@zhulik] - [#37198]) ([transmission docs]) +- Sensors sometimes are created without event ([@elupus] - [#37205]) ([rfxtrx docs]) +- Correct typo in input_number UI text ([@davet2001] - [#37208]) ([input_number docs]) +- Silence spurious warning when HomeKit is already running ([@bdraco] - [#37199]) ([homekit docs]) +- Additional testing for InfluxDB and some quality improvements ([@mdegat01] - [#37181]) ([influxdb docs]) +- Add first unit test to config flow for Plum Lightpad ([@prystupa] - [#37183]) ([plum_lightpad docs]) +- Ensure homekit state changed listeners are unsubscribed on reload ([@bdraco] - [#37200]) ([homekit docs]) +- Use eventloop for scheduling ([@bdraco] - [#37184]) ([asuswrt docs]) ([generic_thermostat docs]) (breaking-change) +- Add mdegat01 as code owner for InfluxDB ([@mdegat01] - [#37227]) ([influxdb docs]) +- Move Guardian services to entity platform services ([@bachya] - [#37189]) ([guardian docs]) +- Use shared zeroconf for discovery netdisco ([@bdraco] - [#37237]) ([discovery docs]) +- Register 'androidtv.learn_sendevent' service ([@JeffLIrion] - [#35707]) ([androidtv docs]) +- Add support for window covers to ozw integration ([@Michsior14] - [#37217]) ([ozw docs]) (new-platform) +- Remove Hue configurator demo from demo integration ([@frenck] - [#37250]) ([demo docs]) +- Bump pychromecast to 7.0.1 ([@emontnemery] - [#37225]) ([cast docs]) +- Changed FilterTest namedtuples to dataclasses ([@mdegat01] - [#37252]) ([apache_kafka docs]) ([azure_event_hub docs]) ([google_pubsub docs]) ([prometheus docs]) +- Enhance script integration to use new features in script helper ([@pnbruckner] - [#37201]) ([script docs]) +- Refactor Influx logic to reduce V1 vs V2 code paths ([@mdegat01] - [#37232]) ([influxdb docs]) +- Cache checking for entity exposure in emulated_hue ([@bdraco] - [#37260]) ([emulated_hue docs]) +- Add missed call sensor to Freebox ([@Quentame] - [#36895]) ([freebox docs]) +- Add humidifier support to google_assistant ([@Shulyaka] - [#37157]) ([google_assistant docs]) +- Improve support for homematic garage covers ([@guillempages] - [#35350]) ([homematic docs]) +- Create PoolSense integration ([@haemishkyd] - [#35561]) ([poolsense docs]) (new-integration) +- Add media_stop for volumio integration ([@divanikus] - [#37211]) ([volumio docs]) +- Clean up 'androidtv.learn_sendevent' service ([@JeffLIrion] - [#37276]) ([androidtv docs]) +- Add a service for setting the timer to tado water heaters ([@jfearon] - [#36533]) ([tado docs]) +- Add constant for PlatformNotReady wait time to use in tests ([@mdegat01] - [#37266]) ([influxdb docs]) +- Add Dexcom Integration ([@gagebenne] - [#33852]) ([dexcom docs]) (new-integration) +- Bump pynws-1.2.1 for NWS ([@MatthewFlamm] - [#37304]) ([nws docs]) +- Limit entity platform entity service to same integration ([@balloob] - [#37313]) +- Add Hue manual bridge config flow + options flow ([@frenck] - [#37268]) ([hue docs]) (breaking-change) +- Fix Influx V1 test query ([@mdegat01] - [#37309]) ([influxdb docs]) +- Fix flapping flux tests ([@bdraco] - [#37346]) ([flux docs]) +- Add humidifier support to homekit ([@Shulyaka] - [#37207]) ([homekit docs]) +- Fix flapping gdacs tests ([@bdraco] - [#37363]) ([gdacs docs]) +- Upgrade pre-commit to 2.6.0 ([@frenck] - [#37339]) +- Add ozw garage door barrier support ([@firstof9] - [#37316]) ([ozw docs]) +- Improve unifi device tracker performance ([@bdraco] - [#37308]) ([unifi docs]) +- Fix ozw garage door methods ([@MartinHjelmare] - [#37374]) ([ozw docs]) +- Modified Influx tests to mock test queries with accurate output ([@mdegat01] - [#37315]) ([influxdb docs]) +- Remove my codeownership over things I dont use anymore ([@robbiet480] - [#37401]) +- Convert rfxtrx tests to pytest async tests and re-enable ([@elupus] - [#37206]) ([rfxtrx docs]) +- Add GitHub Actions for CI ([@frenck] - [#37419]) +- Reduce time to run zha discover tests ([@bdraco] - [#37424]) ([zha docs]) +- Ensure async_setup is mocked in geonetnz intergration tests ([@bdraco] - [#37426]) ([geonetnz_quakes docs]) ([geonetnz_volcano docs]) +- Add helpers.location.coordinates ([@eifinger] - [#37234]) +- Replace asynctest with tests.async_mock ([@balloob] - [#37428]) +- Prevent verisure lock from looping forever and sleeping in test ([@bdraco] - [#37425]) ([verisure docs]) +- Fix undesired power toggling ([@ktnrg45] - [#37427]) ([ps4 docs]) +- Fix unmocked setup in garmin_connect test ([@bdraco] - [#37429]) ([garmin_connect docs]) +- Fix unmocked setup in ipp tests ([@bdraco] - [#37430]) ([ipp docs]) +- Stub out ecobee aux heat services ([@balloob] - [#37423]) ([ecobee docs]) +- Fix building of Python Wheels ([@frenck] - [#37433]) +- Mock setup in sonarr config flow tests ([@bdraco] - [#37432]) ([sonarr docs]) +- Add more unit tests for plum_lightpad ([@prystupa] - [#37275]) ([plum_lightpad docs]) +- Add Plugwise zeroconf discovery ([@bouwew] - [#37289]) ([plugwise docs]) +- Mock setup in directv config flow tests ([@ctalkington] - [#37439]) ([directv docs]) ([directv docs]) +- Apply some suggestions from poolsense code review ([@ctalkington] - [#37440]) ([poolsense docs]) +- Fix extremely minor typo: Cosumption -> Consumption ([@smugleafdev] - [#37322]) ([solaredge docs]) +- Fix DarkSky spamming the log ([@RogerSelwyn] - [#37421]) ([darksky docs]) +- Upgrade python-join-api to allow user to specify actions ([@nkgilley] - [#37394]) ([joaoapps_join docs]) +- Use a more detailed battery icon for Tesla cars ([@jberstler] - [#37154]) ([tesla docs]) +- Avoid selecting the states created column for history ([@bdraco] - [#37450]) ([history docs]) +- Use device class to isolate tesla battery icon ([@ctalkington] - [#37446]) ([tesla docs]) +- Remove pytest-xdist from tox now that it's in requirements_test.txt ([@scop] - [#37455]) +- Fix Plugwise zeroconf discovery formatting ([@CoMPaTech] - [#37457]) ([plugwise docs]) +- Xiaomi Gateway subdevice support & AqaraHT + SensorHT devices ([@starkillerOG] - [#36539]) ([xiaomi_miio docs]) +- Fix entity_component test flapping ([@bdraco] - [#37445]) +- Fix flapping geo_json_events tests ([@frenck] - [#37471]) ([geo_json_events docs]) +- Fix geonetnz_quakes test flapping ([@emontnemery] - [#37473]) ([geonetnz_quakes docs]) +- Call sync function from async context ([@timvancann] - [#37324]) ([avri docs]) +- Support empty output of MQTT binary_sensor value_template ([@emontnemery] - [#37420]) ([mqtt docs]) +- Publish birth and will messages by default ([@emontnemery] - [#37371]) ([mqtt docs]) (breaking-change) +- Fix flapping google_assistant tests ([@frenck] - [#37480]) ([google_assistant docs]) +- Add humidifier support to emulated_hue ([@Shulyaka] - [#37110]) ([emulated_hue docs]) +- GitHub Actions: Add hadolint problem matcher ([@frenck] - [#37494]) +- GitHub Actions: Add codespell problem matcher ([@frenck] - [#37487]) +- GitHub Actions: Add json problem matcher ([@frenck] - [#37490]) ([hue docs]) +- GitHub Actions: Add pylint problem matcher ([@frenck] - [#37463]) +- GitHub Actions: Add check executables problem matcher ([@frenck] - [#37488]) +- GitHub Actions: Add mypy problem matcher ([@frenck] - [#37485]) +- GitHub Actions: Add yamllint problem matcher ([@frenck] - [#37468]) ([ads docs]) +- GitHub Actions: Add flake8 problem matcher ([@frenck] - [#37465]) +- GitHub Actions: Show diff on failure ([@frenck] - [#37461]) +- Fix flapping geonetnz_volcano test ([@bdraco] - [#37497]) ([geonetnz_volcano docs]) +- Upgrade flake8 to 3.8.3 ([@scop] - [#37501]) +- Use package constraints in tox lint ([@scop] - [#37500]) +- GitHub Actions: Add pytest problem matcher ([@frenck] - [#37508]) ([toon docs]) +- Enhance automation integration to use new features in script helper ([@pnbruckner] - [#37479]) ([automation docs]) ([script docs]) +- Do not count netdata cleared and undefined alarms as warnings ([@jurgenhaas] - [#37505]) ([netdata docs]) +- Bump env_canada to 0.1.0 ([@michaeldavie] - [#37483]) ([environment_canada docs]) +- Prebake common history queries ([@bdraco] - [#37496]) ([history docs]) +- Add prometheus metric naming guidelines ([@knyar] - [#37149]) ([prometheus docs]) +- Use the main event loop for homekit ([@bdraco] - [#37441]) ([homekit docs]) +- Add denonavr solution tip for connection_error ([@starkillerOG] - [#37405]) ([denonavr docs]) +- Fix Datadog boolean metrics ([@shermdog] - [#37273]) ([datadog docs]) +- Fix flapping demo geo_location test ([@bdraco] - [#37516]) ([demo docs]) +- Standardise geniusheub error levels ([@RogerSelwyn] - [#37512]) ([geniushub docs]) +- Standardis asuswrt error message level ([@RogerSelwyn] - [#37515]) ([asuswrt docs]) +- Convert Android TV integration to async ([@JeffLIrion] - [#37510]) ([androidtv docs]) +- Add config flow + async support for SmartHab integration ([@outadoc] - [#34387]) ([smarthab docs]) +- Tado climate entity timer service ([@jfearon] - [#37472]) ([tado docs]) +- Use async_track_state_change_event for automation numeric_state ([@bdraco] - [#37255]) ([automation docs]) +- Fix xiaomi_miio error when no sensors present ([@starkillerOG] - [#37531]) ([xiaomi_miio docs]) +- Switch tests to use hass objects instead of direct ([@elupus] - [#37530]) ([rfxtrx docs]) +- Log lines do not end with a full stop ([@frenck] - [#37527]) +- Fix flake8 problem matcher to handle fatals as errors ([@frenck] - [#37536]) +- Transition Guardian to use a DataUpdateCoordinator ([@bachya] - [#37380]) ([guardian docs]) +- Switch rfxtrx to dispatcher ([@elupus] - [#37271]) ([rfxtrx docs]) +- Cleanup async_track_state_change and augment docstring ([@bdraco] - [#37251]) +- Add Amcrest audio_detected binary sensor ([@pnbruckner] - [#37486]) ([amcrest docs]) +- Add new integration for Bond hub ([@prystupa] - [#37477]) ([bond docs]) (new-integration) +- Switch homekit to use async_track_state_change_event ([@bdraco] - [#37253]) ([homekit docs]) +- Add missing manifest object to the check ([@ludeeus] - [#37535]) +- Add dependabot for automatic updates to GitHub Actions ([@frenck] - [#37550]) +- Bump actions/upload-artifact from v1 to v2.0.1 (dependabot - [#37555]) +- Bump codecov/codecov-action from v1 to v1.0.10 (dependabot - [#37556]) +- Strings capitalization consistency fixes ([@scop] - [#37454]) +- Protect loop set default executor ([@balloob] - [#37438]) +- Add optimistic mode to template switch ([@akloeckner] - [#31637]) ([template docs]) +- Mock setup in plex test to prevent CI failure ([@bdraco] - [#37590]) ([plex docs]) +- Ensure homekit accessory reset only affect the bridges with the accessory ([@bdraco] - [#37588]) ([homekit docs]) +- apply small feedback suggestions from a previous PR that is already merged ([@prystupa] - [#37551]) ([bond docs]) +- Bump voluptuous-serialize 2.4.0 ([@balloob] - [#37241]) +- Fix missing Plex account mocks in tests ([@jjlawren] - [#37591]) ([plex docs]) +- Update Rejseplanen rjpl to 0.3.6 ([@DarkFox] - [#37215]) ([rejseplanen docs]) +- Make devices and activities visible as harmony attributes ([@bdraco] - [#37559]) ([harmony docs]) (breaking-change) +- Upgrade debugpy to 1.0.0b12 ([@frenck] - [#37599]) ([debugpy docs]) +- Upgrade coverage to 5.2 ([@frenck] - [#37598]) +- Fix typos in Hue integration ([@frenck] - [#37597]) ([hue docs]) +- Add current temperature as separate sensor in Toon ([@frenck] - [#37336]) ([toon docs]) +- Add host names in esphome logs ([@TheLastGimbus] - [#37587]) ([esphome docs]) +- Fix sync/async and small improvements to forked_daapd ([@frenck] - [#37619]) ([forked_daapd docs]) +- Remove dead code from cast ([@frenck] - [#37620]) ([cast docs]) +- Fix acmeda syn/async cover methods ([@frenck] - [#37618]) ([acmeda docs]) +- Fix sync/async override in sms ([@frenck] - [#37621]) ([sms docs]) +- Switch what is used for unique identifier ([@elupus] - [#37581]) ([rfxtrx docs]) +- Change MediaPlayerDevice into MediaPlayerEntity ([@brefra] - [#37629]) ([pioneer docs]) +- Ozw climate fixes ([@marcelveldt] - [#37560]) ([ozw docs]) +- Bump aiohomekit to 0.2.41 ([@Jc2k] - [#37602]) ([homekit_controller docs]) +- Fix homekit test mocking missed in loop changeover ([@bdraco] - [#37628]) ([homekit docs]) +- Reduce log level of unknown discovered services ([@balloob] - [#37617]) ([discovery docs]) +- fix erroneous dependency used by Bond integration (simplejson to json) ([@prystupa] - [#37642]) ([bond docs]) +- Mark the example values as strings because that's what we expect ([@balloob] - [#37640]) ([alarm_control_panel docs]) +- Fix ozw entities cleanup on node removal ([@marcelveldt] - [#37630]) ([ozw docs]) +- bump pyvizio version ([@raman325] - [#37644]) ([vizio docs]) +- Add OZW support for set_config_parameter service ([@firstof9] - [#37523]) ([ozw docs]) +- Modify cast tests to setup via cast integration ([@emontnemery] - [#37256]) ([cast docs]) +- Give fan and remote components unique LED strings ([@alexhardwicke] - [#37605]) ([xiaomi_miio docs]) (breaking-change) +- Vizio: when checking new host against existing config entry hosts, make check hostname aware ([@raman325] - [#37397]) ([vizio docs]) +- Add preset modes to Touchline ([@pilehave] - [#36054]) ([touchline docs]) +- Updated influxdb-client dependency to 1.8.0 ([@mdegat01] - [#37396]) ([influxdb docs]) +- Check buckets/dbs for validity during Influx sensor startup ([@mdegat01] - [#37391]) ([influxdb docs]) +- Fix missing Guardian service strings ([@bachya] - [#37659]) ([guardian docs]) +- Apply more suggestions from bond code review ([@ctalkington] - [#37592]) ([bond docs]) +- Set MQTT sensor to state unavailable when value expires ([@emontnemery] - [#36609]) ([mqtt docs]) +- Convert syncthru to config flow and native SSDP discovery ([@scop] - [#36690]) ([discovery docs]) ([syncthru docs]) (breaking-change) +- Use "next_state" attr instead of "post_pending" for ArmDisarm trait ([@engrbm87] - [#37325]) ([google_assistant docs]) +- Add ozw usercode support ([@firstof9] - [#37390]) ([ozw docs]) +- OZW Usercodes update services.yaml with examples ([@firstof9] - [#37667]) ([ozw docs]) +- Add humidifier support to prometheus ([@Shulyaka] - [#37112]) ([prometheus docs]) +- Refactor Enocean part 1 ([@jduquennoy] - [#35927]) ([enocean docs]) +- Add back Netatmo public weather sensors ([@cgtobi] - [#34401]) ([netatmo docs]) +- Split handling and application of event ([@elupus] - [#37665]) ([rfxtrx docs]) +- Python 3.8 on core Container ([@pvizeli] - [#37677]) +- Detect lingering threads after tests ([@elupus] - [#37270]) +- Change audio sample rate for apple watch homekit camera ([@Harryjholmes] - [#37637]) ([homekit docs]) +- Round time values in get_age() to better approximate the actual age ([@GMTA] - [#37125]) (breaking-change) +- Add bond cover assumed state and local polling ([@prystupa] - [#37666]) ([bond docs]) +- Actually fix Guardian entity services ([@bachya] - [#37700]) ([guardian docs]) +- Revert "Updated influxdb-client dependency to 1.8.0" (#37396)" ([@mdegat01] - [#37697]) ([influxdb docs]) +- Upgrade foobot-async ([@balloob] - [#37706]) ([foobot docs]) +- Rewrite rfxtrx init logic to do away with global object ([@elupus] - [#37699]) ([rfxtrx docs]) +- bump tuyaha 0.0.7 ([@PaulAnnekov] - [#37709]) ([tuya docs]) +- Fix get profiles checking if has ptz capabilities ([@djpremier] - [#37176]) ([onvif docs]) +- Update influxdb-client dependency to 1.8.0, fix test write for InfluxDB v2 ([@bednar] - [#37710]) ([influxdb docs]) +- Fix loopenergy callback updating HA before the object is initialised ([@pavoni] - [#37650]) ([loopenergy docs]) +- Fix Hue homekit discovery ([@balloob] - [#37694]) ([hue docs]) +- Add new repeat loop for scripts and automations ([@pnbruckner] - [#37589]) ([automation docs]) ([script docs]) +- Add rfxtrx device classes to known types ([@elupus] - [#37698]) ([rfxtrx docs]) +- Re-add ability to use remote files (by URL) in Slack messages ([@bachya] - [#37161]) ([slack docs]) (breaking-change) +- Use the shared zeroconf instance for homekit_controller ([@bdraco] - [#37691]) ([homekit_controller docs]) +- Uninstall typing ([@balloob] - [#37735]) +- Remove legacy script mode and simplify remaining modes ([@pnbruckner] - [#37729]) ([automation docs]) ([script docs]) (breaking-change) +- Support Fan domain in Bond integration ([@prystupa] - [#37703]) ([bond docs]) (new-platform) +- Fix incorrect comparison of speed "off" by identity instead of by value ([@prystupa] - [#37738]) ([fan docs]) +- Refactor Bond integration to remove duplication ([@prystupa] - [#37740]) ([bond docs]) +- Updates to poolsense integration ([@haemishkyd] - [#37613]) ([poolsense docs]) (new-platform) +- Bump ADS to 3.1.3 ([@balloob] - [#37748]) ([ads docs]) +- Reference constraint files from requirement files ([@balloob] - [#37751]) +- Bump pyHS100 to 3.5.1 ([@balloob] - [#37749]) ([tplink docs]) +- Fix script queued mode typo ([@pnbruckner] - [#37759]) +- Upgrade bond-home to 0.0.9 ([@prystupa] - [#37764]) ([bond docs]) +- Bump teslajsonpy to 0.9.3. ([@alandtse] - [#37771]) ([tesla docs]) +- Significantly improve logging performance when no integrations are requesting debug level ([@bdraco] - [#37776]) ([logger docs]) +- Add Bond hub as a device for bond entities ([@prystupa] - [#37772]) ([bond docs]) +- Add generic unavailable and last_updated metrics for prometheus ([@esev] - [#37456]) ([prometheus docs]) +- Switch rfxtrx to integration level config ([@elupus] - [#37742]) ([rfxtrx docs]) (breaking-change) +- Add support for fan direction in bond integration ([@prystupa] - [#37789]) ([bond docs]) +- Apply code quality updates to poolsense ([@haemishkyd] - [#37781]) ([poolsense docs]) (new-platform) +- Wrap possible I/O in executor ([@jjlawren] - [#37688]) ([plex docs]) +- Fix Dockerfile.dev for VS Code devcontainer ([@ajschmidt8] - [#37801]) +- Add basic support for lights in bond integration ([@prystupa] - [#37802]) ([bond docs]) (new-platform) +- Replace rfxtrx entity events with integration events ([@elupus] - [#37565]) ([rfxtrx docs]) (breaking-change) +- Bump aiokafka to 0.6.0 ([@balloob] - [#37778]) ([apache_kafka docs]) +- Drop dummy connection ([@elupus] - [#37805]) ([rfxtrx docs]) +- pydaikin version bump to 2.3.1: ([@pnguyen-tyro] - [#37682]) ([daikin docs]) +- Allow an extra packet without dts (for Arlo camera streaming) ([@dermotduffy] - [#37792]) ([stream docs]) +- Constraints pt3 ([@balloob] - [#37803]) +- Add urlencode template filter ([@jschlyter] - [#37753]) +- Add rfxtrx ability to send a raw command to device ([@elupus] - [#37793]) ([rfxtrx docs]) +- Drop white blacklist pt1 ([@balloob] - [#37816]) +- Simplify logger integration ([@balloob] - [#37780]) ([logger docs]) +- Add devolo binary sensor device class mapping ([@2Fake] - [#37350]) ([devolo_home_control docs]) +- Convert Toon expires_in value to float ([@tizzen33] - [#37716]) ([toon docs]) +- Apply bond python related feedback from a prior PR ([@prystupa] - [#37821]) ([bond docs]) +- Switch rfxtrx to config entries ([@elupus] - [#37794]) ([rfxtrx docs]) +- Update Travis-CI to use Python 3.7.1 ([@scop] - [#37830]) +- Map bond fan speeds to standard HA speeds ([@prystupa] - [#37808]) ([bond docs]) +- Apply code review changes for poolsense ([@haemishkyd] - [#37817]) ([poolsense docs]) +- Version bump for asuswrt ([@kennedyshead] - [#37827]) ([asuswrt docs]) +- Travis CI improvements ([@scop] - [#37840]) +- Bump actions/upload-artifact from v2.0.1 to 2.1.0 (dependabot - [#37841]) +- Add support for generic device (switch) to bond integration ([@prystupa] - [#37837]) ([bond docs]) (new-platform) +- Add choose script action ([@pnbruckner] - [#37818]) +- Attrs cleanups ([@scop] - [#37849]) ([camera docs]) ([cast docs]) ([device_tracker docs]) ([esphome docs]) ([mqtt docs]) ([stream docs]) ([zha docs]) +- Add mode info attributes to script and automation ([@bramkragten] - [#37815]) ([automation docs]) ([script docs]) +- Fix media_content_id attribute in Spotify integration ([@aaliddell] - [#37853]) ([spotify docs]) +- Frontend: deprecate `extra_html_url` ([@bramkragten] - [#37843]) ([frontend docs]) (breaking-change) +- Switch async_track_state_change to the faster async_track_state_change_event part 3 ([@bdraco] - [#37852]) ([bayesian docs]) ([esphome docs]) ([filter docs]) +- Adjust icons for MDI bump ([@bramkragten] - [#37730]) +- Avoid homekit crash when temperature is clamped above max value ([@bdraco] - [#37746]) ([homekit docs]) +- Always expose Toon gas sensors ([@frenck] - [#37829]) ([toon docs]) +- Use size of camera in Agent DVR ([@timmo001] - [#36375]) ([agent_dvr docs]) +- Adjust history as all scripts can now be canceled ([@bdraco] - [#37820]) ([history docs]) +- Ensure HomeKit does not throw when a linked motion sensor is removed ([@bdraco] - [#37773]) ([homekit docs]) +- Add HmIP-FSI16 to HomematicIP Cloud ([@SukramJ] - [#37715]) ([homematicip_cloud docs]) +- Fix Fibaro HC light switches not being configured as Light entities ([@danielpervan] - [#37690]) ([fibaro docs]) (breaking-change) +- Do no crash Luftdaten on additional data returned by the API ([@jbeyerstedt] - [#37763]) ([luftdaten docs]) +- Fix zone cleaning and raise config entry not ready when needed ([@dshokouhi] - [#37741]) ([neato docs]) +- bump zigpy and zha quirks ([@dmulcahey] - [#37859]) ([zha docs]) (breaking-change) +- Updated frontend to 20200714.0 ([@bramkragten] - [#37862]) ([frontend docs]) +- Have async_track_point_in_utc_time call async_run_job directly from call_at ([@bdraco] - [#37790]) +- Add support for fireplaces to bond integration ([@prystupa] - [#37850]) ([bond docs]) +- Update august manufacturer name ([@bdraco] - [#37867]) ([august docs]) +- Switch async_track_state_change to the faster async_track_state_change_event part 6 ([@bdraco] - [#37869]) ([manual_mqtt docs]) ([min_max docs]) ([mold_indicator docs]) ([plant docs]) +- Switch async_track_state_change to the faster async_track_state_change_event part 5 ([@bdraco] - [#37866]) +- Switch async_track_state_change to the faster async_track_state_change_event part 4 ([@bdraco] - [#37863]) ([derivative docs]) ([generic_thermostat docs]) ([integration docs]) ([statistics docs]) +- Switch async_track_state_change to the faster async_track_state_change_event ([@bdraco] - [#37834]) ([group docs]) +- Switch a few more async_track_state_change to the faster async_track_state_change_event ([@bdraco] - [#37833]) +- Switch universal media_player to use async_track_state_change_event ([@bdraco] - [#37832]) ([universal docs]) +- Improve handling of template platforms when entity extraction fails ([@bdraco] - [#37831]) ([template docs]) (breaking-change) +- Switch async_track_state_change to the faster async_track_state_change_event part 7 ([@bdraco] - [#37870]) ([alert docs]) ([knx docs]) ([zha docs]) +- Prefer external URLs because internal can't have valid SSL ([@balloob] - [#37872]) ([cast docs]) +- Use supervisord "group:name" when get process info ([@serhtt] - [#37678]) ([supervisord docs]) +- Don't reuse venv cache when Python version changes ([@frenck] - [#37881]) +- Fix yeelight flash ([@shenxn] - [#37743]) ([yeelight docs]) +- Improve Neato error logging by including device name ([@dshokouhi] - [#37865]) ([neato docs]) +- Stop running scripts at shutdown ([@pnbruckner] - [#37858]) +- Updated frontend to 20200715.0 ([@bramkragten] - [#37884]) ([frontend docs]) +- Adapt MQTT config flow to default birth and will ([@emontnemery] - [#37875]) ([mqtt docs]) +- Provide workaround for missing/disabled/broken IPv6 ([@bdraco] - [#37887]) ([zeroconf docs]) +- Revert breaking change for Automation ([@pvizeli] - [#37885]) ([automation docs]) + +
+ +[#31637]: https://github.com/home-assistant/core/pull/31637 +[#33852]: https://github.com/home-assistant/core/pull/33852 +[#34387]: https://github.com/home-assistant/core/pull/34387 +[#34401]: https://github.com/home-assistant/core/pull/34401 +[#35350]: https://github.com/home-assistant/core/pull/35350 +[#35411]: https://github.com/home-assistant/core/pull/35411 +[#35561]: https://github.com/home-assistant/core/pull/35561 +[#35707]: https://github.com/home-assistant/core/pull/35707 +[#35927]: https://github.com/home-assistant/core/pull/35927 +[#36054]: https://github.com/home-assistant/core/pull/36054 +[#36157]: https://github.com/home-assistant/core/pull/36157 +[#36375]: https://github.com/home-assistant/core/pull/36375 +[#36533]: https://github.com/home-assistant/core/pull/36533 +[#36539]: https://github.com/home-assistant/core/pull/36539 +[#36609]: https://github.com/home-assistant/core/pull/36609 +[#36690]: https://github.com/home-assistant/core/pull/36690 +[#36895]: https://github.com/home-assistant/core/pull/36895 +[#36955]: https://github.com/home-assistant/core/pull/36955 +[#36988]: https://github.com/home-assistant/core/pull/36988 +[#37069]: https://github.com/home-assistant/core/pull/37069 +[#37071]: https://github.com/home-assistant/core/pull/37071 +[#37072]: https://github.com/home-assistant/core/pull/37072 +[#37075]: https://github.com/home-assistant/core/pull/37075 +[#37087]: https://github.com/home-assistant/core/pull/37087 +[#37097]: https://github.com/home-assistant/core/pull/37097 +[#37105]: https://github.com/home-assistant/core/pull/37105 +[#37110]: https://github.com/home-assistant/core/pull/37110 +[#37112]: https://github.com/home-assistant/core/pull/37112 +[#37116]: https://github.com/home-assistant/core/pull/37116 +[#37117]: https://github.com/home-assistant/core/pull/37117 +[#37123]: https://github.com/home-assistant/core/pull/37123 +[#37125]: https://github.com/home-assistant/core/pull/37125 +[#37136]: https://github.com/home-assistant/core/pull/37136 +[#37141]: https://github.com/home-assistant/core/pull/37141 +[#37147]: https://github.com/home-assistant/core/pull/37147 +[#37149]: https://github.com/home-assistant/core/pull/37149 +[#37154]: https://github.com/home-assistant/core/pull/37154 +[#37157]: https://github.com/home-assistant/core/pull/37157 +[#37159]: https://github.com/home-assistant/core/pull/37159 +[#37161]: https://github.com/home-assistant/core/pull/37161 +[#37171]: https://github.com/home-assistant/core/pull/37171 +[#37172]: https://github.com/home-assistant/core/pull/37172 +[#37174]: https://github.com/home-assistant/core/pull/37174 +[#37176]: https://github.com/home-assistant/core/pull/37176 +[#37179]: https://github.com/home-assistant/core/pull/37179 +[#37181]: https://github.com/home-assistant/core/pull/37181 +[#37183]: https://github.com/home-assistant/core/pull/37183 +[#37184]: https://github.com/home-assistant/core/pull/37184 +[#37186]: https://github.com/home-assistant/core/pull/37186 +[#37188]: https://github.com/home-assistant/core/pull/37188 +[#37189]: https://github.com/home-assistant/core/pull/37189 +[#37198]: https://github.com/home-assistant/core/pull/37198 +[#37199]: https://github.com/home-assistant/core/pull/37199 +[#37200]: https://github.com/home-assistant/core/pull/37200 +[#37201]: https://github.com/home-assistant/core/pull/37201 +[#37205]: https://github.com/home-assistant/core/pull/37205 +[#37206]: https://github.com/home-assistant/core/pull/37206 +[#37207]: https://github.com/home-assistant/core/pull/37207 +[#37208]: https://github.com/home-assistant/core/pull/37208 +[#37211]: https://github.com/home-assistant/core/pull/37211 +[#37215]: https://github.com/home-assistant/core/pull/37215 +[#37217]: https://github.com/home-assistant/core/pull/37217 +[#37225]: https://github.com/home-assistant/core/pull/37225 +[#37227]: https://github.com/home-assistant/core/pull/37227 +[#37232]: https://github.com/home-assistant/core/pull/37232 +[#37234]: https://github.com/home-assistant/core/pull/37234 +[#37237]: https://github.com/home-assistant/core/pull/37237 +[#37241]: https://github.com/home-assistant/core/pull/37241 +[#37250]: https://github.com/home-assistant/core/pull/37250 +[#37251]: https://github.com/home-assistant/core/pull/37251 +[#37252]: https://github.com/home-assistant/core/pull/37252 +[#37253]: https://github.com/home-assistant/core/pull/37253 +[#37255]: https://github.com/home-assistant/core/pull/37255 +[#37256]: https://github.com/home-assistant/core/pull/37256 +[#37260]: https://github.com/home-assistant/core/pull/37260 +[#37266]: https://github.com/home-assistant/core/pull/37266 +[#37268]: https://github.com/home-assistant/core/pull/37268 +[#37270]: https://github.com/home-assistant/core/pull/37270 +[#37271]: https://github.com/home-assistant/core/pull/37271 +[#37273]: https://github.com/home-assistant/core/pull/37273 +[#37275]: https://github.com/home-assistant/core/pull/37275 +[#37276]: https://github.com/home-assistant/core/pull/37276 +[#37289]: https://github.com/home-assistant/core/pull/37289 +[#37304]: https://github.com/home-assistant/core/pull/37304 +[#37308]: https://github.com/home-assistant/core/pull/37308 +[#37309]: https://github.com/home-assistant/core/pull/37309 +[#37313]: https://github.com/home-assistant/core/pull/37313 +[#37315]: https://github.com/home-assistant/core/pull/37315 +[#37316]: https://github.com/home-assistant/core/pull/37316 +[#37322]: https://github.com/home-assistant/core/pull/37322 +[#37324]: https://github.com/home-assistant/core/pull/37324 +[#37325]: https://github.com/home-assistant/core/pull/37325 +[#37336]: https://github.com/home-assistant/core/pull/37336 +[#37339]: https://github.com/home-assistant/core/pull/37339 +[#37346]: https://github.com/home-assistant/core/pull/37346 +[#37350]: https://github.com/home-assistant/core/pull/37350 +[#37363]: https://github.com/home-assistant/core/pull/37363 +[#37371]: https://github.com/home-assistant/core/pull/37371 +[#37374]: https://github.com/home-assistant/core/pull/37374 +[#37380]: https://github.com/home-assistant/core/pull/37380 +[#37390]: https://github.com/home-assistant/core/pull/37390 +[#37391]: https://github.com/home-assistant/core/pull/37391 +[#37394]: https://github.com/home-assistant/core/pull/37394 +[#37396]: https://github.com/home-assistant/core/pull/37396 +[#37397]: https://github.com/home-assistant/core/pull/37397 +[#37401]: https://github.com/home-assistant/core/pull/37401 +[#37405]: https://github.com/home-assistant/core/pull/37405 +[#37419]: https://github.com/home-assistant/core/pull/37419 +[#37420]: https://github.com/home-assistant/core/pull/37420 +[#37421]: https://github.com/home-assistant/core/pull/37421 +[#37423]: https://github.com/home-assistant/core/pull/37423 +[#37424]: https://github.com/home-assistant/core/pull/37424 +[#37425]: https://github.com/home-assistant/core/pull/37425 +[#37426]: https://github.com/home-assistant/core/pull/37426 +[#37427]: https://github.com/home-assistant/core/pull/37427 +[#37428]: https://github.com/home-assistant/core/pull/37428 +[#37429]: https://github.com/home-assistant/core/pull/37429 +[#37430]: https://github.com/home-assistant/core/pull/37430 +[#37432]: https://github.com/home-assistant/core/pull/37432 +[#37433]: https://github.com/home-assistant/core/pull/37433 +[#37438]: https://github.com/home-assistant/core/pull/37438 +[#37439]: https://github.com/home-assistant/core/pull/37439 +[#37440]: https://github.com/home-assistant/core/pull/37440 +[#37441]: https://github.com/home-assistant/core/pull/37441 +[#37445]: https://github.com/home-assistant/core/pull/37445 +[#37446]: https://github.com/home-assistant/core/pull/37446 +[#37450]: https://github.com/home-assistant/core/pull/37450 +[#37454]: https://github.com/home-assistant/core/pull/37454 +[#37455]: https://github.com/home-assistant/core/pull/37455 +[#37456]: https://github.com/home-assistant/core/pull/37456 +[#37457]: https://github.com/home-assistant/core/pull/37457 +[#37461]: https://github.com/home-assistant/core/pull/37461 +[#37463]: https://github.com/home-assistant/core/pull/37463 +[#37465]: https://github.com/home-assistant/core/pull/37465 +[#37468]: https://github.com/home-assistant/core/pull/37468 +[#37471]: https://github.com/home-assistant/core/pull/37471 +[#37472]: https://github.com/home-assistant/core/pull/37472 +[#37473]: https://github.com/home-assistant/core/pull/37473 +[#37477]: https://github.com/home-assistant/core/pull/37477 +[#37479]: https://github.com/home-assistant/core/pull/37479 +[#37480]: https://github.com/home-assistant/core/pull/37480 +[#37483]: https://github.com/home-assistant/core/pull/37483 +[#37485]: https://github.com/home-assistant/core/pull/37485 +[#37486]: https://github.com/home-assistant/core/pull/37486 +[#37487]: https://github.com/home-assistant/core/pull/37487 +[#37488]: https://github.com/home-assistant/core/pull/37488 +[#37490]: https://github.com/home-assistant/core/pull/37490 +[#37494]: https://github.com/home-assistant/core/pull/37494 +[#37496]: https://github.com/home-assistant/core/pull/37496 +[#37497]: https://github.com/home-assistant/core/pull/37497 +[#37500]: https://github.com/home-assistant/core/pull/37500 +[#37501]: https://github.com/home-assistant/core/pull/37501 +[#37505]: https://github.com/home-assistant/core/pull/37505 +[#37508]: https://github.com/home-assistant/core/pull/37508 +[#37510]: https://github.com/home-assistant/core/pull/37510 +[#37512]: https://github.com/home-assistant/core/pull/37512 +[#37515]: https://github.com/home-assistant/core/pull/37515 +[#37516]: https://github.com/home-assistant/core/pull/37516 +[#37523]: https://github.com/home-assistant/core/pull/37523 +[#37527]: https://github.com/home-assistant/core/pull/37527 +[#37530]: https://github.com/home-assistant/core/pull/37530 +[#37531]: https://github.com/home-assistant/core/pull/37531 +[#37535]: https://github.com/home-assistant/core/pull/37535 +[#37536]: https://github.com/home-assistant/core/pull/37536 +[#37550]: https://github.com/home-assistant/core/pull/37550 +[#37551]: https://github.com/home-assistant/core/pull/37551 +[#37555]: https://github.com/home-assistant/core/pull/37555 +[#37556]: https://github.com/home-assistant/core/pull/37556 +[#37559]: https://github.com/home-assistant/core/pull/37559 +[#37560]: https://github.com/home-assistant/core/pull/37560 +[#37565]: https://github.com/home-assistant/core/pull/37565 +[#37581]: https://github.com/home-assistant/core/pull/37581 +[#37587]: https://github.com/home-assistant/core/pull/37587 +[#37588]: https://github.com/home-assistant/core/pull/37588 +[#37589]: https://github.com/home-assistant/core/pull/37589 +[#37590]: https://github.com/home-assistant/core/pull/37590 +[#37591]: https://github.com/home-assistant/core/pull/37591 +[#37592]: https://github.com/home-assistant/core/pull/37592 +[#37597]: https://github.com/home-assistant/core/pull/37597 +[#37598]: https://github.com/home-assistant/core/pull/37598 +[#37599]: https://github.com/home-assistant/core/pull/37599 +[#37602]: https://github.com/home-assistant/core/pull/37602 +[#37605]: https://github.com/home-assistant/core/pull/37605 +[#37613]: https://github.com/home-assistant/core/pull/37613 +[#37617]: https://github.com/home-assistant/core/pull/37617 +[#37618]: https://github.com/home-assistant/core/pull/37618 +[#37619]: https://github.com/home-assistant/core/pull/37619 +[#37620]: https://github.com/home-assistant/core/pull/37620 +[#37621]: https://github.com/home-assistant/core/pull/37621 +[#37628]: https://github.com/home-assistant/core/pull/37628 +[#37629]: https://github.com/home-assistant/core/pull/37629 +[#37630]: https://github.com/home-assistant/core/pull/37630 +[#37637]: https://github.com/home-assistant/core/pull/37637 +[#37640]: https://github.com/home-assistant/core/pull/37640 +[#37642]: https://github.com/home-assistant/core/pull/37642 +[#37644]: https://github.com/home-assistant/core/pull/37644 +[#37650]: https://github.com/home-assistant/core/pull/37650 +[#37659]: https://github.com/home-assistant/core/pull/37659 +[#37665]: https://github.com/home-assistant/core/pull/37665 +[#37666]: https://github.com/home-assistant/core/pull/37666 +[#37667]: https://github.com/home-assistant/core/pull/37667 +[#37677]: https://github.com/home-assistant/core/pull/37677 +[#37678]: https://github.com/home-assistant/core/pull/37678 +[#37682]: https://github.com/home-assistant/core/pull/37682 +[#37688]: https://github.com/home-assistant/core/pull/37688 +[#37690]: https://github.com/home-assistant/core/pull/37690 +[#37691]: https://github.com/home-assistant/core/pull/37691 +[#37694]: https://github.com/home-assistant/core/pull/37694 +[#37697]: https://github.com/home-assistant/core/pull/37697 +[#37698]: https://github.com/home-assistant/core/pull/37698 +[#37699]: https://github.com/home-assistant/core/pull/37699 +[#37700]: https://github.com/home-assistant/core/pull/37700 +[#37703]: https://github.com/home-assistant/core/pull/37703 +[#37706]: https://github.com/home-assistant/core/pull/37706 +[#37709]: https://github.com/home-assistant/core/pull/37709 +[#37710]: https://github.com/home-assistant/core/pull/37710 +[#37715]: https://github.com/home-assistant/core/pull/37715 +[#37716]: https://github.com/home-assistant/core/pull/37716 +[#37729]: https://github.com/home-assistant/core/pull/37729 +[#37730]: https://github.com/home-assistant/core/pull/37730 +[#37735]: https://github.com/home-assistant/core/pull/37735 +[#37738]: https://github.com/home-assistant/core/pull/37738 +[#37740]: https://github.com/home-assistant/core/pull/37740 +[#37741]: https://github.com/home-assistant/core/pull/37741 +[#37742]: https://github.com/home-assistant/core/pull/37742 +[#37743]: https://github.com/home-assistant/core/pull/37743 +[#37746]: https://github.com/home-assistant/core/pull/37746 +[#37748]: https://github.com/home-assistant/core/pull/37748 +[#37749]: https://github.com/home-assistant/core/pull/37749 +[#37751]: https://github.com/home-assistant/core/pull/37751 +[#37753]: https://github.com/home-assistant/core/pull/37753 +[#37759]: https://github.com/home-assistant/core/pull/37759 +[#37763]: https://github.com/home-assistant/core/pull/37763 +[#37764]: https://github.com/home-assistant/core/pull/37764 +[#37771]: https://github.com/home-assistant/core/pull/37771 +[#37772]: https://github.com/home-assistant/core/pull/37772 +[#37773]: https://github.com/home-assistant/core/pull/37773 +[#37776]: https://github.com/home-assistant/core/pull/37776 +[#37778]: https://github.com/home-assistant/core/pull/37778 +[#37780]: https://github.com/home-assistant/core/pull/37780 +[#37781]: https://github.com/home-assistant/core/pull/37781 +[#37789]: https://github.com/home-assistant/core/pull/37789 +[#37790]: https://github.com/home-assistant/core/pull/37790 +[#37792]: https://github.com/home-assistant/core/pull/37792 +[#37793]: https://github.com/home-assistant/core/pull/37793 +[#37794]: https://github.com/home-assistant/core/pull/37794 +[#37801]: https://github.com/home-assistant/core/pull/37801 +[#37802]: https://github.com/home-assistant/core/pull/37802 +[#37803]: https://github.com/home-assistant/core/pull/37803 +[#37805]: https://github.com/home-assistant/core/pull/37805 +[#37808]: https://github.com/home-assistant/core/pull/37808 +[#37815]: https://github.com/home-assistant/core/pull/37815 +[#37816]: https://github.com/home-assistant/core/pull/37816 +[#37817]: https://github.com/home-assistant/core/pull/37817 +[#37818]: https://github.com/home-assistant/core/pull/37818 +[#37820]: https://github.com/home-assistant/core/pull/37820 +[#37821]: https://github.com/home-assistant/core/pull/37821 +[#37827]: https://github.com/home-assistant/core/pull/37827 +[#37829]: https://github.com/home-assistant/core/pull/37829 +[#37830]: https://github.com/home-assistant/core/pull/37830 +[#37831]: https://github.com/home-assistant/core/pull/37831 +[#37832]: https://github.com/home-assistant/core/pull/37832 +[#37833]: https://github.com/home-assistant/core/pull/37833 +[#37834]: https://github.com/home-assistant/core/pull/37834 +[#37837]: https://github.com/home-assistant/core/pull/37837 +[#37840]: https://github.com/home-assistant/core/pull/37840 +[#37841]: https://github.com/home-assistant/core/pull/37841 +[#37843]: https://github.com/home-assistant/core/pull/37843 +[#37849]: https://github.com/home-assistant/core/pull/37849 +[#37850]: https://github.com/home-assistant/core/pull/37850 +[#37852]: https://github.com/home-assistant/core/pull/37852 +[#37853]: https://github.com/home-assistant/core/pull/37853 +[#37858]: https://github.com/home-assistant/core/pull/37858 +[#37859]: https://github.com/home-assistant/core/pull/37859 +[#37862]: https://github.com/home-assistant/core/pull/37862 +[#37863]: https://github.com/home-assistant/core/pull/37863 +[#37865]: https://github.com/home-assistant/core/pull/37865 +[#37866]: https://github.com/home-assistant/core/pull/37866 +[#37867]: https://github.com/home-assistant/core/pull/37867 +[#37869]: https://github.com/home-assistant/core/pull/37869 +[#37870]: https://github.com/home-assistant/core/pull/37870 +[#37872]: https://github.com/home-assistant/core/pull/37872 +[#37875]: https://github.com/home-assistant/core/pull/37875 +[#37881]: https://github.com/home-assistant/core/pull/37881 +[#37884]: https://github.com/home-assistant/core/pull/37884 +[#37885]: https://github.com/home-assistant/core/pull/37885 +[#37887]: https://github.com/home-assistant/core/pull/37887 +[@2Fake]: https://github.com/2Fake +[@CoMPaTech]: https://github.com/CoMPaTech +[@DarkFox]: https://github.com/DarkFox +[@GMTA]: https://github.com/GMTA +[@Harryjholmes]: https://github.com/Harryjholmes +[@InduPrakash]: https://github.com/InduPrakash +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kdemontf]: https://github.com/Kdemontf +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@Michsior14]: https://github.com/Michsior14 +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@Quentame]: https://github.com/Quentame +[@RogerSelwyn]: https://github.com/RogerSelwyn +[@Shulyaka]: https://github.com/Shulyaka +[@SukramJ]: https://github.com/SukramJ +[@TheLastGimbus]: https://github.com/TheLastGimbus +[@aaliddell]: https://github.com/aaliddell +[@ajschmidt8]: https://github.com/ajschmidt8 +[@akloeckner]: https://github.com/akloeckner +[@alandtse]: https://github.com/alandtse +[@alexhardwicke]: https://github.com/alexhardwicke +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bednar]: https://github.com/bednar +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@brefra]: https://github.com/brefra +[@bsmappee]: https://github.com/bsmappee +[@cgtobi]: https://github.com/cgtobi +[@ctalkington]: https://github.com/ctalkington +[@danielpervan]: https://github.com/danielpervan +[@davet2001]: https://github.com/davet2001 +[@dermotduffy]: https://github.com/dermotduffy +[@divanikus]: https://github.com/divanikus +[@djpremier]: https://github.com/djpremier +[@dmulcahey]: https://github.com/dmulcahey +[@dshokouhi]: https://github.com/dshokouhi +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emlove]: https://github.com/emlove +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@esev]: https://github.com/esev +[@firstof9]: https://github.com/firstof9 +[@frenck]: https://github.com/frenck +[@gagebenne]: https://github.com/gagebenne +[@guillempages]: https://github.com/guillempages +[@haemishkyd]: https://github.com/haemishkyd +[@jberstler]: https://github.com/jberstler +[@jbeyerstedt]: https://github.com/jbeyerstedt +[@jduquennoy]: https://github.com/jduquennoy +[@jfearon]: https://github.com/jfearon +[@jjlawren]: https://github.com/jjlawren +[@jschlyter]: https://github.com/jschlyter +[@jurgenhaas]: https://github.com/jurgenhaas +[@kennedyshead]: https://github.com/kennedyshead +[@knyar]: https://github.com/knyar +[@ktnrg45]: https://github.com/ktnrg45 +[@ludeeus]: https://github.com/ludeeus +[@marcelveldt]: https://github.com/marcelveldt +[@mdegat01]: https://github.com/mdegat01 +[@michaeldavie]: https://github.com/michaeldavie +[@nkgilley]: https://github.com/nkgilley +[@outadoc]: https://github.com/outadoc +[@pavoni]: https://github.com/pavoni +[@pilehave]: https://github.com/pilehave +[@pnbruckner]: https://github.com/pnbruckner +[@pnguyen-tyro]: https://github.com/pnguyen-tyro +[@prystupa]: https://github.com/prystupa +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@robbiet480]: https://github.com/robbiet480 +[@scop]: https://github.com/scop +[@serhtt]: https://github.com/serhtt +[@shenxn]: https://github.com/shenxn +[@shermdog]: https://github.com/shermdog +[@smugleafdev]: https://github.com/smugleafdev +[@starkillerOG]: https://github.com/starkillerOG +[@timmo001]: https://github.com/timmo001 +[@timvancann]: https://github.com/timvancann +[@tizzen33]: https://github.com/tizzen33 +[@zhulik]: https://github.com/zhulik +[acmeda docs]: /integrations/acmeda/ +[ads docs]: /integrations/ads/ +[agent_dvr docs]: /integrations/agent_dvr/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alert docs]: /integrations/alert/ +[amcrest docs]: /integrations/amcrest/ +[androidtv docs]: /integrations/androidtv/ +[apache_kafka docs]: /integrations/apache_kafka/ +[asuswrt docs]: /integrations/asuswrt/ +[august docs]: /integrations/august/ +[automation docs]: /integrations/automation/ +[avri docs]: /integrations/avri/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[bayesian docs]: /integrations/bayesian/ +[bond docs]: /integrations/bond/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[daikin docs]: /integrations/daikin/ +[darksky docs]: /integrations/darksky/ +[datadog docs]: /integrations/datadog/ +[debugpy docs]: /integrations/debugpy/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[derivative docs]: /integrations/derivative/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[dexcom docs]: /integrations/dexcom/ +[directv docs]: /integrations/directv/ +[discovery docs]: /integrations/discovery/ +[doorbird docs]: /integrations/doorbird/ +[ecobee docs]: /integrations/ecobee/ +[emulated_hue docs]: /integrations/emulated_hue/ +[enocean docs]: /integrations/enocean/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[fan docs]: /integrations/fan/ +[fibaro docs]: /integrations/fibaro/ +[filter docs]: /integrations/filter/ +[flux docs]: /integrations/flux/ +[foobot docs]: /integrations/foobot/ +[forked_daapd docs]: /integrations/forked_daapd/ +[freebox docs]: /integrations/freebox/ +[frontend docs]: /integrations/frontend/ +[garmin_connect docs]: /integrations/garmin_connect/ +[gdacs docs]: /integrations/gdacs/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geniushub docs]: /integrations/geniushub/ +[geo_json_events docs]: /integrations/geo_json_events/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[google_assistant docs]: /integrations/google_assistant/ +[google_pubsub docs]: /integrations/google_pubsub/ +[group docs]: /integrations/group/ +[guardian docs]: /integrations/guardian/ +[harmony docs]: /integrations/harmony/ +[history docs]: /integrations/history/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[hue docs]: /integrations/hue/ +[influxdb docs]: /integrations/influxdb/ +[input_number docs]: /integrations/input_number/ +[integration docs]: /integrations/integration/ +[ipp docs]: /integrations/ipp/ +[joaoapps_join docs]: /integrations/joaoapps_join/ +[knx docs]: /integrations/knx/ +[logger docs]: /integrations/logger/ +[loopenergy docs]: /integrations/loopenergy/ +[luftdaten docs]: /integrations/luftdaten/ +[manual_mqtt docs]: /integrations/manual_mqtt/ +[min_max docs]: /integrations/min_max/ +[mold_indicator docs]: /integrations/mold_indicator/ +[mqtt docs]: /integrations/mqtt/ +[neato docs]: /integrations/neato/ +[netatmo docs]: /integrations/netatmo/ +[netdata docs]: /integrations/netdata/ +[nws docs]: /integrations/nws/ +[onvif docs]: /integrations/onvif/ +[ozw docs]: /integrations/ozw/ +[pioneer docs]: /integrations/pioneer/ +[plant docs]: /integrations/plant/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[plum_lightpad docs]: /integrations/plum_lightpad/ +[poolsense docs]: /integrations/poolsense/ +[prometheus docs]: /integrations/prometheus/ +[ps4 docs]: /integrations/ps4/ +[recorder docs]: /integrations/recorder/ +[rejseplanen docs]: /integrations/rejseplanen/ +[remote_rpi_gpio docs]: /integrations/remote_rpi_gpio/ +[rfxtrx docs]: /integrations/rfxtrx/ +[script docs]: /integrations/script/ +[slack docs]: /integrations/slack/ +[smappee docs]: /integrations/smappee/ +[smarthab docs]: /integrations/smarthab/ +[sms docs]: /integrations/sms/ +[solaredge docs]: /integrations/solaredge/ +[sonarr docs]: /integrations/sonarr/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[statistics docs]: /integrations/statistics/ +[stream docs]: /integrations/stream/ +[supervisord docs]: /integrations/supervisord/ +[syncthru docs]: /integrations/syncthru/ +[tado docs]: /integrations/tado/ +[template docs]: /integrations/template/ +[tesla docs]: /integrations/tesla/ +[toon docs]: /integrations/toon/ +[touchline docs]: /integrations/touchline/ +[tplink docs]: /integrations/tplink/ +[transmission docs]: /integrations/transmission/ +[tuya docs]: /integrations/tuya/ +[unifi docs]: /integrations/unifi/ +[universal docs]: /integrations/universal/ +[verisure docs]: /integrations/verisure/ +[vizio docs]: /integrations/vizio/ +[volumio docs]: /integrations/volumio/ +[worldclock docs]: /integrations/worldclock/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yeelight docs]: /integrations/yeelight/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zha docs]: /integrations/zha/ diff --git a/source/images/blog/2020-07-0.113/automation-modes.png b/source/images/blog/2020-07-0.113/automation-modes.png new file mode 100644 index 0000000000000000000000000000000000000000..1343ce46e07ca33f90c7d5020e12d3c82f457b17 GIT binary patch literal 14809 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 YU!pL3J(J(SnJkbTL|M98(m3$H0lU!QUH||9 literal 0 HcmV?d00001 From e8aeee1bf810b879f21ca2708a38f0a6da3840d2 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 17 Jul 2020 11:41:09 +0200 Subject: [PATCH 02/22] Add theme changes to release notes (#14022) --- source/_posts/2020-07-01-release-113.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index b0d7bd83f1f..388a11665e5 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -698,6 +698,19 @@ modules as a replacement.

+
+ Frontend: Themes +

+ +The theme variable `paper-card-background-color` is removed. You can use `ha-card-background` or `card-background-color` as a replacement. + +In general, all variables that start with `paper` will be removed at some point. + +([@bramkragten] - [frontend#6377](https://github.com/home-assistant/frontend/pull/6377)) ([frontend docs]) + +

+
+ ## All changes
From 7a8d200fe2e02429ce9b8ca1267c45c2b65e7caa Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Fri, 17 Jul 2020 14:49:46 +0200 Subject: [PATCH 03/22] Update 2020-07-01-release-113.markdown (#14020) Adjust rfxtrx --- source/_posts/2020-07-01-release-113.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index 388a11665e5..8f3dec50357 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -652,7 +652,6 @@ the Slack integration documentation. RFXCOM RFXtrx

-- Configuration of rfxtrx devices now happens through the Integration UI page. - Configuration of entity name must now be done inside home assistant - Multiple entities may be generated for a single device - The events signalled from entity id's are removed in favor of events from an integration level. From 9199debf282fb10225d6d8e06686631a09463109 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Wed, 22 Jul 2020 08:55:31 -0500 Subject: [PATCH 04/22] Explain what happens to calling script when called script has errors (#14059) --- source/_integrations/script.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index 9f7dbe592e4..e74ae03f9ef 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -203,14 +203,17 @@ script: ### Waiting for Script to Complete When calling a script "directly" (e.g., `script.NAME`) the calling script will wait for the called script to finish. +If any errors occur that cause the called script to abort, the calling script will be aborted as well. When calling a script (or multiple scripts) via the `script.turn_on` service the calling script does _not_ wait. It starts the scripts, in the order listed, and continues as soon as the last script is started. +Any errors that occur in the called scripts that cause them to abort will _not_ affect the calling script.

Following is an example of the calling script not waiting. It performs some other operations while the called script runs "in the background." Then it later waits for the called script to complete via a `wait_template`. +This technique can also be used for the calling script to wait for the called script, but _not_ be aborted if the called script aborts due to errors. {% raw %} ```yaml From 8face11418a1f1cd7eb3a5ddddad1b7c47552ab8 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 22 Jul 2020 17:37:04 +0200 Subject: [PATCH 05/22] Release blog post 0.113 (#14056) --- source/_posts/2020-07-01-release-113.markdown | 160 +++++++++++++++--- source/images/blog/2020-07-0.113/social.png | Bin 0 -> 117249 bytes 2 files changed, 135 insertions(+), 25 deletions(-) create mode 100644 source/images/blog/2020-07-0.113/social.png diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index 8f3dec50357..04f9adca2e4 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "0.113: Beta release notes" -description: "0.113: Beta release notes" -date: 2020-07-14 00:00:00 +title: "0.113: Automations & Scripts, and even more performance!" +description: "Automate with sub-second precision in different running modes, use loops, repeats, choose and cool down. New MDI icons and a generally faster performance with lower CPU usage" +date: 2020-07-22 00:00:00 date_formatted: "July 22, 2020" author: Franck Nijhof author_twitter: frenck @@ -11,18 +11,7 @@ categories: Release-Notes og_image: /images/blog/2020-07-0.113/social.png --- - - -Beta release notes for 0.113.0 - -Please be sure to report issues on our GitHub issue tracker: - -Issues with core & integrations: -Issues with the frontend/UI: - -Issues introduced in this beta, are generally picked up with priority. - -## Introduction + Another special, themed, release inbound! @@ -46,6 +35,22 @@ Enjoy the release! ../Frenck +## Ludeeus joins Nabu Casa + +Today we're happy to announce that [@ludeeus] is joining Nabu Casa to work +full-time on Home Assistant! + +Ludeeus has been a core contributor for a long time working on the Supervisor +panel and different bits of the frontend. He is, however, mainly known as the +creator of the [Home Assistant Community Store (HACS)][hacs]. + +We're looking forward to seeing what he can do now that he is able to focus +full-time on Home Assistant. + +Welcome [@ludeeus]! + +[hacs]: https://hacs.xyz/ + ## Automations & Scripts This release brings changes to our automations and scripts. Before we start with @@ -258,6 +263,29 @@ More information about the chooser can be found in the [documentation][chooser]. [chooser]: /docs/scripts/#choose-a-group-of-actions +### Automations & Scripts: Sub-second precision + +Thanks to a bunch of optimizations done this release, which is discussed later +in this blog post, we now have sub-second precision available to our delays. + +This precision is helpful in case you want a delay that is less than a second, +for example, 500 milliseconds. + +An example script that toggles the light every 500 milliseconds 10 times. + +```yaml +script: + blink_light: + sequence: + repeat: + count: 10 + sequence: + - service: light.toggle + entity_id: light.bulb + - delay: + milliseconds: 500 +``` + ### Automations & Scripts: Bonus! Cool down An often requested feature is to allow for a cool down time on an automation. @@ -379,18 +407,17 @@ most installations. ## New Integrations -- Create PoolSense integration ([@haemishkyd] - [#35561]) ([poolsense docs]) -- Add Dexcom Integration ([@gagebenne] - [#33852]) ([dexcom docs]) -- Add new integration for Bond hub ([@prystupa] - [#37477]) ([bond docs]) +Three new integration added this release: + +- [PoolSense][poolsense docs], added by [@haemishkyd] +- [Dexcom][dexcom docs], added by [@gagebenne] +- [Bond hub][bond docs], added by [@prystupa] ## New Platforms -- Add support for window covers to ozw integration ([@Michsior14] - [#37217]) ([ozw docs]) -- Support Fan domain in Bond integration ([@prystupa] - [#37703]) ([bond docs]) -- Updates to poolsense integration ([@haemishkyd] - [#37613]) ([poolsense docs]) -- Apply code quality updates to poolsense ([@haemishkyd] - [#37781]) ([poolsense docs]) -- Add basic support for lights in bond integration ([@prystupa] - [#37802]) ([bond docs]) -- Add support for generic device (switch) to bond integration ([@prystupa] - [#37837]) ([bond docs]) +The following integration got support for a new platform: + +- [OpenZWave][ozw docs] has now support for window covers, added by [@Michsior14] ## Integrations now available to set up from the UI @@ -530,6 +557,22 @@ Sorry for the inconvenience.

+
+ ZHA with Hue remotes +

+ +Previously ZHA was displaying power as kilowatt (kW) for some devices +(the ones with the SmartEnergy cluster), but since watts are more common as +household power unit, ZHA will start using W for those instead. + +If you have any calculations or accumulation based on power sensors, +they may need to be updated. + +([@abmantis] - [#37896]) ([zha docs]) + +

+
+
Philips Hue

@@ -894,7 +937,7 @@ In general, all variables that start with `paper` will be removed at some point. - Check buckets/dbs for validity during Influx sensor startup ([@mdegat01] - [#37391]) ([influxdb docs]) - Fix missing Guardian service strings ([@bachya] - [#37659]) ([guardian docs]) - Apply more suggestions from bond code review ([@ctalkington] - [#37592]) ([bond docs]) -- Set MQTT sensor to state unavailable when value expires ([@emontnemery] - [#36609]) ([mqtt docs]) +- Set MQTT sensor to state unavailable when value expires ([@emontnemery] - [#36609]) ([mqtt docs]) (breaking-change) - Convert syncthru to config flow and native SSDP discovery ([@scop] - [#36690]) ([discovery docs]) ([syncthru docs]) (breaking-change) - Use "next_state" attr instead of "post_pending" for ArmDisarm trait ([@engrbm87] - [#37325]) ([google_assistant docs]) - Add ozw usercode support ([@firstof9] - [#37390]) ([ozw docs]) @@ -1002,6 +1045,34 @@ In general, all variables that start with `paper` will be removed at some point. - Adapt MQTT config flow to default birth and will ([@emontnemery] - [#37875]) ([mqtt docs]) - Provide workaround for missing/disabled/broken IPv6 ([@bdraco] - [#37887]) ([zeroconf docs]) - Revert breaking change for Automation ([@pvizeli] - [#37885]) ([automation docs]) +- Update frontend to 20200715.1 ([@bramkragten] - [#37888]) ([frontend docs]) (beta fix) +- Fix swapped variables deprecation in log message ([@frenck] - [#37901]) (beta fix) +- Fix automation & script restart mode bug ([@pnbruckner] - [#37909]) (beta fix) +- Updated frontend to 20200716.0 ([@bramkragten] - [#37910]) ([frontend docs]) (beta fix) +- Fix ZHA electrical measurement sensor initialization ([@Adminiuga] - [#37915]) ([zha docs]) (beta fix) +- Fix unavailable when value is zero ([@cgtobi] - [#37918]) ([netatmo docs]) (beta fix) +- Upgrade pysonos to 0.0.32 ([@amelchio] - [#37923]) ([sonos docs]) (beta fix) +- Ensure a state change tracker setup from inside a state change listener does not fire immediately ([@bdraco] - [#37924]) (beta fix) +- Rfxtrx fixes for beta ([@elupus] - [#37957]) ([rfxtrx docs]) (beta fix) +- Add ozw support for single setpoint thermostat devices ([@marcelveldt] - [#37713]) ([ozw docs]) (beta fix) +- Fix bugs updating state of `hdmi_cec` switch ([@rajlaud] - [#37786]) ([hdmi_cec docs]) (beta fix) +- fix ([@bdraco] - [#37889]) ([homekit docs]) (beta fix) +- Change ZHA power unit from kW to W ([@abmantis] - [#37896]) ([zha docs]) (breaking-change) (beta fix) +- Fix: Passes secure parameter when setting up Nuki (#36844) ([@SeraphimSerapis] - [#37932]) ([nuki docs]) (beta fix) +- Fix Sonos speaker lookup for Plex ([@jjlawren] - [#37942]) ([plex docs]) ([sonos docs]) (beta fix) +- Force updates for ZHA light group entity members ([@dmulcahey] - [#37961]) ([zha docs]) (beta fix) +- Bump pychromecast to 7.1.2 ([@emontnemery] - [#37976]) ([cast docs]) (beta fix) +- Force updates for ZHA light group entity members (Part 2) ([@dmulcahey] - [#37995]) ([zha docs]) (beta fix) +- Rfxtrx fixup restore ([@elupus] - [#38039]) ([rfxtrx docs]) (beta fix) +- Make nested get() statements safe ([@michaeldavie] - [#37965]) ([environment_canada docs]) (beta fix) +- Fix issue with Insteon events not firing correctly ([@teharris1] - [#37974]) ([insteon docs]) (beta fix) +- Fix notify.slack service calls using data_template ([@jnewland] - [#37980]) ([slack docs]) (beta fix) +- Check if robot has boundaries to update ([@dshokouhi] - [#38030]) ([neato docs]) (beta fix) +- Correct arguments to MQTT will_set ([@emontnemery] - [#38036]) ([mqtt docs]) (beta fix) +- Use keywords for MQTT birth and will ([@emontnemery] - [#38040]) ([mqtt docs]) (beta fix) +- ZHA dependencies bump bellows to 0.18.0 ([@Adminiuga] - [#38043]) ([zha docs]) (beta fix) +- Add MQTT to constraints file ([@balloob] - [#38049]) (beta fix) +- Fix rfxtrx stop after first non light ([@elupus] - [#38057]) ([rfxtrx docs]) (beta fix)

@@ -1221,6 +1292,7 @@ In general, all variables that start with `paper` will be removed at some point. [#37706]: https://github.com/home-assistant/core/pull/37706 [#37709]: https://github.com/home-assistant/core/pull/37709 [#37710]: https://github.com/home-assistant/core/pull/37710 +[#37713]: https://github.com/home-assistant/core/pull/37713 [#37715]: https://github.com/home-assistant/core/pull/37715 [#37716]: https://github.com/home-assistant/core/pull/37716 [#37729]: https://github.com/home-assistant/core/pull/37729 @@ -1246,6 +1318,7 @@ In general, all variables that start with `paper` will be removed at some point. [#37778]: https://github.com/home-assistant/core/pull/37778 [#37780]: https://github.com/home-assistant/core/pull/37780 [#37781]: https://github.com/home-assistant/core/pull/37781 +[#37786]: https://github.com/home-assistant/core/pull/37786 [#37789]: https://github.com/home-assistant/core/pull/37789 [#37790]: https://github.com/home-assistant/core/pull/37790 [#37792]: https://github.com/home-assistant/core/pull/37792 @@ -1292,7 +1365,34 @@ In general, all variables that start with `paper` will be removed at some point. [#37884]: https://github.com/home-assistant/core/pull/37884 [#37885]: https://github.com/home-assistant/core/pull/37885 [#37887]: https://github.com/home-assistant/core/pull/37887 +[#37888]: https://github.com/home-assistant/core/pull/37888 +[#37889]: https://github.com/home-assistant/core/pull/37889 +[#37896]: https://github.com/home-assistant/core/pull/37896 +[#37901]: https://github.com/home-assistant/core/pull/37901 +[#37909]: https://github.com/home-assistant/core/pull/37909 +[#37910]: https://github.com/home-assistant/core/pull/37910 +[#37915]: https://github.com/home-assistant/core/pull/37915 +[#37918]: https://github.com/home-assistant/core/pull/37918 +[#37923]: https://github.com/home-assistant/core/pull/37923 +[#37924]: https://github.com/home-assistant/core/pull/37924 +[#37932]: https://github.com/home-assistant/core/pull/37932 +[#37942]: https://github.com/home-assistant/core/pull/37942 +[#37957]: https://github.com/home-assistant/core/pull/37957 +[#37961]: https://github.com/home-assistant/core/pull/37961 +[#37965]: https://github.com/home-assistant/core/pull/37965 +[#37974]: https://github.com/home-assistant/core/pull/37974 +[#37976]: https://github.com/home-assistant/core/pull/37976 +[#37980]: https://github.com/home-assistant/core/pull/37980 +[#37995]: https://github.com/home-assistant/core/pull/37995 +[#38030]: https://github.com/home-assistant/core/pull/38030 +[#38036]: https://github.com/home-assistant/core/pull/38036 +[#38039]: https://github.com/home-assistant/core/pull/38039 +[#38040]: https://github.com/home-assistant/core/pull/38040 +[#38043]: https://github.com/home-assistant/core/pull/38043 +[#38049]: https://github.com/home-assistant/core/pull/38049 +[#38057]: https://github.com/home-assistant/core/pull/38057 [@2Fake]: https://github.com/2Fake +[@Adminiuga]: https://github.com/Adminiuga [@CoMPaTech]: https://github.com/CoMPaTech [@DarkFox]: https://github.com/DarkFox [@GMTA]: https://github.com/GMTA @@ -1307,14 +1407,17 @@ In general, all variables that start with `paper` will be removed at some point. [@PaulAnnekov]: https://github.com/PaulAnnekov [@Quentame]: https://github.com/Quentame [@RogerSelwyn]: https://github.com/RogerSelwyn +[@SeraphimSerapis]: https://github.com/SeraphimSerapis [@Shulyaka]: https://github.com/Shulyaka [@SukramJ]: https://github.com/SukramJ [@TheLastGimbus]: https://github.com/TheLastGimbus [@aaliddell]: https://github.com/aaliddell +[@abmantis]: https://github.com/abmantis [@ajschmidt8]: https://github.com/ajschmidt8 [@akloeckner]: https://github.com/akloeckner [@alandtse]: https://github.com/alandtse [@alexhardwicke]: https://github.com/alexhardwicke +[@amelchio]: https://github.com/amelchio [@bachya]: https://github.com/bachya [@balloob]: https://github.com/balloob [@bdraco]: https://github.com/bdraco @@ -1348,6 +1451,7 @@ In general, all variables that start with `paper` will be removed at some point. [@jduquennoy]: https://github.com/jduquennoy [@jfearon]: https://github.com/jfearon [@jjlawren]: https://github.com/jjlawren +[@jnewland]: https://github.com/jnewland [@jschlyter]: https://github.com/jschlyter [@jurgenhaas]: https://github.com/jurgenhaas [@kennedyshead]: https://github.com/kennedyshead @@ -1365,6 +1469,7 @@ In general, all variables that start with `paper` will be removed at some point. [@pnguyen-tyro]: https://github.com/pnguyen-tyro [@prystupa]: https://github.com/prystupa [@pvizeli]: https://github.com/pvizeli +[@rajlaud]: https://github.com/rajlaud [@raman325]: https://github.com/raman325 [@robbiet480]: https://github.com/robbiet480 [@scop]: https://github.com/scop @@ -1373,6 +1478,7 @@ In general, all variables that start with `paper` will be removed at some point. [@shermdog]: https://github.com/shermdog [@smugleafdev]: https://github.com/smugleafdev [@starkillerOG]: https://github.com/starkillerOG +[@teharris1]: https://github.com/teharris1 [@timmo001]: https://github.com/timmo001 [@timvancann]: https://github.com/timvancann [@tizzen33]: https://github.com/tizzen33 @@ -1432,6 +1538,7 @@ In general, all variables that start with `paper` will be removed at some point. [group docs]: /integrations/group/ [guardian docs]: /integrations/guardian/ [harmony docs]: /integrations/harmony/ +[hdmi_cec docs]: /integrations/hdmi_cec/ [history docs]: /integrations/history/ [homekit docs]: /integrations/homekit/ [homekit_controller docs]: /integrations/homekit_controller/ @@ -1440,6 +1547,7 @@ In general, all variables that start with `paper` will be removed at some point. [hue docs]: /integrations/hue/ [influxdb docs]: /integrations/influxdb/ [input_number docs]: /integrations/input_number/ +[insteon docs]: /integrations/insteon/ [integration docs]: /integrations/integration/ [ipp docs]: /integrations/ipp/ [joaoapps_join docs]: /integrations/joaoapps_join/ @@ -1454,6 +1562,7 @@ In general, all variables that start with `paper` will be removed at some point. [neato docs]: /integrations/neato/ [netatmo docs]: /integrations/netatmo/ [netdata docs]: /integrations/netdata/ +[nuki docs]: /integrations/nuki/ [nws docs]: /integrations/nws/ [onvif docs]: /integrations/onvif/ [ozw docs]: /integrations/ozw/ @@ -1476,6 +1585,7 @@ In general, all variables that start with `paper` will be removed at some point. [sms docs]: /integrations/sms/ [solaredge docs]: /integrations/solaredge/ [sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ [spotify docs]: /integrations/spotify/ [sql docs]: /integrations/sql/ [statistics docs]: /integrations/statistics/ diff --git a/source/images/blog/2020-07-0.113/social.png b/source/images/blog/2020-07-0.113/social.png new file mode 100644 index 0000000000000000000000000000000000000000..13b33ce44aea3c46d299422892e0448effb2fd5a GIT binary patch literal 117249 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 LN)pu|qk#VhLbMpH literal 0 HcmV?d00001 From 0d66c46716d39a3c93caf2c9755bbb2181834526 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 22 Jul 2020 17:39:57 +0200 Subject: [PATCH 06/22] Sync codebase with docs for 0.113 --- CODEOWNERS | 41 ++++++++++--------- source/_integrations/alarmdecoder.markdown | 1 - source/_integrations/amazon_polly.markdown | 2 - source/_integrations/avri.markdown | 1 + source/_integrations/awair.markdown | 1 + source/_integrations/aws.markdown | 1 - source/_integrations/bond.markdown | 1 + source/_integrations/braviatv.markdown | 1 - source/_integrations/debugpy.markdown | 3 +- source/_integrations/denonavr.markdown | 1 + source/_integrations/enocean.markdown | 1 + source/_integrations/fitbit.markdown | 2 - source/_integrations/foursquare.markdown | 2 - source/_integrations/gntp.markdown | 2 - .../_integrations/google_travel_time.markdown | 2 - source/_integrations/gtfs.markdown | 2 - source/_integrations/html5.markdown | 2 - source/_integrations/humidifier.markdown | 9 ++-- source/_integrations/hydrawise.markdown | 2 + source/_integrations/influxdb.markdown | 1 + source/_integrations/metoffice.markdown | 1 + source/_integrations/notify_events.markdown | 5 +-- source/_integrations/ozw.markdown | 8 ++-- source/_integrations/prometheus.markdown | 2 + source/_integrations/rfxtrx.markdown | 1 + source/_integrations/speedtestdotnet.markdown | 2 +- source/_integrations/squeezebox.markdown | 1 + source/_integrations/tile.markdown | 1 + source/_integrations/twilio_call.markdown | 2 - source/_integrations/twilio_sms.markdown | 2 - source/_integrations/wemo.markdown | 2 - source/_integrations/xiaomi_aqara.markdown | 1 + source/_integrations/zeroconf.markdown | 1 - 33 files changed, 51 insertions(+), 56 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index ff19a1518a2..14f8f2c74de 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -19,7 +19,6 @@ source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy source/_integrations/almond.markdown @gcampax @balloob source/_integrations/alpha_vantage.markdown @fabaff -source/_integrations/amazon_polly.markdown @robbiet480 source/_integrations/ambiclimate.markdown @danielhiversen source/_integrations/ambient_station.markdown @bachya source/_integrations/amcrest.markdown @pnbruckner @@ -42,8 +41,8 @@ source/_integrations/auth.markdown @home-assistant/core source/_integrations/automation.markdown @home-assistant/core source/_integrations/avea.markdown @pattyland source/_integrations/avri.markdown @timvancann -source/_integrations/awair.markdown @danielsjf -source/_integrations/aws.markdown @awarecan @robbiet480 +source/_integrations/awair.markdown @ahayworth @danielsjf +source/_integrations/aws.markdown @awarecan source/_integrations/axis.markdown @Kane610 source/_integrations/azure_event_hub.markdown @eavanvalkenburg source/_integrations/azure_service_bus.markdown @hfurubotten @@ -53,9 +52,10 @@ source/_integrations/bizkaibus.markdown @UgaitzEtxebarria source/_integrations/blebox.markdown @gadgetmobile source/_integrations/blink.markdown @fronzbot source/_integrations/bmp280.markdown @belidzs -source/_integrations/bmw_connected_drive.markdown @gerard33 +source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe source/_integrations/bom.markdown @maddenp -source/_integrations/braviatv.markdown @robbiet480 @bieniu +source/_integrations/bond.markdown @prystupa +source/_integrations/braviatv.markdown @bieniu source/_integrations/broadlink.markdown @danielhiversen @felipediel source/_integrations/brother.markdown @bieniu source/_integrations/brunt.markdown @eavanvalkenburg @@ -82,6 +82,7 @@ source/_integrations/cpuspeed.markdown @fabaff source/_integrations/cups.markdown @fabaff source/_integrations/daikin.markdown @fredrike source/_integrations/darksky.markdown @fabaff +source/_integrations/debugpy.markdown @frenck source/_integrations/deconz.markdown @Kane610 source/_integrations/delijn.markdown @bollewolle @Emilv2 source/_integrations/demo.markdown @home-assistant/core @@ -89,6 +90,7 @@ source/_integrations/denonavr.markdown @scarface-4711 @starkillerOG source/_integrations/derivative.markdown @afaucogney source/_integrations/device_automation.markdown @home-assistant/core source/_integrations/devolo_home_control.markdown @2Fake @Shutgun +source/_integrations/dexcom.markdown @gagebenne source/_integrations/digital_ocean.markdown @fabaff source/_integrations/directv.markdown @ctalkington source/_integrations/discogs.markdown @thibmaek @@ -122,7 +124,6 @@ source/_integrations/ezviz.markdown @baqs source/_integrations/fastdotcom.markdown @rohankapoorcom source/_integrations/file.markdown @fabaff source/_integrations/filter.markdown @dgomes -source/_integrations/fitbit.markdown @robbiet480 source/_integrations/fixer.markdown @fabaff source/_integrations/flick_electric.markdown @ZephireNZ source/_integrations/flock.markdown @fabaff @@ -131,7 +132,6 @@ source/_integrations/flunearyou.markdown @bachya source/_integrations/forked_daapd.markdown @uvjustin source/_integrations/fortios.markdown @kimfrellsen source/_integrations/foscam.markdown @skgsergio -source/_integrations/foursquare.markdown @robbiet480 source/_integrations/freebox.markdown @snoof85 @Quentame source/_integrations/fronius.markdown @nielstron source/_integrations/frontend.markdown @home-assistant/frontend @@ -144,18 +144,15 @@ source/_integrations/geonetnz_volcano.markdown @exxamalte source/_integrations/gios.markdown @bieniu source/_integrations/gitter.markdown @fabaff source/_integrations/glances.markdown @fabaff @engrbm87 -source/_integrations/gntp.markdown @robbiet480 source/_integrations/gogogate2.markdown @vangorra source/_integrations/google_assistant.markdown @home-assistant/cloud source/_integrations/google_cloud.markdown @lufton source/_integrations/google_translate.markdown @awarecan -source/_integrations/google_travel_time.markdown @robbiet480 source/_integrations/gpsd.markdown @fabaff source/_integrations/greeneye_monitor.markdown @jkeljo source/_integrations/griddy.markdown @bdraco source/_integrations/group.markdown @home-assistant/core source/_integrations/growatt_server.markdown @indykoning -source/_integrations/gtfs.markdown @robbiet480 source/_integrations/guardian.markdown @bachya source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco source/_integrations/heatmiser.markdown @andylockran @@ -173,18 +170,20 @@ source/_integrations/homekit_controller.markdown @Jc2k source/_integrations/homematic.markdown @pvizeli @danielperna84 source/_integrations/homematicip_cloud.markdown @SukramJ source/_integrations/honeywell.markdown @zxdavb -source/_integrations/html5.markdown @robbiet480 source/_integrations/http.markdown @home-assistant/core source/_integrations/huawei_lte.markdown @scop @fphammerle source/_integrations/huawei_router.markdown @abmantis -source/_integrations/hue.markdown @balloob +source/_integrations/hue.markdown @balloob @frenck +source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka source/_integrations/hunterdouglas_powerview.markdown @bdraco +source/_integrations/hvv_departures.markdown @vigonotion +source/_integrations/hydrawise.markdown @ptcryan source/_integrations/iammeter.markdown @lewei50 source/_integrations/iaqualink.markdown @flz source/_integrations/icloud.markdown @Quentame source/_integrations/ign_sismologia.markdown @exxamalte source/_integrations/incomfort.markdown @zxdavb -source/_integrations/influxdb.markdown @fabaff +source/_integrations/influxdb.markdown @fabaff @mdegat01 source/_integrations/input_boolean.markdown @home-assistant/core source/_integrations/input_datetime.markdown @home-assistant/core source/_integrations/input_number.markdown @home-assistant/core @@ -234,6 +233,7 @@ source/_integrations/melissa.markdown @kennedyshead source/_integrations/met.markdown @danielhiversen source/_integrations/meteo_france.markdown @victorcerutti @oncleben31 @Quentame source/_integrations/meteoalarm.markdown @rolfberkenbosch +source/_integrations/metoffice.markdown @MrHarcombe source/_integrations/miflora.markdown @danielhiversen @ChristianKuehnel source/_integrations/mikrotik.markdown @engrbm87 source/_integrations/mill.markdown @danielhiversen @@ -265,6 +265,7 @@ source/_integrations/nissan_leaf.markdown @filcole source/_integrations/nmbs.markdown @thibmaek source/_integrations/no_ip.markdown @fabaff source/_integrations/notify.markdown @home-assistant/core +source/_integrations/notify_events.markdown @matrozov @papajojo source/_integrations/notion.markdown @bachya source/_integrations/nsw_fuel_station.markdown @nickw444 source/_integrations/nsw_rural_fire_service_feed.markdown @exxamalte @@ -302,9 +303,11 @@ source/_integrations/plaato.markdown @JohNan source/_integrations/plant.markdown @ChristianKuehnel source/_integrations/plex.markdown @jjlawren source/_integrations/plugwise.markdown @CoMPaTech @bouwew -source/_integrations/plum_lightpad.markdown @ColinHarrington +source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa source/_integrations/point.markdown @fredrike +source/_integrations/poolsense.markdown @haemishkyd source/_integrations/powerwall.markdown @bdraco @jrester +source/_integrations/prometheus.markdown @knyar source/_integrations/proxmoxve.markdown @k4ds3 @jhollowe source/_integrations/ps4.markdown @ktnrg45 source/_integrations/ptvsd.markdown @swamp-ig @@ -323,7 +326,7 @@ source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert source/_integrations/rainmachine.markdown @bachya source/_integrations/random.markdown @fabaff source/_integrations/repetier.markdown @MTrab -source/_integrations/rfxtrx.markdown @danielhiversen +source/_integrations/rfxtrx.markdown @danielhiversen @elupus source/_integrations/ring.markdown @balloob source/_integrations/rmvtransport.markdown @cgtobi source/_integrations/roku.markdown @ctalkington @@ -353,6 +356,7 @@ source/_integrations/sinch.markdown @bendikrb source/_integrations/sisyphus.markdown @jkeljo source/_integrations/slide.markdown @ualex73 source/_integrations/sma.markdown @kellerza +source/_integrations/smappee.markdown @bsmappee source/_integrations/smarthab.markdown @outadoc source/_integrations/smartthings.markdown @andrewsayre source/_integrations/smarty.markdown @z0mbieprocess @@ -366,7 +370,7 @@ source/_integrations/somfy.markdown @tetienne source/_integrations/sonarr.markdown @ctalkington source/_integrations/songpal.markdown @rytilahti @shenxn source/_integrations/spaceapi.markdown @fabaff -source/_integrations/speedtestdotnet.markdown @rohankapoorcom +source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 source/_integrations/spider.markdown @peternijssen source/_integrations/spotify.markdown @frenck source/_integrations/sql.markdown @dgomes @@ -415,8 +419,6 @@ source/_integrations/transmission.markdown @engrbm87 @JPHutchins source/_integrations/tts.markdown @pvizeli source/_integrations/tuya.markdown @ollo69 source/_integrations/twentemilieu.markdown @frenck -source/_integrations/twilio_call.markdown @robbiet480 -source/_integrations/twilio_sms.markdown @robbiet480 source/_integrations/ubee.markdown @mzdrale source/_integrations/unifi.markdown @Kane610 source/_integrations/unifiled.markdown @florisvdk @@ -444,7 +446,6 @@ source/_integrations/watson_tts.markdown @rutkai source/_integrations/weather.markdown @fabaff source/_integrations/webostv.markdown @bendavid source/_integrations/websocket_api.markdown @home-assistant/core -source/_integrations/wemo.markdown @sqldiablo source/_integrations/wiffi.markdown @mampfes source/_integrations/withings.markdown @vangorra source/_integrations/wled.markdown @frenck @@ -462,7 +463,7 @@ source/_integrations/yeelightsunflower.markdown @lindsaymarkward source/_integrations/yessssms.markdown @flowolf source/_integrations/yi.markdown @bachya source/_integrations/yr.markdown @danielhiversen -source/_integrations/zeroconf.markdown @robbiet480 @Kane610 +source/_integrations/zeroconf.markdown @Kane610 source/_integrations/zerproc.markdown @emlove source/_integrations/zha.markdown @dmulcahey @adminiuga source/_integrations/zone.markdown @home-assistant/core diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 5f3ad460ce8..dd834ba1c81 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -231,4 +231,3 @@ The `chr(4)` and `chr(5)` sequences below are equivalent to pressing the Sta | `alarm_arm_home` | `chr(4)` + `chr(4)` + `chr(4)` | | `alarm_arm_away` | `chr(5)` + `chr(5)` + `chr(5)` | | `alarm_arm_night` | `chr(4)` + `chr(4)` + `chr(4)` | - diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index 60c3cbc8373..4c002259e79 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -4,8 +4,6 @@ description: Instructions on how to setup Amazon Polly with Home Assistant. ha_category: - Text-to-speech ha_release: 0.37 -ha_codeowners: - - '@robbiet480' ha_domain: amazon_polly --- diff --git a/source/_integrations/avri.markdown b/source/_integrations/avri.markdown index 6f28aaa8ccf..ebb7ac53c1e 100644 --- a/source/_integrations/avri.markdown +++ b/source/_integrations/avri.markdown @@ -8,6 +8,7 @@ ha_release: 0.107 ha_codeowners: - '@timvancann' ha_domain: avri +ha_config_flow: true --- The `Avri Waste` platform allows you to track the next scheduled waste pickup and the type of waste from [Avri](https://www.avri.nl/). diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index e26f0d1488f..230fcdd64f9 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -7,6 +7,7 @@ ha_config_flow: true ha_release: 0.84 ha_iot_class: Cloud Polling ha_codeowners: + - '@ahayworth' - '@danielsjf' ha_domain: awair --- diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 598d1424e99..1b7e0a76b3b 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: '0.91' ha_codeowners: - '@awarecan' - - '@robbiet480' ha_domain: aws --- diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index 3bf50a0b312..f2f8dddb664 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -9,6 +9,7 @@ ha_release: 0.113 ha_domain: bond ha_codeowners: - '@prystupa' +ha_config_flow: true --- Duplicates your RF remote control. diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index f02658fd974..3cd489bbb97 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 0.23 ha_iot_class: Local Polling ha_codeowners: - - '@robbiet480' - '@bieniu' ha_domain: braviatv ha_config_flow: true diff --git a/source/_integrations/debugpy.markdown b/source/_integrations/debugpy.markdown index 1287ead506c..c021c3762ef 100644 --- a/source/_integrations/debugpy.markdown +++ b/source/_integrations/debugpy.markdown @@ -1,12 +1,13 @@ --- title: Remote Python Debugger -description: Remote Python Debugger (debugpy) for Visual Studio Code +description: Remote Python Debugger (debugpy) for Visual Studio Code ha_category: - Utility ha_release: 0.112 ha_codeowners: - '@frenck' ha_domain: debugpy +ha_quality_scale: internal --- The remote Python debugger integration allows you to use the Visual Studio Code diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 4bc0ab8dc1c..307d9a16669 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -9,6 +9,7 @@ ha_domain: denonavr ha_codeowners: - '@scarface-4711' - '@starkillerOG' +ha_config_flow: true --- The `denonavr` platform allows you to control [Denon Network Receivers](https://www.denon.com/en-gb/shop/networkmusicsystem/ceolpiccolon4) from Home Assistant. It might be that your device is supported by the [Denon] platform. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 7e4303d58d3..99e82029a8d 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -13,6 +13,7 @@ ha_iot_class: Local Push ha_codeowners: - '@bdurrer' ha_domain: enocean +ha_config_flow: true --- The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary. diff --git a/source/_integrations/fitbit.markdown b/source/_integrations/fitbit.markdown index df110206e1d..17b511ac81d 100644 --- a/source/_integrations/fitbit.markdown +++ b/source/_integrations/fitbit.markdown @@ -5,8 +5,6 @@ ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.19 -ha_codeowners: - - '@robbiet480' ha_domain: fitbit --- diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index df6f2ab0fb9..a758bf39fd0 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -5,8 +5,6 @@ ha_category: - Social ha_release: 0.26 ha_iot_class: Cloud Polling and Cloud Push -ha_codeowners: - - '@robbiet480' ha_domain: foursquare --- diff --git a/source/_integrations/gntp.markdown b/source/_integrations/gntp.markdown index 88191c028c1..d2781d7a9ee 100644 --- a/source/_integrations/gntp.markdown +++ b/source/_integrations/gntp.markdown @@ -4,8 +4,6 @@ description: Instructions for adding GNTP/Growl notifications to Home Assistant. ha_category: - Notifications ha_release: 0.16 -ha_codeowners: - - '@robbiet480' ha_domain: gntp --- diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown index d12dfc8a675..a353efaef3b 100644 --- a/source/_integrations/google_travel_time.markdown +++ b/source/_integrations/google_travel_time.markdown @@ -5,8 +5,6 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.19 -ha_codeowners: - - '@robbiet480' ha_domain: google_travel_time --- diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index a2cf143ed1b..026181199ef 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -5,8 +5,6 @@ ha_category: - Transport ha_iot_class: Local Polling ha_release: 0.17 -ha_codeowners: - - '@robbiet480' ha_domain: gtfs --- diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 7c38d3ef9ef..020fd0d61fd 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -4,8 +4,6 @@ description: Instructions on how to use the HTML5 push notifications platform fr ha_category: - Notifications ha_release: 0.27 -ha_codeowners: - - '@robbiet480' ha_domain: html5 --- diff --git a/source/_integrations/humidifier.markdown b/source/_integrations/humidifier.markdown index 12472dfaff9..4b993191b8a 100644 --- a/source/_integrations/humidifier.markdown +++ b/source/_integrations/humidifier.markdown @@ -1,11 +1,14 @@ --- -title: "Humidifier" -description: "Instructions on how to set up humidity control devices within Home Assistant." +title: Humidifier +description: Instructions on how to set up humidity control devices within Home Assistant. ha_category: - Humidifier -ha_release: "0.112" +ha_release: '0.112' ha_domain: humidifier ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' + - '@Shulyaka' --- The `humidifier` integration is built for the controlling and monitoring of humidifiers, dehumidifiers, and hygrostat devices. diff --git a/source/_integrations/hydrawise.markdown b/source/_integrations/hydrawise.markdown index a95c8b5d9fe..22e94518a3c 100644 --- a/source/_integrations/hydrawise.markdown +++ b/source/_integrations/hydrawise.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.71 ha_iot_class: Cloud Polling ha_domain: hydrawise +ha_codeowners: + - '@ptcryan' --- The `hydrawise` integration allows you to integrate your [Hunter Hydrawise](https://hydrawise.com) Wi-Fi irrigation controller system in Home Assistant. diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 30b012d1be5..173fd0ef453 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -8,6 +8,7 @@ ha_release: 0.9 ha_iot_class: Configurable ha_codeowners: - '@fabaff' + - '@mdegat01' ha_domain: influxdb --- diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index c6c497cf4fa..f64abf2c781 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -8,6 +8,7 @@ ha_iot_class: Cloud Polling ha_codeowners: - '@MrHarcombe' ha_domain: metoffice +ha_config_flow: true --- The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. diff --git a/source/_integrations/notify_events.markdown b/source/_integrations/notify_events.markdown index 54ccc26d364..049c7cd7cec 100644 --- a/source/_integrations/notify_events.markdown +++ b/source/_integrations/notify_events.markdown @@ -1,10 +1,9 @@ --- -title: "Notify.Events" -description: "Instructions on how to integrate Notify.Events service with your Home Assistant notifications." +title: Notify.Events +description: Instructions on how to integrate Notify.Events service with your Home Assistant notifications. ha_release: 0.112 ha_category: - Notifications -ha_quality_scale: platinum ha_domain: notify_events ha_codeowners: - '@matrozov' diff --git a/source/_integrations/ozw.markdown b/source/_integrations/ozw.markdown index 36a2ece733f..721d917cf40 100644 --- a/source/_integrations/ozw.markdown +++ b/source/_integrations/ozw.markdown @@ -3,13 +3,13 @@ title: OpenZWave (beta) description: Instructions on how to integrate OpenZWave with Home Assistant. ha_category: - Switch -ha_release: "0.110" +ha_release: '0.110' ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - - "@cgarwood" - - "@marcelveldt" - - "@MartinHjelmare" + - '@cgarwood' + - '@marcelveldt' + - '@MartinHjelmare' ha_domain: ozw --- diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index ec71f73a189..1df7c93ec88 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -5,6 +5,8 @@ ha_category: - History ha_release: 0.49 ha_domain: prometheus +ha_codeowners: + - '@knyar' --- The `prometheus` integration exposes metrics in a format which [Prometheus](https://prometheus.io/) can read. diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 9e287cb5a41..6d3604d1908 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -11,6 +11,7 @@ ha_category: ha_release: pre 0.7 ha_codeowners: - '@danielhiversen' + - '@elupus' ha_domain: rfxtrx --- diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index e2de697337d..e83ae950d96 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -9,7 +9,7 @@ ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@rohankapoorcom' - - '@rngrbm87' + - '@engrbm87' ha_domain: speedtestdotnet --- diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index 082db00c726..92d9c7655cc 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -8,6 +8,7 @@ ha_iot_class: Local Polling ha_domain: squeezebox ha_codeowners: - '@rajlaud' +ha_config_flow: true --- The Squeezebox integration allows you to control a [Logitech Squeezebox](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29) music player from Home Assistant. This lets you control Squeezebox hardware like the Classic, Transporter, Duet, Boom, Radio and Touch and of software players like [Squeezelite](https://github.com/ralph-irving/squeezelite), [SoftSqueeze](http://softsqueeze.sourceforge.net/), [SqueezePlayer](https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer) and [SqueezeSlave](https://forums.slimdevices.com/showthread.php?93607-ANNOUNCE-Squeezeslave-1-2-released). diff --git a/source/_integrations/tile.markdown b/source/_integrations/tile.markdown index 1458a6adaa0..e0ce6e667a0 100644 --- a/source/_integrations/tile.markdown +++ b/source/_integrations/tile.markdown @@ -8,6 +8,7 @@ ha_iot_class: Cloud Polling ha_codeowners: - '@bachya' ha_domain: tile +ha_config_flow: true --- The `tile` platform allows Home Assistant to utilize [TileĀ® Bluetooth trackers](https://www.thetileapp.com). diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index b9eeec9070c..5c1465798cb 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -4,8 +4,6 @@ description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications ha_release: 0.37 -ha_codeowners: - - '@robbiet480' ha_domain: twilio_call --- diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 780eec8f372..b240d36d14f 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -4,8 +4,6 @@ description: Instructions on how to add user notifications to Home Assistant. ha_category: - Notifications ha_release: '0.20' -ha_codeowners: - - '@robbiet480' ha_domain: twilio_sms --- diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index ce664b6c1d8..85aec666763 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -9,8 +9,6 @@ ha_category: - Switch ha_release: pre 0.7 ha_config_flow: true -ha_codeowners: - - '@sqldiablo' ha_domain: wemo --- diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index 621484d22c0..01b2fe00cc5 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -9,6 +9,7 @@ ha_codeowners: - '@danielhiversen' - '@syssi' ha_domain: xiaomi_aqara +ha_config_flow: true --- The `xiaomi_aqara` integration allows you to integrate [Xiaomi](https://www.mi.com/en/) Aqara-compatible devices into Home Assistant. diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index a784ee68e23..25765413154 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -6,7 +6,6 @@ ha_category: ha_release: 0.18 ha_quality_scale: internal ha_codeowners: - - '@robbiet480' - '@Kane610' ha_domain: zeroconf --- From a36115b87b578c566f0e94e559f40c34bb30d460 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 22 Jul 2020 17:47:13 +0200 Subject: [PATCH 07/22] Fix ZHA breaking changes header in 0.113 release notes --- source/_posts/2020-07-01-release-113.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index 04f9adca2e4..f7fd920d74a 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -558,7 +558,7 @@ Sorry for the inconvenience.

- ZHA with Hue remotes + ZHA power unit of measurement

Previously ZHA was displaying power as kilowatt (kW) for some devices From 8b46c70f41f6b7d847c5c9fd0054e9d35ea102c7 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 22 Jul 2020 18:19:00 +0200 Subject: [PATCH 08/22] Typos release notes (#14062) --- source/_posts/2020-07-01-release-113.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index f7fd920d74a..79d32aa553c 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -174,7 +174,7 @@ Screenshot of running modes in the frontend. This is a powerful feature, which allows you to control how automations and scripts are run in ways you could not do before. -More information about the running mode can be found the [automations][automation-mode] +More information about the running mode can be found in the [automations][automation-mode] and [scripts][scripts-mode] documentation. [automation-mode]: /docs/automation/#automation-modes @@ -289,7 +289,7 @@ script: ### Automations & Scripts: Bonus! Cool down An often requested feature is to allow for a cool down time on an automation. -What that entails is setting a limiting the run of an automation or script +What that entails is setting a limit on the run of an automation or script to a certain time frame. While this is not a feature specifically added or build, it can be achieved @@ -328,8 +328,8 @@ A lot of icons are renamed, and some are removed. In this release, we included all new, and all removed icons and we made sure the new and the old name work. If you use an icon that is renamed or removed we will show a warning in the log, -in version 0.115,this conversion path will be removed and removed icons and -old names no longer work. +in version 0.115, this conversion path will be removed and removed icons and +old names will no longer work. So make sure to check your logs if you need to adjust any of your used MDI icons. @@ -341,7 +341,7 @@ Please note: It is possible that custom integrations (also known as custom components) use deprecated icons. These can throw warnings that need to be addressed in the custom integration. -[mdi]: https://dev.materialdesignicons.com +[mdi]: https://www.materialdesignicons.com [mdi-upgrade]: https://dev.materialdesignicons.com/upgrade#4.9.95-to-5.0.45 [simple-icons]: https://simpleicons.org/ [hass-simpleicons]: https://github.com/vigonotion/hass-simpleicons @@ -349,14 +349,14 @@ to be addressed in the custom integration. ## Script and Scene editor updates The UI to edit or create a script has been updated, besides support for the -new running mode and you can give your scripts a custom icon and ID from the UI. +new running mode, you can now give your scripts a custom icon and ID from the UI. -Especially the naming is helpful, you no longer have to search your states for +Especially the ID is helpful, you no longer have to search your states for a long numeric entity id that matches your script.

Screenshot of a script name, icon and run mode. -Screenshot of a script name, icon and run mode. +Screenshot of a script ID, icon and run mode.

The support for setting a custom icon, is also added to the scenes editor. @@ -364,7 +364,7 @@ The support for setting a custom icon, is also added to the scenes editor. ## More speed optimizations After, the well-received, speed optimization done in the 0.111 & 0.112 releases, -the sega towards improving resource usage and responsiveness of the platform +the saga towards improving resource usage and responsiveness of the platform continues. This time we have both [@bdraco] and [@pvizeli] to thank for some great From 6e77745e8126fb79192af5e29017ba56ec3f2774 Mon Sep 17 00:00:00 2001 From: Eugene Prystupa Date: Wed, 22 Jul 2020 12:09:46 -0700 Subject: [PATCH 09/22] Update Bond documentation to include all applicable categories (#14028) --- source/_integrations/bond.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index f2f8dddb664..f4b33882484 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -4,6 +4,9 @@ description: Instructions on setting up Bond Bridge within Home Assistant. ha_category: - Hub - Cover + - Fan + - Light + - Switch ha_iot_class: Local Pull ha_release: 0.113 ha_domain: bond From 975fee29200a0a7351eb28fec453917966a66460 Mon Sep 17 00:00:00 2001 From: Fonta Date: Wed, 22 Jul 2020 21:19:21 +0200 Subject: [PATCH 10/22] Add info for creation codes which will behave as lights in the GUI (#14063) --- source/_integrations/rfxtrx.markdown | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 6d3604d1908..4f79946bc66 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -241,7 +241,7 @@ The `rfxtrx` platform support switches that communicate in the frequency range o #### Generate codes -If you need to generate codes for switches, you can use a template (useful for example COCO switches). +If you need to generate codes for devices, you can use a template (useful for example for COCO switches). - Go to home-assistant-IP:8123/dev-template - Use this code to generate a code: @@ -249,15 +249,19 @@ If you need to generate codes for switches, you can use a template (useful for e {% raw %} ```yaml +# for switches 0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70 + +# for dimmers change 010f70 to 020f70 e.g. +0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}020f70 ``` {% endraw %} -- Use this code to add a new switch in your `configuration.yaml`. +- Use this code to add a new device in your `configuration.yaml`. - Launch your Home Assistant and go to the website. - Enable learning mode on your switch (i.e., push learn button or plug it in a wall socket) -- Toggle your new switch in the Home Assistant interface +- Toggle your new device in the Home Assistant interface ### Sensors From d49373b35947f1946e2dd32606071a621e8c6d26 Mon Sep 17 00:00:00 2001 From: Kendell R Date: Wed, 22 Jul 2020 13:54:01 -0700 Subject: [PATCH 11/22] Clarify where to get email address + short links + 1 grammar correction (#14064) --- source/_integrations/html5.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 020fd0d61fd..1746ac6120d 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -93,8 +93,10 @@ The `html5` platform can only function if all of the following requirements are 3. Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain via Google Webmaster Central / Search Console - [see below](#verify-your-domain). 4. With the domain verified, go to [https://console.firebase.google.com](https://console.firebase.google.com), select import Google project and select the project you created. 5. Then, click the cogwheel on top left and select "Project settings". -6. Select 'Cloud Messaging' tab. +6. Select the ['Cloud Messaging' tab](https://console.firebase.google.com/project/_/settings/cloudmessaging). 7. Generate a new key pair under the Web configuration listing at the bottom of the page. To view the private key click the three dots to the right and 'Show private key'. +8. Select the ['Service Accounts' tab](https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk). +9. Get the email address for the project under the text that says "Firebase service account". ### Setting up your browser From 7ca3ab937ed6802422c0d392722efbd7c8e7b05f Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Fri, 24 Jul 2020 01:06:25 +0200 Subject: [PATCH 12/22] Mention tensorflow breakage in 0.113 (#14071) --- source/_posts/2020-07-01-release-113.markdown | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index 79d32aa553c..e0074a0cbba 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -121,12 +121,12 @@ if a previous action of the same automation is still running. Besides the default `single` mode, the following modes are now available: -Mode | Description --|- -`single` | Do not start a new run, if running already. -`restart` | Start a new run, after stopping the previous run. -`queued` | Start a new run after all previous runs complete. -`parallel` | Start a new, independent, run in parallel with previous runs. +| Mode | Description | +| ---------- | ------------------------------------------------------------- | +| `single` | Do not start a new run, if running already. | +| `restart` | Start a new run, after stopping the previous run. | +| `queued` | Start a new run after all previous runs complete. | +| `parallel` | Start a new, independent, run in parallel with previous runs. |

Automation/script running modes visual explained. @@ -451,6 +451,21 @@ The minimum required Python version has been bumped from Python 3.7.0 to 3.7.1.

+
+ TensorFlow +

+ +The TensorFlow integration will fail to upgrade due to missing wheels for Python 3.8. +This affects all installations that rely on our default docker images running Python 3.8. + +To work around this, remove the `tensorflow` platform under the `image_processing` domain from your +configuration.yaml, before upgrading to 0.113. + +Work is under way to resolve the problem. For more information follow this issue: [#38073] + +

+
+
Automations/Scripts

@@ -661,7 +676,7 @@ instead of being delayed until the activity is finished setting up. "**fan**_set_led_on/off" to "**remote**_set_led_on/off", you will now need to set those back to "fan". - ([@alexhardwicke] - [#37605]) ([xiaomi_miio docs]) + ([@alexhardwicke] - [#37605]) ([xiaomi_miio docs])

@@ -694,7 +709,7 @@ the Slack integration documentation.
RFXCOM RFXtrx

- + - Configuration of entity name must now be done inside home assistant - Multiple entities may be generated for a single device - The events signalled from entity id's are removed in favor of events from an integration level. @@ -708,7 +723,7 @@ the Slack integration documentation.

Fibaro

- + Fibaro Home Center switches that control light sources will now correctly be configured as Light entities (instead of Switch entities). This causes those entities IDs to change from `switch`. to `light`. If this is not desirable, change the device role in Home Center to something that isn't a light source (e.g., Other device). ([@danielpervan] - [#37690]) ([fibaro docs]) @@ -1076,6 +1091,7 @@ In general, all variables that start with `paper` will be removed at some point.

+[#38073]: https://github.com/home-assistant/core/issues/38073 [#31637]: https://github.com/home-assistant/core/pull/31637 [#33852]: https://github.com/home-assistant/core/pull/33852 [#34387]: https://github.com/home-assistant/core/pull/34387 From 1198b4d8b272573601db99833f1ce0e6d191ce8d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 24 Jul 2020 11:09:18 +0200 Subject: [PATCH 13/22] Improve examples in 0.113 blog post (#14075) --- source/_posts/2020-07-01-release-113.markdown | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index e0074a0cbba..c6f496bd6dd 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -159,7 +159,7 @@ button was pressed after 5 seconds. automation: - trigger: - ... - mode: queue + mode: queued action: - ... ``` @@ -194,13 +194,16 @@ The new repeat feature can be used in three different ways: For example, this would spam your phone with the same message 10 times: ```yaml -- alias: Send notification spam to phone - repeat: - count: 10 +# Send notification spam to phone +script: + phone_spam: sequence: - - service: notify.frenck - data: - message: Ding dong! Someone is at the door! + repeat: + count: 10 + sequence: + - service: notify.frenck + data: + message: Ding dong! Someone is at the door! ``` More information about repeats can be found in the [documentation][repeats]. @@ -222,7 +225,7 @@ of conditions. ```yaml automation: - alias: "Example" - description: "On button press, turn on the light bulb for 10 seconds." + description: "On button press, choose the right thing to run." trigger: - platform: state entity_id: @@ -371,7 +374,7 @@ This time we have both [@bdraco] and [@pvizeli] to thank for some great optimizations that will reduce the CPU usage of Home Assistant. First of all, if you are running a Home Assistant OS, Container or -Supervised installation, this your Home Assistant instance will run on +Supervised installation, then your Home Assistant instance will run on Python 3.8. No action from your end is needed for this. It is not just a normal Python version, but [@pvizeli] has worked on a highly From 5c0e2c2f388e848a2161f439f368181fedc7c40b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jul 2020 16:24:57 +0200 Subject: [PATCH 14/22] Bump i18n from 1.8.4 to 1.8.5 (#14076) Bumps [i18n](https://github.com/svenfuchs/i18n) from 1.8.4 to 1.8.5. - [Release notes](https://github.com/svenfuchs/i18n/releases) - [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/svenfuchs/i18n/compare/v1.8.4...v1.8.5) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index af09ef09d22..61d62673531 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -29,7 +29,7 @@ GEM ffi (1.13.1-x64-mingw32) forwardable-extended (2.6.0) http_parser.rb (0.6.0) - i18n (1.8.4) + i18n (1.8.5) concurrent-ruby (~> 1.0) jekyll (4.1.1) addressable (~> 2.4) From e6d8b040bcda9e18af15ead5b55d4bcbd5495932 Mon Sep 17 00:00:00 2001 From: Emil Stjerneman Date: Fri, 24 Jul 2020 16:38:43 +0200 Subject: [PATCH 15/22] Fix door, window and tyre names (#14074) --- source/_integrations/volvooncall.markdown | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/source/_integrations/volvooncall.markdown b/source/_integrations/volvooncall.markdown index e6f31e399f6..8fd05349038 100644 --- a/source/_integrations/volvooncall.markdown +++ b/source/_integrations/volvooncall.markdown @@ -103,19 +103,19 @@ The list of currently available resources: - `engine_start` - `last_trip` - `is_engine_running` -- `doors.hood_open` -- `doors.front_left_door_open` -- `doors.front_right_door_open` -- `doors.rear_left_door_open` -- `doors.rear_right_door_open` -- `windows.front_left_window_open` -- `windows.front_right_window_open` -- `windows.rear_left_window_open` -- `windows.rear_right_window_open` -- `tyre_pressure.front_left_tyre_pressure` -- `tyre_pressure.front_right_tyre_pressure` -- `tyre_pressure.rear_left_tyre_pressure` -- `tyre_pressure.rear_right_tyre_pressure` +- `doors_hood_open` +- `doors_front_left_door_open` +- `doors_front_right_door_open` +- `doors_rear_left_door_open` +- `doors_rear_right_door_open` +- `windows_front_left_window_open` +- `windows_front_right_window_open` +- `windows_rear_left_window_open` +- `windows_rear_right_window_open` +- `tyre_pressure_front_left_tyre_pressure` +- `tyre_pressure_front_right_tyre_pressure` +- `tyre_pressure_rear_left_tyre_pressure` +- `tyre_pressure_rear_right_tyre_pressure` - `any_door_open` - `any_window_open` From 5b27308a1c7e87ef8ef00378cda9bbcdb047ed51 Mon Sep 17 00:00:00 2001 From: Ziv <16467659+ziv1234@users.noreply.github.com> Date: Fri, 24 Jul 2020 17:45:00 +0300 Subject: [PATCH 16/22] Update dynalite.markdown (#14068) --- source/_integrations/dynalite.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown index 29ba8af3f64..ca2ef454ae0 100755 --- a/source/_integrations/dynalite.markdown +++ b/source/_integrations/dynalite.markdown @@ -28,7 +28,7 @@ A Dynalite area typically (although not necessarily) defines some physical area, Each area can have one or more channels that correspond to the different devices they control. A channel can relate to a dimmable light, or other devices. -Additionally, each area can have one or more presets that determine the behavior of all the channels, and sometimes trigger additional actions. Typically, preset 1 in an area means 'on', and preset '4' means off. Additional presets could be used for scenes and dimming. +Additionally, each area can have one or more presets that determine the behavior of all the channels, and sometimes trigger additional actions. Typically, preset '1' in an area means 'on', and preset '4' means 'off'. Additional presets could be used for scenes and dimming. ## Configuration From de79d8310794a22ed6c756595247f9ed5a2f1582 Mon Sep 17 00:00:00 2001 From: Andreas Ehn Date: Fri, 24 Jul 2020 22:46:01 +0800 Subject: [PATCH 17/22] Update starline.markdown (#14069) Add links, cleaned up interpunctuation, corrected the company name --- source/_integrations/starline.markdown | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown index 93ebd7e3e37..36d3a2b3376 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -16,16 +16,16 @@ ha_codeowners: ha_domain: starline --- -The `starline` integration lets you retrieve data of your StarLine security system from the StarLine portal. You will need a working StarLine account. +The `starline` integration lets you retrieve data of your [StarLine](https://www.alarmstarline.com/) security system from the [StarLine portal](https://my.starline.ru/). You will need a working StarLine account. This integration provides the following platforms: -- Binary Sensors: Hand brake, hood, trunk, alarm status and doors lock state. -- Device tracker: The location of your car. -- Lock: Control the lock of your car. -- Sensors: Battery level, SIM card balance, GSM signal level, interior temperature and engine temperature. -- Switches: Start/stop engine, heater (webasto), additional channel and sound the horn. -- Services: Update the state, set update frequency. More details can be found [here](#services). +- Binary sensors: Hand brake, hood, trunk, alarm status and doors lock state +- Device tracker: The location of your car +- Lock: Control the lock of your car +- Sensors: Battery level, SIM card balance, GSM signal level, interior temperature and engine temperature +- Switches: Start/stop engine, heater (webasto), additional channel and sound the horn +- Services: Update the state, set update frequency; details [below](#services) ## Configuration @@ -61,4 +61,4 @@ The service `starline.set_scan_interval` sets update frequency for entities. ## Disclaimer -This software is not affiliated with or endorsed by StarLine Company. +This software is not affiliated with or endorsed by ScPA StarLine Ltd. From dc071d5ef3e83c5673b7cde67b60458f3f04ed76 Mon Sep 17 00:00:00 2001 From: Andreas Ehn Date: Fri, 24 Jul 2020 23:17:53 +0800 Subject: [PATCH 18/22] One-sentence explanation with link to vendor site (#14066) --- source/_integrations/bond.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index f4b33882484..c8f2b9b2322 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -15,7 +15,7 @@ ha_codeowners: ha_config_flow: true --- -Duplicates your RF remote control. +The Bond integration allows you to control appliances through your [Bond Bridge](https://bondhome.io/). Duplicates your RF remote control. Supported devices: From c133d233e752df1b9aa1c187e549f17b5d883d70 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 24 Jul 2020 22:21:39 +0200 Subject: [PATCH 19/22] 0.113.1 (#14078) --- _config.yml | 4 +- source/_posts/2020-07-01-release-113.markdown | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 2c77e52e45d..34e23909ddd 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 113 -current_patch_version: 0 -date_released: 2020-07-22 +current_patch_version: 1 +date_released: 2020-07-24 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index c6f496bd6dd..88ce02f413f 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -771,6 +771,59 @@ In general, all variables that start with `paper` will be removed at some point.

+## Release 0.113.1 - July 24 + +- Update discord.py to v1.3.4 for API change ([@DubhAd] - [#38060]) ([discord docs]) +- Fix issue with creation of PT2262 devices in rfxtrx integration ([@RobBie1221] - [#38074]) ([rfxtrx docs]) +- Fix route53 depending on broken package ([@balloob] - [#38079]) ([route53 docs]) +- Bump pysmartthings to v0.7.2 ([@andrewsayre] - [#38086]) ([smartthings docs]) +- Bump androidtv to 0.0.46 ([@JeffLIrion] - [#38090]) ([androidtv docs]) +- Prevent the zeroconf service browser from terminating when a device without any addresses is discovered. ([@bdraco] - [#38094]) +- Fix SimpliSafe to work with new MFA ([@bachya] - [#38097]) ([simplisafe docs]) +- Fix text error when getting getting external IP in route53 ([@ludeeus] - [#38100]) ([route53 docs]) +- Fix script repeat variable lifetime ([@pnbruckner] - [#38124]) +- Log which task is blocking startup when debug logging is on ([@bdraco] - [#38134]) +- Fix Xbox Live integration ([@mKeRix] - [#38146]) ([xbox_live docs]) +- Fix incorrect mesurement in Toon for meter low ([@frenck] - [#38149]) ([toon docs]) +- Fix Nuki Locks and Openers not being available after some time ([@pschmitt] - [#38159]) ([nuki docs]) +- Remove leftover print statement ([@bachya] - [#38163]) ([simplisafe docs]) + +[#38060]: https://github.com/home-assistant/core/pull/38060 +[#38074]: https://github.com/home-assistant/core/pull/38074 +[#38079]: https://github.com/home-assistant/core/pull/38079 +[#38086]: https://github.com/home-assistant/core/pull/38086 +[#38090]: https://github.com/home-assistant/core/pull/38090 +[#38094]: https://github.com/home-assistant/core/pull/38094 +[#38097]: https://github.com/home-assistant/core/pull/38097 +[#38100]: https://github.com/home-assistant/core/pull/38100 +[#38124]: https://github.com/home-assistant/core/pull/38124 +[#38134]: https://github.com/home-assistant/core/pull/38134 +[#38146]: https://github.com/home-assistant/core/pull/38146 +[#38149]: https://github.com/home-assistant/core/pull/38149 +[#38159]: https://github.com/home-assistant/core/pull/38159 +[#38163]: https://github.com/home-assistant/core/pull/38163 +[@DubhAd]: https://github.com/DubhAd +[@JeffLIrion]: https://github.com/JeffLIrion +[@RobBie1221]: https://github.com/RobBie1221 +[@andrewsayre]: https://github.com/andrewsayre +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@frenck]: https://github.com/frenck +[@ludeeus]: https://github.com/ludeeus +[@mKeRix]: https://github.com/mKeRix +[@pnbruckner]: https://github.com/pnbruckner +[@pschmitt]: https://github.com/pschmitt +[androidtv docs]: /integrations/androidtv/ +[discord docs]: /integrations/discord/ +[nuki docs]: /integrations/nuki/ +[rfxtrx docs]: /integrations/rfxtrx/ +[route53 docs]: /integrations/route53/ +[simplisafe docs]: /integrations/simplisafe/ +[smartthings docs]: /integrations/smartthings/ +[toon docs]: /integrations/toon/ +[xbox_live docs]: /integrations/xbox_live/ + ## All changes
From 8539c6a32bba1ffa2bf0785969a33253d0e576ad Mon Sep 17 00:00:00 2001 From: Heiko Rothe Date: Fri, 24 Jul 2020 23:29:40 +0200 Subject: [PATCH 20/22] Change XboxAPI.com to xapi.us (#14077) The third party service that the docs refer to moved to a different domain. The integration has now been updated to use this domain, so the docs should follow suit. --- source/_integrations/xbox_live.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/xbox_live.markdown b/source/_integrations/xbox_live.markdown index d47283e9259..4c2ab972a84 100644 --- a/source/_integrations/xbox_live.markdown +++ b/source/_integrations/xbox_live.markdown @@ -13,11 +13,11 @@ ha_domain: xbox_live The Xbox Live integration is able to track [Xbox](https://xbox.com/) profiles. To use this sensor you need a free API key from -[XboxAPI.com](https://xboxapi.com/). +[xapi.us](https://xapi.us/). Please also make sure to connect your Xbox account on that site. The configuration requires you to specify XUIDs which are the unique identifiers -for profiles. These can be determined on [XboxAPI.com](https://xboxapi.com/) by +for profiles. These can be determined on [xapi.us](https://xapi.us/) by either looking at your own profile page or using their interactive documentation to search for gamertags. Sensor names default to the gamertag associated with an XUID. @@ -36,7 +36,7 @@ sensor: {% configuration %} api_key: - description: Your API key from [XboxAPI.com](https://xboxapi.com/). + description: Your API key from [xapi.us](https://xapi.us/). required: true type: string xuid: From 1187058a22b51108355babaa654b281c96d88390 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Sat, 25 Jul 2020 11:45:53 -0500 Subject: [PATCH 21/22] Fix repeat & choose action descriptions (#14080) * Fix repeat & choose action descriptions * Change repeat & choose examples to complete scripts/automations to reduce confusion --- source/_docs/scripts.markdown | 124 +++++++++++++++++++++++----------- 1 file changed, 83 insertions(+), 41 deletions(-) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index d70834fcb65..bf1bc4a0de6 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -206,7 +206,7 @@ The following automation shows how to capture the custom event `event_light_stat ### Repeat a Group of Actions This action allows you to repeat a sequence of other actions. Nesting is fully supported. -There are three ways to control how many times the sequence will be repeated. +There are three ways to control how many times the sequence will be run. #### Counted Repeat @@ -215,57 +215,93 @@ the template is rendered when the repeat step is reached. {% raw %} ```yaml -- alias: Repeat the sequence the specified number of times - repeat: - count: "{{ repeat_count }}" +script: + flash_light: + mode: restart sequence: - - ... + - service: light.turn_on + data_template: + entity_id: "light.{{ light }}" + - repeat: + count: "{{ count|int * 2 - 1 }}" + sequence: + - delay: 2 + - service: light.toggle + data_template: + entity_id: "light.{{ light }}" + flash_hallway_light: + sequence: + - service: script.flash_light + data: + light: hallway + count: 3 ``` {% endraw %} #### While Loop -This form accepts a list of conditions that are evaluated _before_ each time the sequence -is run. The sequence will be repeated _as long as_ the condition(s) evaluate to true. +This form accepts a list of conditions (see [conditions page] for available options) that are evaluated _before_ each time the sequence +is run. The sequence will be run _as long as_ the condition(s) evaluate to true. {% raw %} ```yaml -- alias: Repeat the sequence AS LONG AS the conditions are true - repeat: - while: - - condition: state - entity_id: input_boolean.run_loop - state: 'on' - - condition: template - value_template: "{{ repeat.index <= 20 }}" +script: + do_something: sequence: - - ... + - service: script.get_ready_for_something + - alias: Repeat the sequence AS LONG AS the conditions are true + repeat: + while: + - condition: state + entity_id: input_boolean.do_something + state: 'on' + # Don't do it too many times + - condition: template + value_template: "{{ repeat.index <= 20 }}" + sequence: + - service: script.something ``` {% endraw %} #### Repeat Until This form accepts a list of conditions that are evaluated _after_ each time the sequence -is run. Therefore the sequence will always run at least once. The sequence will be executed +is run. Therefore the sequence will always run at least once. The sequence will be run _until_ the condition(s) evaluate to true. {% raw %} ```yaml -- alias: Repeat the sequence UNTIL the conditions are true - repeat: - sequence: - - ... - until: +automation: + - trigger: + - platform: state + entity_id: binary_sensor.xyz + to: 'on' + condition: - condition: state - entity_id: binary_sensor.the_cows_have_come_home - state: 'on' + entity_id: binary_sensor.something + state: 'off' + mode: single + action: + - alias: Repeat the sequence UNTIL the conditions are true + repeat: + sequence: + # Run command that for some reason doesn't always work + - service: shell_command.turn_something_on + # Give it time to complete + - delay: + milliseconds: 200 + until: + # Did it work? + - condition: state + entity_id: binary_sensor.something + state: 'on' ``` {% endraw %} #### Repeat Loop Variable -A variable named `repeat` is defined within the repeat sequence. If repeat sequences are -nested, it always applies to the inner-most loop. It contains the following fields: +A variable named `repeat` is defined within the repeat action (i.e., it is available inside `sequence`, `while` & `until`.) +It contains the following fields: field | description -|- @@ -277,25 +313,31 @@ field | description This action allows you to select a sequence of other actions from a list of sequences. Nesting is fully supported. - -Each sequence is paired with a list of conditions. The first sequence whose conditions are all true will be run. +Each sequence is paired with a list of conditions (see [conditions page] for available options.) The first sequence whose conditions are all true will be run. An optional `default` sequence can be included which will be run if none of the sequences from the list are run. {% raw %} ```yaml -- alias: Choose a sequence to run - choose: - - conditions: - - condition: ... - - condition: ... - sequence: - - ... - - conditions: - - condition: ... - sequence: - - ... - default: - - ... +automation: + - trigger: + - platform: state + entity_id: binary_sensor.motion + mode: queued + action: + - choose: + # IF motion detected + - conditions: + - condition: template + value_template: "{{ trigger.to_state.state == 'on' }}" + sequence: + - service: script.turn_on + entity_id: + - script.slowly_turn_on_front_lights + - script.announce_someone_at_door + # ELSE (i.e., motion stopped) + default: + - service: light.turn_off + entity_id: light.front_lights ``` {% endraw %} From 52be29fe6b61c904c5dac28b3c20aa839a4728a4 Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 25 Jul 2020 12:33:57 -0700 Subject: [PATCH 22/22] Update zwave installation network key information (#14081) --- source/_docs/z-wave/installation.markdown | 7 ------- 1 file changed, 7 deletions(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index fbe0e4ce6c0..e3effd00110 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -101,13 +101,6 @@ zwave: network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c" ``` -In addition to modifying the `configuration.yaml` file, the `options.xml` file network key must be set as well: - -```xml - -