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 00000000000..1343ce46e07 Binary files /dev/null and b/source/images/blog/2020-07-0.113/automation-modes.png differ diff --git a/source/images/blog/2020-07-0.113/script-name.png b/source/images/blog/2020-07-0.113/script-name.png new file mode 100644 index 00000000000..c7d6a484ba5 Binary files /dev/null and b/source/images/blog/2020-07-0.113/script-name.png differ