From fe201845b8f7c0b746d2cce1dce984175cdc054c Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Wed, 28 Jul 2021 22:28:49 +0200
Subject: [PATCH 001/122] Add initial beta release notes for 2021.8.0
---
.../_posts/2021-08-04-release-20218.markdown | 2315 +++++++++++++++++
1 file changed, 2315 insertions(+)
create mode 100644 source/_posts/2021-08-04-release-20218.markdown
diff --git a/source/_posts/2021-08-04-release-20218.markdown b/source/_posts/2021-08-04-release-20218.markdown
new file mode 100644
index 00000000000..08ecff6b421
--- /dev/null
+++ b/source/_posts/2021-08-04-release-20218.markdown
@@ -0,0 +1,2315 @@
+---
+layout: post
+title: "2021.8.0 beta: Feel the energy"
+description: "Beta release notes for Home Assistant 2021.8.0"
+date: 2021-07-28 00:00:00
+date_formatted: "August 4, 2021"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories:
+- Release-Notes
+- Core
+og_image: /images/blog/2021-08/social.png
+feedback: true
+---
+
+
+
+These are the beta release notes for Home Assistant Core 2021.8 (and is thus a
+work in progress).
+
+If you encounter any issues with the beta release, please report them on GitHub:
+
+- Issues with integrations, automations and such (Core related):
+
+- Issues with the frontend/Lovelace:
+
+- Issues with the Supervisor:
+
+- Issues with the documentation:
+
+
+Please be sure to include the beta version you are running in the issue
+description (not title), so we can classify your issue correctly.
+
+Issues introduced in the beta are processed with priority.
+
+- [Energy!](#energy)
+- [Siren](#siren)
+- [Locking, Unlocking and Jammed](#locking-unlocking-and-jammed)
+- [Scripts/Automations/Templates](#scriptsautomationstemplates)
+ - [This](#this)
+ - [Device template functions](#device-template-functions)
+- [Other noteworthy changes](#other-noteworthy-changes)
+- [New Integrations](#new-integrations)
+- [New Platforms](#new-platforms)
+- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
+- [If you need help...](#if-you-need-help)
+- [Breaking Changes](#breaking-changes)
+- [Farewell to the following](#farewell-to-the-following)
+- [All changes](#all-changes)
+
+
+
+## Energy!
+
+This needs a whole section and blog post of its own, but a focus towards
+energy consumption is being added. If you run the beta... Click on "Energy"
+in the sidebar menu to get started...
+
+Some background information can be found here: [Home Energy Management](/docs/energy/)
+
+More to follow... Some temporary screenshots, as they say more than a 1000 words:
+
+
+
+Screenshot of the new energy dashboard.
+
+
+
+
+Screenshot of power usage card on the energy dashboard.
+
+
+## Siren
+
+Last release, we introduced the `select` entity, this release we introduce
+the `siren` entity! 🚨
+
+Thanks to [@raman325] for adding this noise maker to the family! He also
+implement the first integration to add support for Sirens: the Z-Wave JS
+integration. So, if you have a Z-Wave enabled Siren, you can now control it.
+
+- Add siren platform ([@raman325] - [#48309]) ([demo docs]) ([siren docs]) (new-integration)
+- Add support for Z-Wave JS siren ([@raman325] - [#52948]) ([zwave_js docs])
+
+## Locking, Unlocking and Jammed
+
+Locks in Home Assistant can be a little bit more smarter as of today, thanks
+to [@bdraco]. Besides the locked & unlocked states, support for locking,
+unlocking and jammed has been added as well.
+
+Support for these new states have been added to the August, HomeKit Controller
+and template integration. Additionally HomeKit, Alexa and Google Assistant have
+been made compatible and aware for these states as well.
+
+- Update lock entity to support locking, unlocking, jammed ([@bdraco] - [#51455]) ([lock docs])
+- Update alexa lock to support locking, unlocking, jammed ([@bdraco] - [#52841]) ([alexa docs])
+- Update august to support locking, unlocking, jammed ([@bdraco] - [#52814]) ([august docs])
+- Update google assistant locks to support locking, unlocking, jammed ([@bdraco] - [#52820]) ([google_assistant docs])
+- Update template lock to support locking, unlocking, jammed ([@bdraco] - [#52817]) ([template docs])
+- Update homekit controller lock to support locking, unlocking, jammed ([@bdraco] - [#52821]) ([homekit_controller docs])
+- Update homekit lock to support locking, unlocking, jammed ([@bdraco] - [#52819]) ([homekit docs])
+
+## Scripts/Automations/Templates
+
+Some new features landed for script, automations and templates this release.
+
+### This
+
+When an automation or script is triggered to run, a new variable is available:
+`this`. This variable contains the [state object](docs/configurationstate_object)
+of the automation or script running and allows you to access information about
+the automation directly. Thanks, [@r-t-s]!
+
+### Device template functions
+
+If you like to write YAML automations manually, or using template and require
+device IDs or device information, than you know those IDs are hard to find and
+the device information is not available at all.
+
+[@raman325] added some new template functions that can be helpful when working
+with devices.
+
+- `device_entities(device_id)` returns a list of entities that are associated
+ with a given device ID (can also be used as a filter).
+- `device_attr(device_or_entity_id, attr_name)` returns the value of `attr_name`
+ for the given device ID or entity ID.
+- `is_device_attr(device_or_entity_id, attr_name, attr_value)` returns whether
+ the value of `attr_name` for the given device ID or entity ID matches `attr_value`.
+- `device_id(entity_id)` returns the device ID for a given entity ID
+ (can also be used as a filter).
+
+Thanks for these powerful new feature!
+
+- Add DeviceRegistry template functions ([@raman325] - [#53131])
+
+## Other noteworthy changes
+
+There is much more juice in this release; here are some of the other
+noteworthy changes this release:
+
+
+
+- Add motion detection support to motionEye ([@dermotduffy] - [#49665]) ([motioneye docs])
+- Add support for Formaldehyde and VOC level sensors ([@Adminiuga] - [#52232]) ([zha docs])
+- Allow combining value_template and position_template for template cover ([@emontnemery] - [#52383]) ([template docs])
+- Vacation Mode on Alarm Panels ([@posixx] - [#45980]) ([alarm_control_panel docs])
+- Add rainbird set_rain_delay service ([@Kr0llx] - [#52369]) ([rainbird docs])
+- Add sensor platform to goalzero ([@tkdrob] - [#49835]) ([goalzero docs]) (new-platform)
+- Mark entities for dead zwave_js nodes as unavailable ([@raman325] - [#48017]) ([zwave_js docs]) (breaking-change)
+- Add transition support to zwave_js lights ([@firstof9] - [#52160]) ([zwave_js docs])
+- Add AllTrips sensors for BMW Connected Drive ([@EddyK69] - [#50420]) ([bmw_connected_drive docs])
+- Initial support for zwave_js device conditions ([@raman325] - [#52003]) ([zwave_js docs])
+- Add more data_types to modbus ([@janiversen] - [#52423]) ([modbus docs])
+- Change behavior of Z-Wave JS services ([@raman325] - [#52941]) ([zwave_js docs])
+- Add array write to turn_on/off in modbus switch/fan/light ([@janiversen] - [#52582]) ([modbus docs])
+- Add schedule selector for Netatmo ([@cgtobi] - [#52909]) ([netatmo docs])
+- Add generic hygrostat integration ([@Shulyaka] - [#36759]) ([generic_hygrostat docs]) (new-integration)
+- Add sensor support to Freedompro ([@stefano055415] - [#52726]) ([freedompro docs]) (new-integration) (new-platform)
+- Deprecate Lyft integration ([@frenck] - [#53005]) ([lyft docs]) (breaking-change)
+- Add support for Z-Wave JS siren ([@raman325] - [#52948]) ([zwave_js docs])
+- Add zwave_js device triggers ([@raman325] - [#51968]) ([zwave_js docs])
+- Add MQTT humidifier platform integration ([@jbouwh] - [#52828]) ([humidifier docs]) ([mqtt docs]) (new-integration)
+- Add more Gree switches ([@cmroche] - [#49629]) ([gree docs])
+- Add unique ID support to light, cover and media player groups ([@frenck] - [#53225]) ([group docs])
+- Advantage Air add zone temperature sensors ([@Bre77] - [#51941]) ([advantage_air docs])
+- Auto recreate HomeKit TVs when the sources are out of sync ([@bdraco] - [#53208]) ([homekit docs])
+- Add reauth flow to Synology DSM ([@mib1185] - [#53204]) ([synology_dsm docs])
+- Fix similar network names for Fritz ([@chemelli74] - [#53278]) ([fritz docs])
+- Handle more Sonos snapshot restore scenarios ([@jjlawren] - [#53277]) ([sonos docs]) (breaking-change)
+- Store JSON in database in compact format ([@frenck] - [#53364]) ([recorder docs])
+- Add new input to zwave_js.multicast_set_value service ([@raman325] - [#53369]) ([zwave_js docs])
+- Support group events for AC switches and binary sensors. Fixes #53065. ([@bnordli] - [#53384]) ([rfxtrx docs])
+- Add transition to LiteJet ([@joncar] - [#47657])
+- Feature/google calendar read only support ([@BottlecapDave] - [#52790]) ([google docs])
+- Add WLED playlist support ([@frenck] - [#53381]) ([wled docs]) (breaking-change)
+- Add crossfade control support to Sonos ([@jjlawren] - [#53228]) ([sonos docs])
+- Add MFA Capability to Tesla Integration ([@BreakingBread0] - [#53245]) ([tesla docs])
+- Split color temp and color into separate HomeKit services when a light supports both ([@bdraco] - [#53471]) ([homekit docs])
+- KNX: Support for HS-color lights ([@farmio] - [#53538]) ([knx docs])
+- Allow removing workday holidays by name ([@matthewgottlieb] - [#52700]) ([workday docs])
+- Add DeviceRegistry template functions ([@raman325] - [#53131])
+- Add this variable for use by automation and script templates ([@r-t-s] - [#52774]) ([automation docs]) ([script docs])
+- Xiaomi_Miio Humidifier rework ([@jbouwh] - [#52366]) ([xiaomi_miio docs]) (breaking-change)
+
+## New Integrations
+
+We welcome the following new integrations this release:
+
+- [Adax][adax docs], added by [@Danielhiversen]
+- [Automate Pulse 2 Hub by Rollease Acmeda][automate docs], added by [@sillyfrog]
+- [Energy][energy docs], added by the Home Assistant Core team
+- [Flipr][flipr docs], added by [@cnico]
+- [Generic Hygrostat][generic_hygrostat docs], added by [@Shulyaka]
+- [Prosegur][prometheus docs], added by [@dgomes]
+- [Siren][siren docs], added by [@raman325]
+- [YouLess][youless docs], added by [@gjong]
+- [Renault][renault docs], added by [@epenet]
+
+## New Platforms
+
+The following integration got support for a new platform:
+
+- [Belkin WeMo][wemo docs] added sensors for energy usage. Added by [@esev]
+- [Freedompro][freedompro docs] now supports binary sensors, sensors, switches, locks, covers, climate and fans! Added by [@stefano055415]
+- [GIOŚ][gios docs] now has sensors for replacing the air quality platform, added by [@bieniu]
+- [Goal Zero Yeti][goalzero docs], added sensors that provide a lot of information, added by [@tkdrob]
+- [Itho Daalderop Spider][spider docs], added sensors for energy usages. Added by [@peternijssen]
+- [Mill] added support for sensors for its energy consumption, added by [@Danielhiversen]
+- [motionEye][motioneye docs] now exposes switches, added by [@dermotduffy]
+- [Velux][velux docs] now supports lights, added by [@bramstroker]
+- [Z-Wave JS][zwave_js docs] now supports sirens, added by [@raman325]
+
+## Integrations now available to set up from the UI
+
+The following integrations are now available via the Home Assistant UI:
+
+- [CO2 Signal][co2_signal docs], done by [@Danielhiversen]
+- [Honeywell Total Connect Comfort (US)][honeywell docs], done by [@rdfurman]
+- [Notifications for Android TV / Fire TV][nfandroid docs], done by [@tkdrob]
+- [Yale Smart Living][yale_smart_alarm docs], done by [@gjohansson-ST]
+
+## 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.
+
+{% details "Abode" %}
+
+The previously deprecated YAML configuration of the Abode integration has been removed.
+
+Abode is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@frenck] - [#52357]) ([abode docs])
+
+{% enddetails %}
+
+{% details "VeSync" %}
+
+The previously deprecated YAML configuration of the VeSync integration has been removed.
+
+VeSync is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@frenck] - [#52358]) ([vesync docs])
+
+{% enddetails %}
+
+{% details "Demo" %}
+
+Demo switch entity no longer reports `current_power_w` and `today_energy_kwh` attributes.
+
+([@thecode] - [#52424]) ([demo docs])
+
+{% enddetails %}
+
+{% details "AVM FRITZ!Box Net Monitor / AVM FRITZ!Box Tools" %}
+
+In order to optimize device load and avoid exhausting available connections,
+`fritz_netmonitor` has been merged into `fritz`.
+
+Please remove your YAML existing configuration and configure the new integration.
+
+([@chemelli74] - [#52264]) ([fritz docs])
+
+----
+
+The profile switches introduced in the previous release have been removed as
+they where incompatible with the Home Assistant architectural design rules.
+
+Instead, you can now block every device connected individually.
+
+([@AaronDavidSchneider] - [#52721]) ([fritz docs])
+
+{% enddetails %}
+
+{% details "Ambient Weather Station" %}
+
+The previously deprecated YAML configuration of the Ambient Weather Station integration has been removed.
+
+Ambient Weather Station is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@bachya] - [#52459]) ([ambient_station docs])
+
+{% enddetails %}
+
+{% details "Z-Wave JS" %}
+
+Z-Wave JS entities will now be in an `unavailable` state when the parent node
+is considered dead by Z-Wave JS. This may impact existing automations because
+Home Assistant will block service calls to unavailable entities.
+
+A node can potentially be revived by sending a ping to it, therefore you can
+use the new node status sensor (disabled by default) to track node status and
+use the `zwave_js.ping_node` service to try to revive the node.
+
+The node status sensor will always be available even when the node is dead.
+
+([@raman325] - [#48017]) ([zwave_js docs])
+
+{% enddetails %}
+
+{% details "GIOŚ" %}
+
+The Air Quality platform has been marked as deprecated, therefore the
+`air_quality` entity has been removed and replaced with `sensor` entities.
+
+If you used the `air_quality` entity in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@bieniu] - [#52295]) ([gios docs])
+
+{% enddetails %}
+
+{% details "AirVisual" %}
+
+The Air Quality platform has been marked as deprecated, therefore the
+`air_quality` entity has been removed and replaced with `sensor` entities.
+
+If you used the `air_quality` entity in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@bachya] - [#52349]) ([airvisual docs])
+
+----
+
+States for the "Pollutant Level" and "Main Pollutant" entities have changed;
+automations that depended on the old states will need to be updated.
+
+Pollutant Level:
+
+- `Good -> good`
+- `Moderate -> moderate`
+- `Unhealthy -> unhealthy`
+- `Unhealthy for sensitive groups -> unhealthy_sensitive`
+- `Very unhealthy -> very_unhealthy`
+- `Hazardous -> hazardous`
+
+Pollutant Label:
+
+- `Carbon Monoxide -> co`
+- `Nitrogen Dioxide -> n2`
+- `Ozone -> o3`
+- `PM10 -> p1`
+- `PM2.5 -> p2`
+- `Sulfur Dioxide -> s2`
+
+([@bachya] - [#53133]) ([airvisual docs])
+
+{% enddetails %}
+
+{% details "Huawei LTE" %}
+
+Routers currently in unauthenticated mode need to be provided credentials for
+duration of one successful startup in order to retrieve a unique id from the API.
+Unauthenticated mode can then be enabled for subsequent starts in integration options.
+
+([@scop] - [#49878]) ([huawei_lte docs])
+
+{% enddetails %}
+
+{% details "Lyft" %}
+
+The Lyft integration has been deprecated and is pending removal in
+Home Assistant Core 2021.10.0. It is considered impossible to obtain API keys
+to be able to use this integration.
+
+([@frenck] - [#53005]) ([lyft docs])
+
+{% enddetails %}
+
+{% details "Buienradar" %}
+
+The previously deprecated YAML configuration of the Buienradar integration has been removed.
+
+Buienradar is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@frenck] - [#52939]) ([buienradar docs])
+
+{% enddetails %}
+
+{% details "HomeKit" %}
+
+Previously the on/off switches provided to HomeKit by scripts, would enable or
+disable a script. This likely was not what is expected as
+`Hey Siri turn on "script"` would appear to do nothing.
+
+Pressing a script switch in HomeKit now runs the script instead.
+
+([@bdraco] - [#53106]) ([homekit docs])
+
+{% enddetails %}
+
+{% details "Synology DSM" %}
+
+The previously deprecated YAML configuration of the Synology DSM integration has been removed.
+
+Synology DSM is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@mib1185] - [#53197]) ([synology_dsm docs])
+
+{% enddetails %}
+
+{% details "Honeywell Total Connect Comfort (US)" %}
+
+The Honeywell integration migrated to configuration via the UI. Configuring
+Honeywell via YAML configuration has been deprecated and will be removed in a
+future Home Assistant release.
+
+Your existing YAML configuration is automatically imported on upgrade to this release;
+and thus can be safely removed from your YAML configuration after upgrading.
+
+([@rdfurman] - [#50731]) ([honeywell docs])
+
+{% enddetails %}
+
+{% details "CO2 Signal" %}
+
+The CO2 Signal integration migrated to configuration via the UI. Configuring
+CO2 Signal via YAML configuration has been deprecated and will be removed in a
+future Home Assistant release.
+
+Your existing YAML configuration is automatically imported on upgrade to this release;
+and thus can be safely removed from your YAML configuration after upgrading.
+
+([@Danielhiversen] - [#53193]) ([co2signal docs])
+
+{% enddetails %}
+
+{% details "Tibber" %}
+
+The previously deprecated YAML configuration of the Tibber integration has been removed.
+
+Tibber is now configured via the UI, any existing YAML configuration has been imported
+in previous releases and can now be safely removed from your YAML configuration files.
+
+([@Danielhiversen] - [#53235]) ([tibber docs])
+
+{% enddetails %}
+
+{% details "Google Assistant" %}
+
+Home Assistant will no longer expose the legacy fan speeds to Google Assistant.
+
+If you use fans with with Google Assistant, you'll need to resync your device.
+Ask you Google device to `Sync my device` or trigger an update via
+the `google_assistant.request_sync` service.
+
+([@elupus] - [#53105]) ([google_assistant docs])
+
+{% enddetails %}
+
+{% details "Mill" %}
+
+The `consumption_today` and `consumption_total` from the climate entity have
+been removed and replace by sensors.
+
+If you relied on these attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@Danielhiversen] - [#52311]) ([mill docs])
+
+{% enddetails %}
+
+{% details "Modbus" %}
+
+All entities are set to unavailable during loading of modbus integration and
+remain so until data is received. Entities with `scan_interval` = 0
+(entities without polling) are always available, to allow service calls.
+
+The old configuration style with setting `scan_interval`: 9999 will cause the
+entity to be unavailable for 9999 seconds.
+
+([@janiversen] - [#53155]) ([modbus docs])
+
+{% enddetails %}
+
+{% details "devolo Home Control" %}
+
+The consumptions attributes from the switch entities have been removed and
+replaced by sensors.
+
+If you relied on these attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@Shutgun] - [#53335]) ([devolo_home_control docs])
+
+{% enddetails %}
+
+{% details "Sonos" %}
+
+Sonos speaker regrouping behavior may change during snapshot restores for
+certain layouts. Previously, speakers which were joined after a snapshot was
+taken were not unjoined during restores.
+
+Restored groups are now recreated to exactly match the snapshot.
+If `sonos.restore` is called with `with_group: True` (the default) on individual
+speakers (instead of `entity_id: all`) **and** speakers were joined after
+snapshots were taken, then it is possible to create groups which did not
+previously exist.
+
+([@jjlawren] - [#53277]) ([sonos docs])
+
+{% enddetails %}
+
+{% details "Viessmann ViCare" %}
+
+Viessmann introduced a new API to control their devices. The original
+(inofficial API) was shut down which rendered the Home Assistant integration
+useless. This breaking change restores the integrations functionality
+
+This involves adding a new `client_id` parameter. It must be set with an API
+key from the Viessmann developer portal.
+
+Please register and create your private API key.
+Follow these steps to create your API key:
+
+1. Register and login in the [Viessmann Developer Portal](https://developer.viessmann.com).
+2. In the menu navigate to API Keys.
+3. Create a new OAuth client using following data:
+
+ ```txt
+ Name: PyViCare
+ Google reCAPTCHA: Disabled
+ Redirect URIs: vicare://oauth-callback/everest
+ ```
+
+4. Copy the Client ID to the configuration, e.g. `client_id="XXXXXXXXXXXXXX"`
+
+ ```yaml
+ vicare:
+ username: VICARE_EMAIL
+ password: VICARE_PASSWORD
+ client_id: VICARE_CLIENT_ID
+ ```
+
+Please not that not all previous properties are available in the new API.
+Missing properties were removed and might be added later if they are
+available again.
+
+([@oischinger] - [#53281]) ([vicare docs])
+
+{% enddetails %}
+
+{% details "AVM FRITZ!SmartHome" %}
+
+The power and energy attributes from switch entities have been removed and
+replaced by sensors.
+
+If you relied on these attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@mib1185] - [#52562]) ([fritzbox docs])
+
+{% enddetails %}
+
+{% details "Yale Smart Living" %}
+
+The CYale Smart Living integration migrated to configuration via the UI. Configuring
+Yale Smart Living via YAML configuration has been deprecated and will be removed in a
+future Home Assistant release.
+
+Your existing YAML configuration is automatically imported on upgrade to this release;
+and thus can be safely removed from your YAML configuration after upgrading.
+
+([@gjohansson-ST] - [#50850]) ([yale_smart_alarm docs])
+
+{% enddetails %}
+
+{% details "WLED" %}
+
+The `wled.preset` service has been deprecated. In the previous Home Assistant
+release, support for an `select` entity that provides access to presets
+has been added, use that entity in your automations and scripts instead.
+
+([@frenck] - [#53383]) ([wled docs])
+
+----
+
+The `playlist` attribute from the WLED light entities has been removed and
+replaced by a playlist `select` entity instead of the attribute.
+
+If you relied on the attribute in your automation or scripts, you need to
+adjust those to use the new entity instead.
+
+([@frenck] - [#53381]) ([wled docs])
+
+{% enddetails %}
+
+{% details "Broadlink" %}
+
+The power and energy attributes from switch entities have been removed and
+replaced by sensors.
+
+If you relied on these attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@Danielhiversen] - [#53342]) ([broadlink docs])
+
+{% enddetails %}
+
+{% details "Prometheus" %}
+
+This includes a few changes to the names of the exported Prometheus metrics,
+which now better align with Prometheus [naming guidelines](https://github.com/home-assistant/core/tree/dev/homeassistant/components/prometheus#metric-naming-guidelines):
+
+- Default value for the `namespace` configuration variable is now `homeassistant`,
+ and all metric names now have a default `homeassistant_` prefix.
+- Some metrics have been renamed:
+ - `light_state` renamed to `light_brightness_percent`.
+ - `temperature_c` renamed to `climate_target_temperature_celsius`.
+ - `current_temperature_c` renamed to `climate_current_temperature_celsius`.
+ - Sensor metrics now have a `sensor_` name prefix.
+ - Temperature sensor metrics now have a `_celsius` unit suffix (as opposed to just `_c`).
+
+Note, that users that don't currently explicitly set the `namespace` variable
+will see names changed for all exported metrics. If keeping existing metric
+names is important to you, you can adjust your Home Assistant and Prometheus
+configuration as described below.
+
+To keep metrics exported without the `homeassistant_` prefix, explicitly set an
+empty namespace in Home Assistant configuration:
+
+```yaml
+prometheus:
+ namespace: ""
+```
+
+To revert the other metric name changes, you can use [metric_relabel_configs](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs)
+in your Prometheus configuration file to rename the metrics after scraping.
+[This set of relabeling rules](https://gist.github.com/knyar/c3a58f8be92a2b7afadba5c16bbfc28f)
+is a good starting point, but please note that if you set a non-empty `namespace`
+in Home Assistant you will need to adjust these rules accordingly.
+
+([@knyar] - [#50156]) ([prometheus docs])
+
+{% enddetails %}
+
+{% details "Jewish Calendar" %}
+
+The Jewish Calendar integration returned a datetime format that wasn't properly
+formatted according to ISO standards. This has been adjusted.
+
+If you rely on manually parsing of dates that are returned from this integration,
+you might need to adjust your templates to incorporate this change.
+
+([@frenck] - [#52722]) ([jewish_calendar docs])
+
+{% enddetails %}
+
+{% details "Itho Daalderop Spider" %}
+
+The power and energy attributes from switch entities have been removed and
+replaced by sensors.
+
+If you relied on these attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+([@peternijssen] - [#53397]) ([spider docs])
+
+{% enddetails %}
+
+{% details "MySensors" %}
+
+The power and energy attributes from switch entities have been removed.
+
+If you relied on these switch attributes in your automations, scripts or Lovelace
+dashboards, you'll need to update your configuration to match this change.
+
+This measurement (`S_POWER`, `V_WATT`) will still be reported as previously
+by the power sensor entity.
+
+([@MartinHjelmare] - [#53566]) ([mysensors docs])
+
+{% enddetails %}
+
+{% details "Bosch BME280" %}
+
+The YAML configuration for this integration has changed. Instead of a sensor
+config with platform section, an integration configuration section under the
+integration domain key should be used.
+
+Before:
+
+```yaml
+sensor:
+ - platform: bme280
+ name: "Stary_Oskol"
+```
+
+After:
+
+```yaml
+bme280:
+ - name: "Stary_Oskol"
+```
+
+([@Kuzj] - [#48775]) ([bme280 docs])
+
+{% enddetails %}
+
+{% details "Home Assistant Supervisor" %}
+
+The usage of "snapshot" is deprecated, from now "backup" is used instead.
+
+- The service `snapshot_full` is now named `backup_full`, the service `snapshot_full` will be removed in Home Assistant 2021.9.
+- The service `snapshot_partial` is now named `backup_partial`, the service `snapshot_partial` will be removed in Home Assistant 2021.9.
+- Using `snapshot` in the data for the `restore_full` and `restore_partial` services is deprecated and will be removed in Home Assistant 2021.9, use `slug` instead.
+
+Old examples:
+
+```yaml
+service: hassio.snapshot_full
+data:
+ name: "Awesome full snapshot"
+...
+service: hassio.snapshot_partial
+data:
+ name: "Awesome partial snapshot"
+ addons:
+ - awesome_addon
+...
+service: hassio.restore_full
+data:
+ snapshot: sn2321
+...
+service: hassio.restore_partial
+data:
+ snapshot: sn2321
+ addons:
+ - awesome_addon
+```
+
+New examples:
+
+```yaml
+service: hassio.backup_full
+data:
+ name: "Awesome full snapshot"
+...
+service: hassio.backup_partial
+data:
+ name: "Awesome partial snapshot"
+ addons:
+ - awesome_addon
+...
+service: hassio.restore_full
+data:
+ slug: sn2321
+...
+service: hassio.restore_partial
+data:
+ slug: sn2321
+ addons:
+ - awesome_addon
+```
+
+([@ludeeus] - [#51629]) ([hassio docs])
+
+{% enddetails %}
+
+{% details "Xiaomi Miio" %}
+
+Existing Xiaomi Mi automations using the platform specific services for
+humidifiers will have a breaking change. You need to change their automation
+to use new services. Existing fan entities will be automatically replaced with
+new humidity entities.
+
+The entity name is migrated from the fan entity name. The fan entity_id will
+change because the platform will change.
+
+For the related entities the old fan entity name will be prepended to the new
+entities.
+
+Example:
+
+Entity with `entity_id` "fan.my_device" and `name` "My humidifier" will migrate
+to an entity with `entity_id` "humidifier.my_humidifier" and name "My humidifier".
+
+A sensor for `humidity` will have a name like "My humidifier Humidity".
+
+([@jbouwh] - [#52366]) ([xiaomi_miio docs])
+
+{% enddetails %}
+
+{% details "Rituals Perfume Genie" %}
+
+The previously deprecated fan speed and room size attributes have been removed.
+They have now have got their own entities.
+
+([@milanmeu] - [#53611]) ([rituals_perfume_genie docs])
+
+{% enddetails %}
+
+## Farewell to the following
+
+The following integrations are no longer available as of this release:
+
+- **Weather Underground** hss been unavailable and in a non-working state and
+ has therefore been removed. ([@frenck] - [#52999])
+- **Garmin Connect** has been removed. Due to API changes, it stopped working
+ and cannot function without violating Home Assistant design rules. Garmin
+ will not allow open source projects to their official APIs.
+ ([@cyberjunky] - [#52808]) ([garmin_connect docs])
+
+
+## All changes
+
+{% details "Click to see all changes!" %}
+
+- Bump version to 2021.8.0dev0 ([@frenck] - [#52346])
+- Use attrs instead of property for Jewish Calendar ([@yuvalabou] - [#52333]) ([jewish_calendar docs])
+- Remove deprecated YAML configuration from Abode ([@frenck] - [#52357]) ([abode docs]) (breaking-change)
+- Remove deprecated YAML configuration from VeSync ([@frenck] - [#52358]) ([vesync docs]) (breaking-change)
+- Remove redundant property definitions in Ambient PWS ([@bachya] - [#52350]) ([ambient_station docs])
+- Remove redundant property definitions in IQVIA ([@bachya] - [#52378]) ([iqvia docs])
+- Remove redundant property definitions in Flu Near You ([@bachya] - [#52377])
+- Add motion detection support to motionEye ([@dermotduffy] - [#49665]) ([motioneye docs])
+- Remove redundant property definitions in Notion ([@bachya] - [#52367]) ([notion docs])
+- Bump pyfritzhome to 6.2.0 ([@flabbamann] - [#52345]) ([fritzbox docs])
+- Demo: Explicitly return None when no extra state attribute set ([@frenck] - [#52390]) ([demo docs])
+- Add support for Formaldehyde and VOC level sensors ([@Adminiuga] - [#52232]) ([zha docs])
+- Allow combining value_template and position_template for template cover ([@emontnemery] - [#52383]) ([template docs])
+- Vacation Mode on Alarm Panels ([@posixx] - [#45980]) ([alarm_control_panel docs])
+- Use attributes instead of properties for uptime ([@yuvalabou] - [#52398]) ([uptime docs])
+- Remove redundant property definitions in Guardian ([@bachya] - [#52361]) ([guardian docs])
+- Remove redundant property definitions in OpenUV ([@bachya] - [#52379]) ([openuv docs])
+- Clean up netatmo sensor data processing ([@cgtobi] - [#52403]) ([netatmo docs])
+- Add rainbird set_rain_delay service ([@Kr0llx] - [#52369]) ([rainbird docs])
+- Remove boilerplate code in favour of attributes in Netatmo integration ([@cgtobi] - [#52395]) ([netatmo docs])
+- Enable basic type checking for Tasmota ([@emontnemery] - [#52435]) ([tasmota docs])
+- Add sensor platform to goalzero ([@tkdrob] - [#49835]) ([goalzero docs]) (new-platform)
+- Demo: remove deprecated switch entity properties ([@thecode] - [#52424]) ([demo docs]) (breaking-change)
+- Remove redundant property definitions in ReCollect Waste ([@bachya] - [#52368]) ([recollect_waste docs])
+- Add static typing to devolo_home_control ([@Shutgun] - [#52396]) ([devolo_home_control docs])
+- Replace custom listener with helper in ReCollect Waste ([@bachya] - [#52445]) ([recollect_waste docs])
+- Merge fritzbox_netmonitor integration into fritz ([@chemelli74] - [#52264]) ([fritz docs]) ([fritzbox_netmonitor docs]) (breaking-change)
+- Improve typing in Sony Bravia TV integration ([@bieniu] - [#52438]) ([braviatv docs])
+- Enable basic type checking for climate ([@emontnemery] - [#52470]) ([climate docs])
+- Enable basic type checking for gogogate2 ([@emontnemery] - [#52467]) ([gogogate2 docs])
+- Enable basic type checking for trace ([@emontnemery] - [#52468])
+- Replace custom listener with helper in SimpliSafe ([@bachya] - [#52457]) ([simplisafe docs])
+- Remove redundant property definitions in SimpliSafe ([@bachya] - [#52458]) ([simplisafe docs])
+- Remove redundant property definitions in RainMachine ([@bachya] - [#52456]) ([rainmachine docs])
+- Remove redundant property definitions in Tile ([@bachya] - [#52448]) ([tile docs])
+- Enable basic type checking for script ([@emontnemery] - [#52476])
+- Deprecate YAML config for Ambient PWs (2021.9.0 removal) ([@bachya] - [#52459]) ([ambient_station docs]) (breaking-change)
+- Mark entities for dead zwave_js nodes as unavailable ([@raman325] - [#48017]) ([zwave_js docs]) (breaking-change)
+- Update devolo-home-control-api ([@Shutgun] - [#52497]) ([devolo_home_control docs])
+- Add basic typing to ezviz camera platform ([@RenierM26] - [#52492]) ([ezviz docs])
+- Use entity class attributes for airnow ([@tkdrob] - [#52502]) ([airnow docs])
+- Migrate GIOS air_quality platform to sensor ([@bieniu] - [#52295]) ([gios docs]) (breaking-change) (new-platform)
+- Migrate AirVisual `air_quality` platform to `sensor` platform ([@bachya] - [#52349]) ([airvisual docs]) (breaking-change)
+- Use entity class attributes for ambiclimate ([@tkdrob] - [#52521]) ([ambiclimate docs])
+- Use entity class attributes for aemet ([@tkdrob] - [#52499]) ([aemet docs])
+- Use entity class attributes for alpha_vantage ([@tkdrob] - [#52520]) ([alpha_vantage docs])
+- Use entity class attributes for alert ([@tkdrob] - [#52518]) ([alert docs])
+- Add type checking and entity attributes for Fast.com ([@yuvalabou] - [#52524]) ([fastdotcom docs])
+- Enable basic typing for roku ([@ctalkington] - [#52478]) ([roku docs])
+- Use entity class attributes for abode ([@tkdrob] - [#52427]) ([abode docs])
+- Enable basic type checking for mqtt ([@emontnemery] - [#52463]) ([mqtt docs])
+- Use entity class attributes for aftership ([@tkdrob] - [#52500]) ([aftership docs])
+- Fix CI failing due to Shell Command exception ([@thecode] - [#52483]) ([shell_command docs])
+- Rename goalzero sensor ([@tkdrob] - [#52452]) ([goalzero docs])
+- Enable basic type checking for Google cast ([@emontnemery] - [#52434]) ([cast docs])
+- Enable basic type checking for the homeassistant component ([@emontnemery] - [#52464]) ([homeassistant docs])
+- Use entity class attributes for accuweather ([@tkdrob] - [#52431]) ([accuweather docs])
+- Add type annotations and shorten sensor names on ezviz sensor platforms ([@RenierM26] - [#52475]) ([ezviz docs])
+- Fully type Tag component ([@yuvalabou] - [#52540]) ([tag docs])
+- Use entity class attributes for ads ([@tkdrob] - [#52488]) ([ads docs])
+- Use dataclasses in netatmo data handler ([@cgtobi] - [#52537]) ([netatmo docs])
+- Disable flaky shell_command test ([@thecode] - [#52564]) ([shell_command docs])
+- Use entity class attributes for aladdin_connect ([@tkdrob] - [#52516]) ([aladdin_connect docs])
+- Add type hints to LCN ([@alengwenus] - [#52509]) ([lcn docs])
+- Bump gios to version 1.0.2 ([@bieniu] - [#52576]) ([gios docs])
+- Wheels v2021.07.0 ([@pvizeli] - [#52580])
+- Minor improvements of util.percentage typing ([@emontnemery] - [#52581])
+- Improve config entry title for GIOS integration ([@bieniu] - [#52583]) ([gios docs])
+- Minor improvements of MQTT typing ([@emontnemery] - [#52578]) ([mqtt docs]) ([mysensors docs])
+- Add type annotations to init and coordinator. Minor cleanups. ([@RenierM26] - [#52506]) ([ezviz docs])
+- Enable strict typing for Fritz ([@chemelli74] - [#50668]) ([fritz docs])
+- Clean up alarmdecoder ([@tkdrob] - [#52517]) ([alarmdecoder docs])
+- Bump hatasmota to 0.2.20 ([@emontnemery] - [#52591]) ([tasmota docs])
+- Add home-assistant/core as codeowner for the template integration ([@emontnemery] - [#52592]) ([template docs])
+- Use HA location name as `name` in GIOS integration ([@bieniu] - [#52585]) ([gios docs])
+- Upgrade numpy to 1.21.0 ([@frenck] - [#52586]) ([compensation docs]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs])
+- Enable basic type checking for fan ([@emontnemery] - [#52471]) ([fan docs])
+- Remove unnecessary async_setup method for Guardian ([@bachya] - [#52597]) ([guardian docs])
+- Add type annotations to Ambient PWS ([@bachya] - [#52596]) ([ambient_station docs])
+- Python 3.9.6 / Base image 2021.07.0 ([@pvizeli] - [#52605])
+- Bump opencv to 4.5.2.54 ([@pvizeli] - [#52630]) ([opencv docs])
+- Fix Waze Travel Time tests ([@thecode] - [#52663]) ([waze_travel_time docs])
+- Refactor decompression timestamp validation logic in stream component ([@allenporter] - [#52462]) ([stream docs])
+- Add missing type annotations to Guardian ([@bachya] - [#52598]) ([guardian docs])
+- Add missing type annotations to Notion ([@bachya] - [#52599]) ([notion docs])
+- Add missing type annotations to ReCollect Waste ([@bachya] - [#52600]) ([recollect_waste docs])
+- Use entity class attributes for anel_pwrctrl ([@tkdrob] - [#52594]) ([anel_pwrctrl docs])
+- Use entity class attributes for avion ([@tkdrob] - [#52696]) ([avion docs])
+- Use entity class attributes for aurora_abb_power ([@tkdrob] - [#52692]) ([aurora_abb_powerone docs])
+- Use class properties in netatmo ([@cgtobi] - [#52705]) ([netatmo docs])
+- Use entity class attributes for Aten pe ([@tkdrob] - [#52687]) ([aten_pe docs])
+- Hint for str type instead of explicitly casting to str ([@alengwenus] - [#52712]) ([lcn docs])
+- Use entity class attributes for anthemav ([@tkdrob] - [#52602]) ([anthemav docs])
+- Use entity class attributes for apcupsd ([@tkdrob] - [#52662]) ([apcupsd docs])
+- Upgrade Fronius dependency to 0.5.3 ([@nielstron] - [#52737]) ([fronius docs])
+- Use entity class attributes for aurora ([@tkdrob] - [#52690]) ([aurora docs])
+- Add device info to Freedompro ([@stefano055415] - [#52715]) ([freedompro docs])
+- Add transition support to zwave_js lights ([@firstof9] - [#52160]) ([zwave_js docs])
+- Fix pylint issue with stream component c-extension ([@cdce8p] - [#52847]) ([stream docs])
+- Rename preview task to run ([@balloob] - [#52857])
+- Use entity class attributes for bbb_gpio ([@tkdrob] - [#52837]) ([bbb_gpio docs])
+- Use entity class attributes for bayesian ([@tkdrob] - [#52831]) ([bayesian docs])
+- Use entity class attributes for Beewi smartclim ([@tkdrob] - [#52839]) ([beewi_smartclim docs])
+- Use entity class attributes for azure_devops ([@tkdrob] - [#52698]) ([azure_devops docs])
+- Use entity class attributes for arlo ([@tkdrob] - [#52681]) ([arlo docs])
+- Add AllTrips sensors for BMW Connected Drive ([@EddyK69] - [#50420]) ([bmw_connected_drive docs])
+- Add siren platform ([@raman325] - [#48309]) ([demo docs]) ([siren docs]) (new-integration)
+- Add device classes to homematicip_cloud cover ([@LeszekSwirski] - [#52793]) ([homematicip_cloud docs])
+- Initial support for zwave_js device conditions ([@raman325] - [#52003]) ([zwave_js docs])
+- Implement stable unique id for Huawei LTE, requires credentials on setup ([@scop] - [#49878]) ([huawei_lte docs]) (breaking-change)
+- Add more data_types to modbus ([@janiversen] - [#52423]) ([modbus docs])
+- Fix Soundbar exclusion from SamsungTV ([@chemelli74] - [#51023]) ([samsungtv docs])
+- Use entity class attributes for Blinksticklight ([@tkdrob] - [#52892]) ([blinksticklight docs])
+- Use entity class attributes for Bh1750 ([@tkdrob] - [#52886]) ([bh1750 docs])
+- Import Protocol from typing ([@cdce8p] - [#52848])
+- Use entity class attributes for Bizkaibus ([@tkdrob] - [#52888]) ([bizkaibus docs])
+- Bump dessant/lock-threads from 2.0.3 to 2.1.1 (@dependabot - [#52899])
+- Use entity class attributes for Bitcoin ([@tkdrob] - [#52887]) ([bitcoin docs])
+- Improve testing of option flow in Coinbase ([@TomBrien] - [#52870]) ([coinbase docs])
+- Add some type hints for webhook component ([@cgtobi] - [#52895]) ([webhook docs])
+- Improve typing of Tasmota (2/3) ([@emontnemery] - [#52747]) ([tasmota docs])
+- Use entity class attributes for apple_tv ([@tkdrob] - [#52664]) ([apple_tv docs])
+- Set device_class on temperature sensors R-Z ([@emontnemery] - [#52920])
+- Improve typing of Tasmota (3/3) ([@emontnemery] - [#52748]) ([tasmota docs])
+- Upgrade sentry-sdk to 1.3.0 ([@frenck] - [#52926]) ([sentry docs])
+- Correct Wrong "raise" in modbus validators. ([@janiversen] - [#52924]) ([modbus docs])
+- Improve typing of Tasmota (1/3) ([@emontnemery] - [#52746]) ([mqtt docs]) ([tasmota docs])
+- Add array write to turn_on/off in modbus switch/fan/light ([@janiversen] - [#52582]) ([modbus docs])
+- Set device_class on temperature sensors F-K ([@emontnemery] - [#52918]) ([foobot docs]) ([fritzbox docs]) ([glances docs]) ([hddtemp docs]) ([ihc docs]) ([juicenet docs]) ([kaiterra docs])
+- Use properties instead of raw data in the rituals integration ([@milanmeu] - [#52587]) ([rituals_perfume_genie docs])
+- Set device_class on temperature sensors L-Q ([@emontnemery] - [#52919]) ([lacrosse docs]) ([luftdaten docs]) ([mfi docs]) ([mysensors docs]) ([notion docs]) ([openevse docs]) ([qnap docs])
+- Poll Nissan servers for battery updates ([@bwduncan] - [#44826]) ([nissan_leaf docs])
+- Set device_class on temperature sensors A-E ([@emontnemery] - [#49524])
+- Use entity class attributes for bbox ([@tkdrob] - [#52838]) ([bbox docs])
+- Use entity class attributes for Blockchain ([@tkdrob] - [#52894]) ([blockchain docs])
+- Use entity class attributes for Blebox ([@tkdrob] - [#52890]) ([blebox docs])
+- ESPHome enable static type checking ([@OttoWinter] - [#52348]) ([esphome docs])
+- Use entity class attributes for Plex ([@jjlawren] - [#52617]) ([plex docs])
+- String formatting cleanups ([@scop] - [#52937])
+- Use entity class attributes for aqualogic ([@tkdrob] - [#52668]) ([aqualogic docs])
+- Add schedule selector for Netatmo ([@cgtobi] - [#52909]) ([netatmo docs])
+- Fix siren turn on parameter filtering ([@raman325] - [#52947]) ([siren docs])
+- Handle FailedCommand exceptions in zwave_js WS API ([@raman325] - [#52461]) ([zwave_js docs])
+- Change behavior of Z-Wave JS services ([@raman325] - [#52941]) ([zwave_js docs])
+- Minor test coverage improvement of mfi and zwave sensors ([@emontnemery] - [#52935]) ([mfi docs]) ([zwave docs])
+- Add switch support to Freedompro ([@stefano055415] - [#52727]) ([freedompro docs]) (new-integration) (new-platform)
+- Expose async_get_source_ip in the network integration ([@bdraco] - [#52901]) ([network docs])
+- Switch to using entry.async_on_remove ([@raman325] - [#52952]) ([zwave_js docs])
+- Return empty when listing statistic_ids for unsupported statistic ([@emontnemery] - [#52954]) ([history docs]) ([recorder docs])
+- Fix modbus climate precision configuration variable ([@Kirchoff] - [#52651]) ([modbus docs])
+- Validate tone is valid when processing siren.turn_on service call ([@raman325] - [#52953]) ([demo docs]) ([siren docs])
+- Improve docstring for async_get_device_class_lookup ([@emontnemery] - [#52921])
+- Add generic hygrostat integration ([@Shulyaka] - [#36759]) ([generic_hygrostat docs]) (new-integration)
+- Add sensor support to Freedompro ([@stefano055415] - [#52726]) ([freedompro docs]) (new-integration) (new-platform)
+- Set device_class on additional temperature sensors ([@emontnemery] - [#52960]) ([dht docs]) ([ecobee docs]) ([htu21d docs]) ([mhz19 docs]) ([mysensors docs]) ([temper docs]) ([thermoworks_smoke docs]) ([waterfurnace docs])
+- Use entity class attributes for automation ([@tkdrob] - [#52694]) ([automation docs])
+- Add binary_sensor support to Freedompro ([@stefano055415] - [#52717]) ([freedompro docs]) (new-integration) (new-platform)
+- Fix flume converagerc ([@tkdrob] - [#52975])
+- Set device class for climacell temperature sensors ([@emontnemery] - [#52965]) ([climacell docs])
+- Additional fixes for siren platform ([@raman325] - [#52971]) ([siren docs])
+- Use entity class attributes for aquostv ([@tkdrob] - [#52670]) ([aquostv docs])
+- Use entity class attributes for Blackbird ([@tkdrob] - [#52889]) ([blackbird docs])
+- Add missing device classes for climacell sensors ([@raman325] - [#52979]) ([climacell docs])
+- Enable basic type checking for recorder ([@emontnemery] - [#52440]) ([recorder docs])
+- Use entity class attributes for august ([@tkdrob] - [#52744]) ([august docs])
+- Make zwave_js value updated event logic more performant ([@raman325] - [#52997]) ([zwave_js docs])
+- Remove flume for allowed ignore coverage violations ([@frenck] - [#53001])
+- Remove defunct Weather Underground integration ([@frenck] - [#52999]) ([wunderground docs]) (breaking-change)
+- Update homekit to use network integration ([@bdraco] - [#52946]) ([homekit docs]) ([network docs])
+- Include future statistics in history/list_statistic_ids ([@emontnemery] - [#52942]) ([history docs]) ([recorder docs]) ([sensor docs])
+- Deprecate Lyft integration ([@frenck] - [#53005]) ([lyft docs]) (breaking-change)
+- Update statistics meta data on entity_id change ([@emontnemery] - [#52755]) ([recorder docs])
+- Add support for Z-Wave JS siren ([@raman325] - [#52948]) ([zwave_js docs])
+- Add missing test coverage for sirens ([@raman325] - [#53014]) ([siren docs])
+- Add zwave_js device triggers ([@raman325] - [#51968]) ([zwave_js docs])
+- Pylint 2.9.3 ([@Danielhiversen] - [#52972])
+- Use entity class attributes for Co2signal ([@Danielhiversen] - [#53032]) ([co2signal docs])
+- Support user-defined base currency for Coinbase exchange rate sensors ([@TomBrien] - [#52879]) ([coinbase docs])
+- Remove deprecated YAML configuration from Buienradar ([@frenck] - [#52939]) ([buienradar docs]) (breaking-change)
+- Bump actions/stale from 3.0.19 to 4 (@dependabot - [#53042])
+- Clean up freedompro ([@tkdrob] - [#52992]) ([freedompro docs])
+- Add lock support Freedompro ([@stefano055415] - [#52725]) ([freedompro docs]) (new-integration) (new-platform)
+- Use entity class attributes for bme680 ([@tkdrob] - [#53037]) ([bme680 docs])
+- Use entity class attributes for arcam_fmj ([@tkdrob] - [#52675]) ([arcam_fmj docs])
+- Add MQTT humidifier platform integration ([@jbouwh] - [#52828]) ([humidifier docs]) ([mqtt docs]) (new-integration)
+- Use entity class attributes for Bmp280 ([@tkdrob] - [#53036]) ([bmp280 docs])
+- Handle missing peername ([@ludeeus] - [#53052]) ([hassio docs])
+- Use entity class attributes for agent_dvr ([@tkdrob] - [#52501]) ([agent_dvr docs])
+- Use entity class attributes for Bloomsky ([@tkdrob] - [#53030]) ([bloomsky docs])
+- Use entity class attributes for androidtv ([@tkdrob] - [#52531]) ([androidtv docs])
+- Generate const files for config flow scaffolds ([@balloob] - [#53064])
+- Fix google test coverage ([@tkdrob] - [#53060])
+- Use Utility Meter configured name as friendly name ([@rklomp] - [#53051]) ([utility_meter docs])
+- Rewrite mocking in devolo Home Control tests ([@Shutgun] - [#53011]) ([devolo_home_control docs])
+- Update name from "generic" to "generic camera" ([@hmmbob] - [#53080]) ([generic docs])
+- Add cover support to Freedompro ([@stefano055415] - [#52723]) ([freedompro docs]) (new-integration) (new-platform)
+- Revert "Fix google test coverage (#53060)" ([@tkdrob] - [#53085])
+- Replace fritz profile switches by per device parental control switches ([@AaronDavidSchneider] - [#52721]) ([fritz docs]) (breaking-change)
+- Add fan support to Freedompro ([@stefano055415] - [#52724]) ([freedompro docs]) (new-integration) (new-platform)
+- Add On/Off as target values for zwave_js cover stop action ([@p4p3r] - [#52881]) ([zwave_js docs])
+- Update Plugwise Config Flow ([@bouwew] - [#47563]) ([plugwise docs])
+- Fix units for Fritz network sensors ([@chemelli74] - [#53026]) ([fritz docs])
+- Use entity class attributes for Bond ([@tkdrob] - [#53055]) ([bond docs])
+- Log source of discovery in Sonos ([@jjlawren] - [#53101]) ([sonos docs])
+- Replace local Barrier CC constants with library enums ([@kpine] - [#53109]) ([zwave_js docs])
+- Bump library version for Advantage Air ([@Bre77] - [#52813]) ([advantage_air docs])
+- Add more Gree switches ([@cmroche] - [#49629]) ([gree docs])
+- Add new unit types for better type checking ([@cdce8p] - [#53124]) ([climate docs]) ([devolo_home_control docs]) ([esphome docs]) ([fritzbox docs]) ([lcn docs]) ([mysensors docs]) ([zwave_js docs])
+- Improve error message when HomeKit does not support an entity ([@bdraco] - [#53129]) ([homekit docs])
+- Bump greeclimate to 0.11.8 ([@cmroche] - [#53148]) ([gree docs])
+- Fix home_connect test coverage ([@tkdrob] - [#53086])
+- Fix home plus control coverage ([@tkdrob] - [#53087])
+- Use entity class attributes for bosch_shc ([@tkdrob] - [#53057]) ([bosch_shc docs])
+- Add support for tilt only covers to HomeKit ([@bdraco] - [#53130]) ([homekit docs])
+- Use entity class attributes for arwn ([@tkdrob] - [#52683]) ([arwn docs])
+- Use entity class attributes for Blink ([@tkdrob] - [#52891]) ([blink docs])
+- Use entity class attributes for blinkt ([@tkdrob] - [#52893]) ([blinkt docs])
+- Update pylutron-caseta to 0.11.0 ([@defunctzombie] - [#53160]) ([lutron_caseta docs])
+- Fix hisense_aehw4a1 test exclusion ([@tkdrob] - [#53084])
+- Add _attr_state_class ([@Bre77] - [#52815]) ([advantage_air docs])
+- Show the name of the domain in HomeKit when selecting to include ([@bdraco] - [#53169]) ([homekit docs])
+- Please mypy. ([@janiversen] - [#53142]) ([alarmdecoder docs])
+- Bump zeroconf to 0.33.0 ([@bdraco] - [#53174]) ([zeroconf docs])
+- Upgrade pyupgrade to 2.21.2, apply its changes ([@scop] - [#52987])
+- Bump google-nest-sdm to 0.3.0 ([@allenporter] - [#53172]) ([nest docs])
+- Add CO2 and efficiency sensors to Vallox ([@viiru-] - [#48923]) ([vallox docs])
+- Run pyupgrade on homekit config_flow ([@bdraco] - [#53180]) ([homekit docs])
+- Cleanup redundant coveragerc entries ([@tkdrob] - [#53171])
+- Execute scripts from HomeKit ([@bdraco] - [#53106]) ([homekit docs]) (breaking-change)
+- Bump zeroconf to 0.33.1 ([@bdraco] - [#53179]) ([zeroconf docs])
+- Activate mypy for eafm ([@janiversen] - [#53184])
+- Correct typing in control4 and activate mypy ([@janiversen] - [#53156]) ([control4 docs])
+- Add Switcher config flow discovery support ([@thecode] - [#52316]) ([switcher_kis docs])
+- Add sound pressure unit constants (dB + dBa) ([@cdce8p] - [#53159]) ([awair docs]) ([demo docs]) ([isy994 docs]) ([mysensors docs]) ([netatmo docs]) ([point docs])
+- Add pylint CodeStyle extension ([@cdce8p] - [#53147])
+- Bugfix current temperature in gree climate ([@cmroche] - [#53149]) ([gree docs])
+- Correct typing in azure_devops and activate mypy ([@janiversen] - [#53152]) ([azure_devops docs])
+- Use entity class attributes for avea ([@tkdrob] - [#52695]) ([avea docs])
+- Activate mypy in aurora ([@janiversen] - [#53150]) ([aurora docs])
+- Modify AirVisual states to be translatable ([@bachya] - [#53133]) ([airvisual docs]) (breaking-change)
+- Use entity class attributes for Citybikes ([@tkdrob] - [#53167]) ([citybikes docs])
+- Upgrade black to 21.7b0 ([@frenck] - [#53192])
+- Remove I/O in Plex tests ([@jjlawren] - [#53196]) ([plex docs])
+- Upgrade numpy to 1.21.1 ([@frenck] - [#53194]) ([compensation docs]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs])
+- Upgrade holidays to 0.11.2 ([@frenck] - [#53191]) ([workday docs])
+- Correct typing in bsblan and activate mypy ([@janiversen] - [#53153]) ([bsblan docs])
+- Remove yaml support from Synology DSM ([@mib1185] - [#53197]) ([synology_dsm docs]) (breaking-change)
+- Use entity class attributes for bme280 ([@tkdrob] - [#53035]) ([bme280 docs])
+- Use entity class attributes for buienradar ([@tkdrob] - [#53166]) ([buienradar docs])
+- Add honeywell config flow ([@rdfurman] - [#50731]) ([honeywell docs]) (breaking-change)
+- Fix issues after pylint update ([@cdce8p] - [#53205]) ([xiaomi_miio docs])
+- Switch to dataclass from dictionary for climacell sensor definitions ([@raman325] - [#53168]) ([climacell docs])
+- Co2signal configflow ([@Danielhiversen] - [#53193]) ([co2signal docs]) (breaking-change)
+- Refactor KNX tests ([@farmio] - [#53183]) ([knx docs])
+- Small log addition for samsungtv ([@chemelli74] - [#53206]) ([samsungtv docs])
+- Remove duplicate functions in modbus climate/sensor. ([@janiversen] - [#53141]) ([modbus docs])
+- Upgrade modbus to quality level "silver". ([@janiversen] - [#53186]) ([modbus docs])
+- mypy cleanup for homeassistant.components.nest ([@allenporter] - [#53214]) ([nest docs])
+- Increase interval to stop Connection reset by peer ([@aav7fl] - [#53202]) ([mutesync docs])
+- Mark ZHA Light methods as a callbacks ([@Adminiuga] - [#53170]) ([zha docs])
+- Bump codecov/codecov-action from 1.5.2 to 2.0.1 (@dependabot - [#53216])
+- Correct typing and activate mypy. ([@janiversen] - [#53217]) ([huisbaasje docs])
+- Add support for options in zwave_js.set_value service ([@raman325] - [#53212]) ([zwave_js docs])
+- Use entity class attributes for acer_projector ([@tkdrob] - [#52432]) ([acer_projector docs])
+- Update python-typing-update to v0.3.5 ([@cdce8p] - [#53223])
+- Use entity class attributes for Brottsplatskartan ([@tkdrob] - [#53163]) ([brottsplatskartan docs])
+- Tibber, accumulated reward ([@Danielhiversen] - [#53195]) ([tibber docs])
+- Review comments on earlier merge. ([@janiversen] - [#53221]) ([azure_devops docs]) ([insteon docs])
+- Add unique ID support to light, cover and media player groups ([@frenck] - [#53225]) ([group docs])
+- Revert new unit types ([@cdce8p] - [#53226])
+- Use entity class attributes for Brunt ([@tkdrob] - [#53164]) ([brunt docs])
+- Add new electrical unit constants (mV + mA) ([@cdce8p] - [#53158])
+- Correct typing in Insteon and activate mypy ([@janiversen] - [#53222]) ([insteon docs])
+- Address style issues in nest typing ([@allenporter] - [#53236]) ([nest docs])
+- Address late review of Co2 signal ([@Danielhiversen] - [#53232]) ([co2signal docs])
+- Tibber use dataclass ([@Danielhiversen] - [#53233]) ([tibber docs])
+- Update lock entity to support locking, unlocking, jammed ([@bdraco] - [#51455]) ([lock docs])
+- Add typing in dynalite and activate mypy ([@janiversen] - [#53238]) ([dynalite docs])
+- Add friendly name to Fritz profile switches ([@chemelli74] - [#53190]) ([fritz docs])
+- Add last reset and state class to rainforest eagle ([@balloob] - [#52951]) ([rainforest_eagle docs])
+- Address late review of Ambiclimate, code clean up ([@Danielhiversen] - [#53231]) ([ambiclimate docs])
+- Fix typing for climacell dataclass ([@raman325] - [#53240]) ([climacell docs])
+- Rename and reorganize electric unit constants ([@cdce8p] - [#53243]) (breaking-change)
+- Tibber, remove yaml support ([@Danielhiversen] - [#53235]) ([tibber docs]) (breaking-change)
+- Use unit constants ([@cdce8p] - [#53244]) ([fritz docs]) ([powerwall docs])
+- Melcloud use NamedTuple ([@Danielhiversen] - [#53234]) ([melcloud docs])
+- Correct set_temperature in modbus climate ([@janiversen] - [#52923]) ([modbus docs])
+- Cleanup regroup handling in Sonos ([@jjlawren] - [#53241]) ([sonos docs])
+- Fix alert infinite loop on repeat interval of 0 ([@PeteRager] - [#52628]) ([alert docs])
+- Update requirement of homematicip_cloud component to v1.0.1 ([@web-dc] - [#51407]) ([homematicip_cloud docs])
+- Fix modbus setting string as temperature in climate platform ([@frenck] - [#53249]) ([modbus docs])
+- Add extra state attributes to goalzero ([@tkdrob] - [#52932]) ([goalzero docs])
+- Update BlinkStick to 1.2.0 ([@jtitley] - [#52244]) ([blinksticklight docs])
+- Type _attr_extra_state_attributes as a MutableMapping ([@bachya] - [#52616])
+- Advantage Air add zone temperature sensors ([@Bre77] - [#51941]) ([advantage_air docs])
+- Avoid supplemental discovery of ignored upnp entry ([@StevenLooman] - [#53250]) ([upnp docs])
+- Bump pylitterbot to 2021.7.2 ([@natekspencer] - [#53254]) ([litterrobot docs])
+- Ensure Ambient PWS is strictly typed ([@bachya] - [#53251])
+- Correct typing in edl21 and activate mypy. ([@janiversen] - [#53188]) ([edl21 docs])
+- Update alexa lock to support locking, unlocking, jammed ([@bdraco] - [#52841]) ([alexa docs])
+- Recreate HomeKit accessories when calling the reset_accessory service ([@bdraco] - [#53199]) ([homekit docs])
+- Auto recreate HomeKit TVs when the sources are out of sync ([@bdraco] - [#53208]) ([homekit docs])
+- Bump httpx to 0.18.2 ([@bdraco] - [#53257])
+- Update august to support locking, unlocking, jammed ([@bdraco] - [#52814]) ([august docs])
+- Update google assistant locks to support locking, unlocking, jammed ([@bdraco] - [#52820]) ([google_assistant docs])
+- Update template lock to support locking, unlocking, jammed ([@bdraco] - [#52817]) ([template docs])
+- Update homekit controller lock to support locking, unlocking, jammed ([@bdraco] - [#52821]) ([homekit_controller docs])
+- Update homekit lock to support locking, unlocking, jammed ([@bdraco] - [#52819]) ([homekit docs])
+- Drop support for fan speeds and support reverse ([@elupus] - [#53105]) ([google_assistant docs]) (breaking-change)
+- Make additional input for zwave_js device triggers optional ([@raman325] - [#53134]) ([zwave_js docs])
+- Convert Mill consumption attributes to sensors ([@Danielhiversen] - [#52311]) ([mill docs]) (breaking-change) (new-platform)
+- Set modbus entity to non-available unless scan_interval=0 ([@janiversen] - [#53155]) ([modbus docs]) (breaking-change)
+- Calculate count automatically in modbus platforms ([@janiversen] - [#53116]) ([modbus docs])
+- Netatmo, use nameclass ([@Danielhiversen] - [#53247]) ([netatmo docs])
+- Code quality improvements for goalzero ([@tkdrob] - [#53260]) ([goalzero docs])
+- Fix lint on dev ([@balloob] - [#53265]) ([mill docs])
+- Tibber, use nameclass ([@Danielhiversen] - [#53242]) ([tibber docs])
+- Fix MQTT to allow setting an unknown Select state ([@frenck] - [#53227]) ([mqtt docs])
+- Allow for alternative external Growatt servers ([@muppet3000] - [#53102]) ([growatt_server docs])
+- Adax heaters ([@Danielhiversen] - [#50998]) ([adax docs]) (new-integration)
+- Use entity class attributes for arduino ([@tkdrob] - [#52677]) ([arduino docs])
+- Use entity class attributes for atag ([@tkdrob] - [#52686]) ([atag docs])
+- Add config flow to nfandroidtv ([@tkdrob] - [#51280]) ([nfandroidtv docs])
+- Use entity class attributes for airvisual ([@tkdrob] - [#52503]) ([airvisual docs])
+- Use entity class attributes for Bmw connected drive ([@tkdrob] - [#53054]) ([bmw_connected_drive docs])
+- Use entity class attributes for arest ([@tkdrob] - [#52678]) ([arest docs])
+- Use entity class attributes for Broadlink ([@tkdrob] - [#53058]) ([broadlink docs])
+- Add reauth flow to Synology DSM ([@mib1185] - [#53204]) ([synology_dsm docs])
+- Improve typing in Shelly integration ([@bieniu] - [#52544]) ([shelly docs])
+- Fix incorrect unit ([@cdce8p] - [#53274]) ([fritz docs])
+- Fix similar network names for Fritz ([@chemelli74] - [#53278]) ([fritz docs])
+- Use entity class attributes for Bsblan ([@tkdrob] - [#53165]) ([bsblan docs])
+- Convert skybell to use NamedTuple ([@janiversen] - [#53269]) ([skybell docs])
+- Convert ebox to use NamedTuple ([@janiversen] - [#53272]) ([ebox docs])
+- Add new unit constants ([@cdce8p] - [#53258]) ([ambient_station docs]) ([arwn docs]) ([huawei_lte docs])
+- Refactor goalzero ([@tkdrob] - [#53282]) ([goalzero docs])
+- Flipr integration ([@cnico] - [#46582]) ([flipr docs]) (new-integration)
+- Add missing type annotations to Airvisual ([@bachya] - [#52615]) ([airvisual docs])
+- Add refresh after turning switch on or off and type annotations to ezviz ([@RenierM26] - [#52469]) ([ezviz docs])
+- Upgrade PyNaCl to 1.4.0 ([@frenck] - [#53287]) ([mobile_app docs]) ([owntracks docs])
+- Use None instead of STATE_UNKNOWN in template lock ([@bdraco] - [#53286]) ([template docs])
+- Add type annotations for Netatmo ([@cgtobi] - [#52811]) ([netatmo docs])
+- Add WS API to access solar forecast data ([@balloob] - [#53264]) ([forecast_solar docs])
+- Test KNX switch ([@farmio] - [#53289]) ([knx docs])
+- Migrate forecast solar to v2 ([@balloob] - [#53259]) ([forecast_solar docs])
+- Avoid dataclass incompat with mock spec ([@balloob] - [#53298]) ([forecast_solar docs])
+- Use NamedTuple - nws ([@cdce8p] - [#53293]) ([nws docs])
+- Use NamedTuple - metoffice ([@cdce8p] - [#53294]) ([metoffice docs])
+- Use NamedTuple - glances ([@cdce8p] - [#53297]) ([glances docs])
+- Use NamedTuple - ondilo_ico ([@cdce8p] - [#53296]) ([ondilo_ico docs])
+- Use NamedTuple - epsonworkforce ([@cdce8p] - [#53295]) ([epsonworkforce docs])
+- Ensure Guardian is strictly typed ([@bachya] - [#53253]) ([guardian docs])
+- Bump zwave-js-server-python to 0.28.0 ([@raman325] - [#53302]) ([zwave_js docs])
+- Block title in strings.json unless internal or allowed ([@balloob] - [#53304])
+- Add support for updating the ISY ip address from discovery ([@bdraco] - [#53290]) ([isy994 docs])
+- Use entity class attributes for Bluesound ([@tkdrob] - [#53033]) ([bluesound docs])
+- Disable speeds for first gen Xiaomi_miio air purifiers ([@jbouwh] - [#52772]) ([xiaomi_miio docs])
+- Use NamedTuple - brother ([@cdce8p] - [#53330]) ([brother docs])
+- Speedtestdotnet code cleanup and type hints ([@engrbm87] - [#52533]) ([speedtestdotnet docs])
+- Use NamedTuple - rova ([@cdce8p] - [#53292]) ([rova docs])
+- Add a homekit.unpair service to forcefully remove pairings ([@bdraco] - [#53303]) ([homekit docs])
+- Remove energy attributes from switch platform in devolo Home Control ([@Shutgun] - [#53335]) ([devolo_home_control docs]) (breaking-change)
+- Switch wirelesstag to use cloud push ([@sergeymaysak] - [#50984]) ([wirelesstag docs])
+- Add Automate Pulse Hub v2 support ([@sillyfrog] - [#39501]) ([automate docs]) (new-integration)
+- Use entity class attributes for caldav ([@tkdrob] - [#53332]) ([caldav docs])
+- Use NamedTuple - rainbird ([@cdce8p] - [#53329]) ([rainbird docs])
+- Upgrade wled to 0.7.3 ([@frenck] - [#53340]) ([wled docs])
+- Fritzbox enable temp sensor ([@mib1185] - [#52558]) ([fritzbox docs])
+- Add state class and last reset to consumption sensor in devolo Home Control ([@Shutgun] - [#53337]) ([devolo_home_control docs])
+- Fix for issue #53031 ([@MrHarcombe] - [#53343]) ([metoffice docs])
+- Making Pytest default for VS code ([@chemelli74] - [#53203])
+- Handle more Sonos snapshot restore scenarios ([@jjlawren] - [#53277]) ([sonos docs]) (breaking-change)
+- Bump aionotion to 3.0.2 ([@bachya] - [#53354]) ([notion docs])
+- Create APIs for Insteon panel ([@teharris1] - [#49785]) ([insteon docs]) (new-integration)
+- Replace util.get_local_ip in favor of components.network.async_get_source_ip() - part 1 ([@chemelli74] - [#52980]) (breaking-change)
+- Do not automatically add title to strings.json ([@balloob] - [#53350])
+- Update to PyVicare 1.0 ([@oischinger] - [#53281]) ([vicare docs]) (breaking-change)
+- Use entity class attributes for canary ([@tkdrob] - [#53333]) ([canary docs])
+- Store JSON in database in compact format ([@frenck] - [#53364]) ([recorder docs])
+- Bump HAP-python to 3.5.2 ([@bdraco] - [#53362]) ([homekit docs])
+- Move Sonos to upstream SoCo ([@amelchio] - [#53351]) ([sonos docs])
+- Use entity class attributes for Cert expiry ([@tkdrob] - [#53363]) ([cert_expiry docs])
+- Add motionEye switches ([@dermotduffy] - [#52491]) ([motioneye docs]) (new-platform)
+- Move Fritzbox power, energy and temperature switch attributes to sensors ([@mib1185] - [#52562]) ([fritzbox docs]) (breaking-change)
+- Upgrade wled to 0.8.0 ([@frenck] - [#53376]) ([wled docs])
+- Send initial status in zwave_js WS API cmds to subscribe to updates ([@raman325] - [#53386]) ([zwave_js docs])
+- Add new input to zwave_js.multicast_set_value service ([@raman325] - [#53369]) ([zwave_js docs])
+- Support group events for AC switches and binary sensors. Fixes #53065. ([@bnordli] - [#53384]) ([rfxtrx docs])
+- Upgrade debugpy to 1.4.0 ([@frenck] - [#53284]) ([debugpy docs])
+- Add support for power data from Koogeek SW2 via homekit_controller ([@Jc2k] - [#53378]) ([homekit_controller docs])
+- Enforce strict typing for Notion ([@bachya] - [#53355]) ([notion docs])
+- Convert CO2Signal to data update coordinator and add fossil fuel percentage ([@balloob] - [#53370]) ([co2signal docs])
+- Use class attributes in devolo Home Control ([@Shutgun] - [#53360]) ([devolo_home_control docs])
+- Handle homekit accessories where the pairing flag is wrong ([@Jc2k] - [#53385]) ([homekit_controller docs])
+- Use entity class attributes for asuswrt ([@tkdrob] - [#52685]) ([asuswrt docs])
+- Fix motionEye switch refresh bug ([@dermotduffy] - [#53413]) ([motioneye docs])
+- Add missing string interpolation ([@samueltardieu] - [#53422]) ([zha docs])
+- Add transition to LiteJet ([@joncar] - [#47657])
+- Use entity class attributes for advantage_air ([@tkdrob] - [#52498]) ([advantage_air docs])
+- Test KNX services ([@farmio] - [#53367]) ([knx docs])
+- Ensure PyPI packages can still be installed on high latency connections ([@bdraco] - [#53365])
+- Update Plugwise config_flow once more ([@bouwew] - [#53423]) ([plugwise docs])
+- Bump to py-synologydsm-api 1.0.3 ([@mib1185] - [#53402]) ([synology_dsm docs])
+- Enforce strict typing for OpenUV ([@bachya] - [#53409]) ([openuv docs])
+- Test KNX select ([@farmio] - [#53371]) ([knx docs])
+- Upgrade open-garage to 0.1.5 ([@davidjb] - [#53412]) ([opengarage docs])
+- Add support for Velux light devices ([@bramstroker] - [#49338]) ([velux docs]) (new-platform)
+- Ensure HomeKit accessories are started again after reset ([@bdraco] - [#53372]) ([homekit docs])
+- Add yale_smart_alarm config flow and coordinator ([@gjohansson-ST] - [#50850]) ([yale_smart_alarm docs]) (breaking-change)
+- Bump yalesmartalarmclient to 0.3.4 ([@gjohansson-ST] - [#53431]) ([yale_smart_alarm docs])
+- Add myself to webOS TV codeowners ([@thecode] - [#53428]) ([webostv docs])
+- Use entity class attributes for climacell ([@tkdrob] - [#53444]) ([climacell docs])
+- Fix System Bridge unique key for filesystem sensors ([@timmo001] - [#53446]) ([system_bridge docs])
+- Address late review of Adax ([@Danielhiversen] - [#53456]) ([adax docs])
+- Fix wan/device uptime and add state_class to counters for Fritz ([@chemelli74] - [#52574]) ([fritz docs])
+- Pass clientsession. ([@dermotduffy] - [#53455]) ([motioneye docs])
+- Bump aioambient to 1.2.4 ([@timmo001] - [#53467]) ([ambient_station docs])
+- Bugfix package 0.3.4 ([@gjohansson-ST] - [#53470]) ([yale_smart_alarm docs])
+- Codereview fixes. ([@dermotduffy] - [#53452]) ([motioneye docs])
+- Feature/google calendar read only support ([@BottlecapDave] - [#52790]) ([google docs])
+- Late review comment in edl21 ([@janiversen] - [#53464]) ([edl21 docs])
+- Bump up ZHA dependencies ([@Adminiuga] - [#53472]) ([zha docs])
+- Fix flakey august pubnub test ([@bdraco] - [#53474]) ([august docs])
+- Reduce repetitive noise in Sonos debug logs ([@jjlawren] - [#53352]) ([sonos docs])
+- Bump codecov/codecov-action from 2.0.1 to 2.0.2 (@dependabot - [#53487])
+- Allow zeroconf name change if there is another Home Assistant running on the local network ([@bdraco] - [#53476]) ([zeroconf docs])
+- Deprecate wled.preset service ([@frenck] - [#53383]) ([wled docs]) (breaking-change)
+- Add WLED playlist support ([@frenck] - [#53381]) ([wled docs]) (breaking-change)
+- Add state class measurement to sensors where suitable for Synology DSM ([@mib1185] - [#53468]) ([synology_dsm docs])
+- Update pyupgrade to v2.23.0 ([@cdce8p] - [#53495])
+- Reduce min scan interval to 10s for InfluxDB ([@broadcasttechie] - [#53276]) ([influxdb docs])
+- Address late review of homekit_controller ([@Jc2k] - [#53492]) ([homekit_controller docs])
+- Update pylint to 2.9.5 ([@cdce8p] - [#53496])
+- Add MAC to SamsungTV when missing ([@chemelli74] - [#53479]) ([samsungtv docs])
+- Increase pool max size for urllib3 in Fritz integration ([@chemelli74] - [#53461]) ([fritz docs])
+- Broadlink, remove attr_current_power_w and add sensor ([@Danielhiversen] - [#53342]) ([broadlink docs]) (breaking-change)
+- Support controlling Flowerbud spray level via homekit_controller ([@Jc2k] - [#53493]) ([homekit_controller docs])
+- Support energy/power sensors in the WeMo component ([@esev] - [#53419]) ([wemo docs]) (new-platform)
+- Add zwave_js WS API commands to get statistics ([@raman325] - [#53393]) ([zwave_js docs])
+- Add energy integration ([@bramkragten] - [#52001]) ([default_config docs]) ([energy docs]) ([history docs]) ([websocket_api docs]) (new-integration)
+- Mark energy integration as internal ([@frenck] - [#53513]) ([energy docs])
+- Add country code to co2signal state attributes ([@balloob] - [#53512]) ([co2signal docs])
+- Bump motioneye-client version to v0.3.11 ([@dermotduffy] - [#53504]) ([motioneye docs])
+- Musiccast grouping fixes ([@micha91] - [#52339]) ([yamaha_musiccast docs])
+- Rename Prometheus metrics to conform with naming guidelines ([@knyar] - [#50156]) ([prometheus docs]) (breaking-change)
+- Change integration modbus to use _attr variables ([@janiversen] - [#53511]) ([modbus docs])
+- Use entity class attributes for cloud ([@tkdrob] - [#53445]) ([cloud docs])
+- Add crossfade control support to Sonos ([@jjlawren] - [#53228]) ([sonos docs])
+- Add SensorEntityDescription class ([@frenck] - [#53357]) ([ambee docs]) ([sensor docs])
+- Make sure that vocolinc flowerbud humidity sensor is exposed (via homekit_controller) ([@Jc2k] - [#53518]) ([homekit_controller docs])
+- xknx 0.18.9 ([@farmio] - [#53519]) ([knx docs])
+- Fix typo in codeowners ([@oxan] - [#53520]) ([coronavirus docs]) ([energy docs])
+- Update frontend to 20210726.0 ([@bramkragten] - [#53522]) ([frontend docs])
+- Add description classes to entity components ([@frenck] - [#53521])
+- Address late review comments on Netatmo ([@cgtobi] - [#53524]) ([netatmo docs])
+- Fix Rituals Perfume Genie sensors icons ([@milanmeu] - [#53517]) ([rituals_perfume_genie docs])
+- Upgrade pyrituals to 0.0.6 ([@milanmeu] - [#53527]) ([rituals_perfume_genie docs])
+- Adjust typing of _attr_extra_state_attributes ([@frenck] - [#53529]) ([airvisual docs]) ([guardian docs]) ([netatmo docs]) ([openuv docs]) ([sia docs])
+- Increase static type coverage for nest integration ([@allenporter] - [#53475]) ([nest docs])
+- Use EntityDescription - nws ([@cdce8p] - [#53523]) ([nws docs])
+- Add MFA Capability to Tesla Integration ([@BreakingBread0] - [#53245]) ([tesla docs])
+- Ensure Jewish Calendar returns an iso formatted timestamp ([@frenck] - [#52722]) ([jewish_calendar docs]) (breaking-change)
+- Clean wemo sensor attributes ([@esev] - [#53532]) ([wemo docs])
+- Update nexia to 0.9.11 ([@mdz] - [#53534]) ([nexia docs])
+- Enforce strict typing for Flu Near You ([@bachya] - [#53407]) ([flunearyou docs])
+- Enforce strict typing for RainMachine ([@bachya] - [#53414]) ([rainmachine docs])
+- Add select entities to ESPHome ([@jesserockz] - [#53526]) ([esphome docs])
+- Enable strict typing for Rituals Perfume Genie ([@milanmeu] - [#53543]) ([rituals_perfume_genie docs])
+- Enforce strict typing for Tile ([@bachya] - [#53410]) ([tile docs])
+- Use SensorEntityDescription for wemo ([@esev] - [#53537]) ([wemo docs])
+- Use SensorEntityDescription in Airly integration ([@bieniu] - [#53540]) ([airly docs])
+- Use SensorEntityDescription in Nettigo Air Monitor ([@bieniu] - [#53539]) ([nam docs])
+- Replace HomeAssistantType with HomeAssistant ([@milanmeu] - [#53545]) ([hyperion docs]) ([lcn docs]) ([meteoclimatic docs]) ([modern_forms docs]) ([philips_js docs]) ([siren docs]) ([yamaha_musiccast docs])
+- Remove incorrect use of ConfigType in config flows ([@milanmeu] - [#53544])
+- UniFi lies about the client being noted, using the real note instead if it exists ([@Kane610] - [#53542]) ([unifi docs])
+- Update spider integration to support HEM ([@peternijssen] - [#53397]) ([spider docs]) (breaking-change) (new-platform)
+- Replace ServiceCallType with ServiceCall in lcn services ([@milanmeu] - [#53547]) ([lcn docs])
+- Use entity descriptions classes in DSMR ([@frenck] - [#53549]) ([dsmr docs])
+- Upgrade Rituals Perfume Genie to quality level "silver" ([@milanmeu] - [#53550]) ([rituals_perfume_genie docs])
+- Use EntityDescription - metoffice ([@cdce8p] - [#53555]) ([metoffice docs])
+- Ignore Sonos Boost devices during discovery v2 ([@jjlawren] - [#53358]) ([sonos docs])
+- Use EntityDescription - glances ([@cdce8p] - [#53559]) ([glances docs])
+- Use SensorEntityDescription in Brother integration ([@bieniu] - [#53558]) ([brother docs])
+- Add initial version for the YouLess integration ([@gjong] - [#41942]) ([youless docs]) (new-integration)
+- Use EntityDescription - epsonworkforce ([@cdce8p] - [#53556]) ([epsonworkforce docs])
+- Use entity descriptions classes in Forecast.Solar ([@frenck] - [#53553]) ([forecast_solar docs])
+- Refactor the logic for peeking into the start of the stream ([@allenporter] - [#52699]) ([stream docs])
+- Use EntityDescription - rainbird ([@cdce8p] - [#53560]) ([rainbird docs])
+- Bump matrix-client to 0.4.0 ([@johansmitsnl] - [#53508]) ([matrix docs])
+- Use EntityDescription - ebox ([@cdce8p] - [#53565]) ([ebox docs])
+- Split color temp and color into separate HomeKit services when a light supports both ([@bdraco] - [#53471]) ([homekit docs])
+- Bump `gios` library to version 2.0 ([@bieniu] - [#53557]) ([gios docs])
+- Use EntityDescription - rova ([@cdce8p] - [#53531]) ([rova docs])
+- Fix various zeroconf IPv6 compatibility issues ([@vfreex] - [#53505]) ([network docs]) ([zeroconf docs])
+- KNX: Support for HS-color lights ([@farmio] - [#53538]) ([knx docs])
+- Add more mysensors sensor attributes ([@MartinHjelmare] - [#53566]) ([mysensors docs]) (breaking-change)
+- Use EntityDescription - skybell ([@cdce8p] - [#53564]) ([skybell docs])
+- Use entity class attributes for Cast ([@tkdrob] - [#53348]) ([cast docs])
+- Use EntityDescription - tibber ([@cdce8p] - [#53569]) ([tibber docs])
+- Use entity class attributes for clementine ([@tkdrob] - [#53405]) ([clementine docs])
+- Allow removing workday holidays by name ([@matthewgottlieb] - [#52700]) ([workday docs])
+- Move the coordinator logic to the BroadlinkEntity class ([@felipediel] - [#53571]) ([broadlink docs])
+- Bump yalexs to 1.1.13 to fix august doorsense offline at startup ([@bdraco] - [#53574]) ([august docs])
+- Replace util.get_local_ip in favor of components.network.async_get_source_ip() - part 3 ([@chemelli74] - [#53424]) ([emulated_roku docs]) (breaking-change)
+- Bump pyairvisual to 5.0.9 ([@bachya] - [#53578]) ([airvisual docs])
+- Remove garmin_connect integration ([@cyberjunky] - [#52808]) ([garmin_connect docs]) (breaking-change)
+- Create stats for all sensors that have % unit and are measurement ([@balloob] - [#53576]) ([sensor docs])
+- Enforce strict typing for SimpliSafe ([@bachya] - [#53417]) ([simplisafe docs])
+- Add Prosegur Alarms ([@dgomes] - [#44679]) ([prosegur docs]) (new-integration)
+- Refactor bme280, add SPI support ([@Kuzj] - [#48775]) ([bme280 docs]) (breaking-change)
+- Rename snapshot -> backup ([@ludeeus] - [#51629]) ([hassio docs]) (breaking-change)
+- Use EntityDescription - ondilo_ico ([@cdce8p] - [#53579]) ([ondilo_ico docs])
+- Use EntityDescription - dwd_weather_warnings ([@cdce8p] - [#53580]) ([dwd_weather_warnings docs])
+- Use EntityDescription - climacell ([@cdce8p] - [#53573]) ([climacell docs])
+- Use EntityDescription - melcloud ([@cdce8p] - [#53572]) ([melcloud docs])
+- Add DeviceRegistry template functions ([@raman325] - [#53131])
+- Bump frontend to 20210727.0 ([@balloob] - [#53591]) ([frontend docs])
+- Add statistics support for SMA energy sensors ([@bramkragten] - [#53589]) ([sma docs])
+- Add currency to location data ([@ludeeus] - [#53575]) ([config docs]) ([ps4 docs])
+- Fix mypy type for timestamp validator ([@allenporter] - [#53598]) ([stream docs])
+- Use EntityDescription - netatmo ([@cdce8p] - [#53568]) ([netatmo docs])
+- Use SensorEntityDescription in GIOS integration ([@bieniu] - [#53581]) ([gios docs])
+- Bump plexapi to 4.7.0 ([@jjlawren] - [#53597]) ([plex docs])
+- Improve CO2Signal error handling ([@balloob] - [#53602]) ([co2signal docs])
+- Enforce strict typing for ReCollect Waste ([@bachya] - [#53356]) ([recollect_waste docs])
+- Add currency core configuration ([@frenck] - [#53541]) ([api docs]) ([config docs])
+- Use the new EntityDescription for motionEye switches ([@dermotduffy] - [#53536]) ([motioneye docs])
+- Add this variable for use by automation and script templates ([@r-t-s] - [#52774]) ([automation docs]) ([script docs])
+- Enable strict static type checking for nest integration ([@allenporter] - [#53535]) ([nest docs])
+- Skip 'None' values when restoring climate scenes ([@allenporter] - [#53484]) ([climate docs])
+- Fix missing encoding with open() ([@cdce8p] - [#53593])
+- Combine some stream test mocks ([@allenporter] - [#53600]) ([stream docs])
+- Use SensorEntityDescription in AccuWeather integration ([@bieniu] - [#53604]) ([accuweather docs])
+- Pin pandas to 1.3.0 ([@pvizeli] - [#53607])
+- Xiaomi_Miio Humidifier rework ([@jbouwh] - [#52366]) ([xiaomi_miio docs]) (breaking-change)
+- Remove unnecessary `init_integration()` call in NAM tests ([@bieniu] - [#53609]) ([nam docs])
+- Add mixin classes for required keys in EntityDescription ([@cdce8p] - [#53610]) ([climacell docs]) ([melcloud docs]) ([netatmo docs])
+- Remove Rituals DiffuserSwitch extra_state_attributes ([@milanmeu] - [#53611]) ([rituals_perfume_genie docs]) (breaking-change)
+- Clean device initialization log for Xiaomi Miio humidifiers ([@bieniu] - [#53612]) ([xiaomi_miio docs])
+- Auto reset on value going back to 0 in ESPHome ([@jesserockz] - [#53592]) ([esphome docs])
+- Add Khadas VIM3 ([@agners] - [#53616])
+- Bump zeroconf to 0.33.2 ([@bdraco] - [#53625]) ([zeroconf docs])
+- Remove currency from energy, use core config ([@bramkragten] - [#53615]) ([energy docs])
+- Fix broadlink creating duplicate unique IDs (2) ([@felipediel] - [#53622]) ([broadlink docs])
+- Add deCONZ support for Legrand Self-e ZGP switches ([@fredericseiler] - [#53008]) ([deconz docs])
+- Upgrade ns-api to 3.0.5 ([@Danielhiversen] - [#53620]) ([nederlandse_spoorwegen docs])
+- Remove CONNECTION_CLASS from Yale Smart Alarm ConfigFlow ([@milanmeu] - [#53629]) ([yale_smart_alarm docs])
+- Test KNX events ([@farmio] - [#53433]) ([knx docs])
+- Fix Yale Smart Alarm strings ([@milanmeu] - [#53627]) ([yale_smart_alarm docs])
+- Include advertise_addr in Sonos logs when used ([@jjlawren] - [#53617]) ([sonos docs])
+- Add climate support to Freedompro ([@stefano055415] - [#52720]) ([freedompro docs]) (new-integration) (new-platform)
+- Use entity class attributes for cmus ([@tkdrob] - [#53458]) ([cmus docs])
+- Bump frontend to 20210728.0 ([@balloob] - [#53634]) ([frontend docs])
+- Only declare powerwall login failure after 5 attempts ([@bdraco] - [#53635]) ([powerwall docs])
+- Add CameraEntityDescription to camera integration ([@janiversen] - [#53636]) ([camera docs])
+- Fix missing supported_features when only custom presets for ESPHome ([@OttoWinter] - [#53632]) ([esphome docs])
+- Tado, setup to return False and not ConfigEntryNotReady on RuntimeError ([@milanmeu] - [#53637]) ([tado docs])
+- Add renault integration ([@epenet] - [#39605]) ([renault docs]) (new-integration)
+
+{% enddetails %}
+
+[#36759]: https://github.com/home-assistant/core/pull/36759
+[#39501]: https://github.com/home-assistant/core/pull/39501
+[#39605]: https://github.com/home-assistant/core/pull/39605
+[#41942]: https://github.com/home-assistant/core/pull/41942
+[#44679]: https://github.com/home-assistant/core/pull/44679
+[#44826]: https://github.com/home-assistant/core/pull/44826
+[#45980]: https://github.com/home-assistant/core/pull/45980
+[#46582]: https://github.com/home-assistant/core/pull/46582
+[#47563]: https://github.com/home-assistant/core/pull/47563
+[#47657]: https://github.com/home-assistant/core/pull/47657
+[#48017]: https://github.com/home-assistant/core/pull/48017
+[#48309]: https://github.com/home-assistant/core/pull/48309
+[#48775]: https://github.com/home-assistant/core/pull/48775
+[#48923]: https://github.com/home-assistant/core/pull/48923
+[#49338]: https://github.com/home-assistant/core/pull/49338
+[#49524]: https://github.com/home-assistant/core/pull/49524
+[#49629]: https://github.com/home-assistant/core/pull/49629
+[#49665]: https://github.com/home-assistant/core/pull/49665
+[#49785]: https://github.com/home-assistant/core/pull/49785
+[#49835]: https://github.com/home-assistant/core/pull/49835
+[#49878]: https://github.com/home-assistant/core/pull/49878
+[#50156]: https://github.com/home-assistant/core/pull/50156
+[#50420]: https://github.com/home-assistant/core/pull/50420
+[#50668]: https://github.com/home-assistant/core/pull/50668
+[#50731]: https://github.com/home-assistant/core/pull/50731
+[#50850]: https://github.com/home-assistant/core/pull/50850
+[#50984]: https://github.com/home-assistant/core/pull/50984
+[#50998]: https://github.com/home-assistant/core/pull/50998
+[#51023]: https://github.com/home-assistant/core/pull/51023
+[#51280]: https://github.com/home-assistant/core/pull/51280
+[#51407]: https://github.com/home-assistant/core/pull/51407
+[#51455]: https://github.com/home-assistant/core/pull/51455
+[#51629]: https://github.com/home-assistant/core/pull/51629
+[#51941]: https://github.com/home-assistant/core/pull/51941
+[#51968]: https://github.com/home-assistant/core/pull/51968
+[#52001]: https://github.com/home-assistant/core/pull/52001
+[#52003]: https://github.com/home-assistant/core/pull/52003
+[#52160]: https://github.com/home-assistant/core/pull/52160
+[#52232]: https://github.com/home-assistant/core/pull/52232
+[#52244]: https://github.com/home-assistant/core/pull/52244
+[#52264]: https://github.com/home-assistant/core/pull/52264
+[#52295]: https://github.com/home-assistant/core/pull/52295
+[#52311]: https://github.com/home-assistant/core/pull/52311
+[#52316]: https://github.com/home-assistant/core/pull/52316
+[#52333]: https://github.com/home-assistant/core/pull/52333
+[#52339]: https://github.com/home-assistant/core/pull/52339
+[#52345]: https://github.com/home-assistant/core/pull/52345
+[#52346]: https://github.com/home-assistant/core/pull/52346
+[#52348]: https://github.com/home-assistant/core/pull/52348
+[#52349]: https://github.com/home-assistant/core/pull/52349
+[#52350]: https://github.com/home-assistant/core/pull/52350
+[#52357]: https://github.com/home-assistant/core/pull/52357
+[#52358]: https://github.com/home-assistant/core/pull/52358
+[#52361]: https://github.com/home-assistant/core/pull/52361
+[#52366]: https://github.com/home-assistant/core/pull/52366
+[#52367]: https://github.com/home-assistant/core/pull/52367
+[#52368]: https://github.com/home-assistant/core/pull/52368
+[#52369]: https://github.com/home-assistant/core/pull/52369
+[#52377]: https://github.com/home-assistant/core/pull/52377
+[#52378]: https://github.com/home-assistant/core/pull/52378
+[#52379]: https://github.com/home-assistant/core/pull/52379
+[#52383]: https://github.com/home-assistant/core/pull/52383
+[#52390]: https://github.com/home-assistant/core/pull/52390
+[#52395]: https://github.com/home-assistant/core/pull/52395
+[#52396]: https://github.com/home-assistant/core/pull/52396
+[#52398]: https://github.com/home-assistant/core/pull/52398
+[#52403]: https://github.com/home-assistant/core/pull/52403
+[#52423]: https://github.com/home-assistant/core/pull/52423
+[#52424]: https://github.com/home-assistant/core/pull/52424
+[#52427]: https://github.com/home-assistant/core/pull/52427
+[#52431]: https://github.com/home-assistant/core/pull/52431
+[#52432]: https://github.com/home-assistant/core/pull/52432
+[#52434]: https://github.com/home-assistant/core/pull/52434
+[#52435]: https://github.com/home-assistant/core/pull/52435
+[#52438]: https://github.com/home-assistant/core/pull/52438
+[#52440]: https://github.com/home-assistant/core/pull/52440
+[#52445]: https://github.com/home-assistant/core/pull/52445
+[#52448]: https://github.com/home-assistant/core/pull/52448
+[#52452]: https://github.com/home-assistant/core/pull/52452
+[#52456]: https://github.com/home-assistant/core/pull/52456
+[#52457]: https://github.com/home-assistant/core/pull/52457
+[#52458]: https://github.com/home-assistant/core/pull/52458
+[#52459]: https://github.com/home-assistant/core/pull/52459
+[#52461]: https://github.com/home-assistant/core/pull/52461
+[#52462]: https://github.com/home-assistant/core/pull/52462
+[#52463]: https://github.com/home-assistant/core/pull/52463
+[#52464]: https://github.com/home-assistant/core/pull/52464
+[#52467]: https://github.com/home-assistant/core/pull/52467
+[#52468]: https://github.com/home-assistant/core/pull/52468
+[#52469]: https://github.com/home-assistant/core/pull/52469
+[#52470]: https://github.com/home-assistant/core/pull/52470
+[#52471]: https://github.com/home-assistant/core/pull/52471
+[#52475]: https://github.com/home-assistant/core/pull/52475
+[#52476]: https://github.com/home-assistant/core/pull/52476
+[#52478]: https://github.com/home-assistant/core/pull/52478
+[#52483]: https://github.com/home-assistant/core/pull/52483
+[#52488]: https://github.com/home-assistant/core/pull/52488
+[#52491]: https://github.com/home-assistant/core/pull/52491
+[#52492]: https://github.com/home-assistant/core/pull/52492
+[#52497]: https://github.com/home-assistant/core/pull/52497
+[#52498]: https://github.com/home-assistant/core/pull/52498
+[#52499]: https://github.com/home-assistant/core/pull/52499
+[#52500]: https://github.com/home-assistant/core/pull/52500
+[#52501]: https://github.com/home-assistant/core/pull/52501
+[#52502]: https://github.com/home-assistant/core/pull/52502
+[#52503]: https://github.com/home-assistant/core/pull/52503
+[#52506]: https://github.com/home-assistant/core/pull/52506
+[#52509]: https://github.com/home-assistant/core/pull/52509
+[#52516]: https://github.com/home-assistant/core/pull/52516
+[#52517]: https://github.com/home-assistant/core/pull/52517
+[#52518]: https://github.com/home-assistant/core/pull/52518
+[#52520]: https://github.com/home-assistant/core/pull/52520
+[#52521]: https://github.com/home-assistant/core/pull/52521
+[#52524]: https://github.com/home-assistant/core/pull/52524
+[#52531]: https://github.com/home-assistant/core/pull/52531
+[#52533]: https://github.com/home-assistant/core/pull/52533
+[#52537]: https://github.com/home-assistant/core/pull/52537
+[#52540]: https://github.com/home-assistant/core/pull/52540
+[#52544]: https://github.com/home-assistant/core/pull/52544
+[#52558]: https://github.com/home-assistant/core/pull/52558
+[#52562]: https://github.com/home-assistant/core/pull/52562
+[#52564]: https://github.com/home-assistant/core/pull/52564
+[#52574]: https://github.com/home-assistant/core/pull/52574
+[#52576]: https://github.com/home-assistant/core/pull/52576
+[#52578]: https://github.com/home-assistant/core/pull/52578
+[#52580]: https://github.com/home-assistant/core/pull/52580
+[#52581]: https://github.com/home-assistant/core/pull/52581
+[#52582]: https://github.com/home-assistant/core/pull/52582
+[#52583]: https://github.com/home-assistant/core/pull/52583
+[#52585]: https://github.com/home-assistant/core/pull/52585
+[#52586]: https://github.com/home-assistant/core/pull/52586
+[#52587]: https://github.com/home-assistant/core/pull/52587
+[#52591]: https://github.com/home-assistant/core/pull/52591
+[#52592]: https://github.com/home-assistant/core/pull/52592
+[#52594]: https://github.com/home-assistant/core/pull/52594
+[#52596]: https://github.com/home-assistant/core/pull/52596
+[#52597]: https://github.com/home-assistant/core/pull/52597
+[#52598]: https://github.com/home-assistant/core/pull/52598
+[#52599]: https://github.com/home-assistant/core/pull/52599
+[#52600]: https://github.com/home-assistant/core/pull/52600
+[#52602]: https://github.com/home-assistant/core/pull/52602
+[#52605]: https://github.com/home-assistant/core/pull/52605
+[#52615]: https://github.com/home-assistant/core/pull/52615
+[#52616]: https://github.com/home-assistant/core/pull/52616
+[#52617]: https://github.com/home-assistant/core/pull/52617
+[#52628]: https://github.com/home-assistant/core/pull/52628
+[#52630]: https://github.com/home-assistant/core/pull/52630
+[#52651]: https://github.com/home-assistant/core/pull/52651
+[#52662]: https://github.com/home-assistant/core/pull/52662
+[#52663]: https://github.com/home-assistant/core/pull/52663
+[#52664]: https://github.com/home-assistant/core/pull/52664
+[#52668]: https://github.com/home-assistant/core/pull/52668
+[#52670]: https://github.com/home-assistant/core/pull/52670
+[#52675]: https://github.com/home-assistant/core/pull/52675
+[#52677]: https://github.com/home-assistant/core/pull/52677
+[#52678]: https://github.com/home-assistant/core/pull/52678
+[#52681]: https://github.com/home-assistant/core/pull/52681
+[#52683]: https://github.com/home-assistant/core/pull/52683
+[#52685]: https://github.com/home-assistant/core/pull/52685
+[#52686]: https://github.com/home-assistant/core/pull/52686
+[#52687]: https://github.com/home-assistant/core/pull/52687
+[#52690]: https://github.com/home-assistant/core/pull/52690
+[#52692]: https://github.com/home-assistant/core/pull/52692
+[#52694]: https://github.com/home-assistant/core/pull/52694
+[#52695]: https://github.com/home-assistant/core/pull/52695
+[#52696]: https://github.com/home-assistant/core/pull/52696
+[#52698]: https://github.com/home-assistant/core/pull/52698
+[#52699]: https://github.com/home-assistant/core/pull/52699
+[#52700]: https://github.com/home-assistant/core/pull/52700
+[#52705]: https://github.com/home-assistant/core/pull/52705
+[#52712]: https://github.com/home-assistant/core/pull/52712
+[#52715]: https://github.com/home-assistant/core/pull/52715
+[#52717]: https://github.com/home-assistant/core/pull/52717
+[#52720]: https://github.com/home-assistant/core/pull/52720
+[#52721]: https://github.com/home-assistant/core/pull/52721
+[#52722]: https://github.com/home-assistant/core/pull/52722
+[#52723]: https://github.com/home-assistant/core/pull/52723
+[#52724]: https://github.com/home-assistant/core/pull/52724
+[#52725]: https://github.com/home-assistant/core/pull/52725
+[#52726]: https://github.com/home-assistant/core/pull/52726
+[#52727]: https://github.com/home-assistant/core/pull/52727
+[#52737]: https://github.com/home-assistant/core/pull/52737
+[#52744]: https://github.com/home-assistant/core/pull/52744
+[#52746]: https://github.com/home-assistant/core/pull/52746
+[#52747]: https://github.com/home-assistant/core/pull/52747
+[#52748]: https://github.com/home-assistant/core/pull/52748
+[#52755]: https://github.com/home-assistant/core/pull/52755
+[#52772]: https://github.com/home-assistant/core/pull/52772
+[#52774]: https://github.com/home-assistant/core/pull/52774
+[#52790]: https://github.com/home-assistant/core/pull/52790
+[#52793]: https://github.com/home-assistant/core/pull/52793
+[#52808]: https://github.com/home-assistant/core/pull/52808
+[#52811]: https://github.com/home-assistant/core/pull/52811
+[#52813]: https://github.com/home-assistant/core/pull/52813
+[#52814]: https://github.com/home-assistant/core/pull/52814
+[#52815]: https://github.com/home-assistant/core/pull/52815
+[#52817]: https://github.com/home-assistant/core/pull/52817
+[#52819]: https://github.com/home-assistant/core/pull/52819
+[#52820]: https://github.com/home-assistant/core/pull/52820
+[#52821]: https://github.com/home-assistant/core/pull/52821
+[#52828]: https://github.com/home-assistant/core/pull/52828
+[#52831]: https://github.com/home-assistant/core/pull/52831
+[#52837]: https://github.com/home-assistant/core/pull/52837
+[#52838]: https://github.com/home-assistant/core/pull/52838
+[#52839]: https://github.com/home-assistant/core/pull/52839
+[#52841]: https://github.com/home-assistant/core/pull/52841
+[#52847]: https://github.com/home-assistant/core/pull/52847
+[#52848]: https://github.com/home-assistant/core/pull/52848
+[#52857]: https://github.com/home-assistant/core/pull/52857
+[#52870]: https://github.com/home-assistant/core/pull/52870
+[#52879]: https://github.com/home-assistant/core/pull/52879
+[#52881]: https://github.com/home-assistant/core/pull/52881
+[#52886]: https://github.com/home-assistant/core/pull/52886
+[#52887]: https://github.com/home-assistant/core/pull/52887
+[#52888]: https://github.com/home-assistant/core/pull/52888
+[#52889]: https://github.com/home-assistant/core/pull/52889
+[#52890]: https://github.com/home-assistant/core/pull/52890
+[#52891]: https://github.com/home-assistant/core/pull/52891
+[#52892]: https://github.com/home-assistant/core/pull/52892
+[#52893]: https://github.com/home-assistant/core/pull/52893
+[#52894]: https://github.com/home-assistant/core/pull/52894
+[#52895]: https://github.com/home-assistant/core/pull/52895
+[#52899]: https://github.com/home-assistant/core/pull/52899
+[#52901]: https://github.com/home-assistant/core/pull/52901
+[#52909]: https://github.com/home-assistant/core/pull/52909
+[#52918]: https://github.com/home-assistant/core/pull/52918
+[#52919]: https://github.com/home-assistant/core/pull/52919
+[#52920]: https://github.com/home-assistant/core/pull/52920
+[#52921]: https://github.com/home-assistant/core/pull/52921
+[#52923]: https://github.com/home-assistant/core/pull/52923
+[#52924]: https://github.com/home-assistant/core/pull/52924
+[#52926]: https://github.com/home-assistant/core/pull/52926
+[#52932]: https://github.com/home-assistant/core/pull/52932
+[#52935]: https://github.com/home-assistant/core/pull/52935
+[#52937]: https://github.com/home-assistant/core/pull/52937
+[#52939]: https://github.com/home-assistant/core/pull/52939
+[#52941]: https://github.com/home-assistant/core/pull/52941
+[#52942]: https://github.com/home-assistant/core/pull/52942
+[#52946]: https://github.com/home-assistant/core/pull/52946
+[#52947]: https://github.com/home-assistant/core/pull/52947
+[#52948]: https://github.com/home-assistant/core/pull/52948
+[#52951]: https://github.com/home-assistant/core/pull/52951
+[#52952]: https://github.com/home-assistant/core/pull/52952
+[#52953]: https://github.com/home-assistant/core/pull/52953
+[#52954]: https://github.com/home-assistant/core/pull/52954
+[#52960]: https://github.com/home-assistant/core/pull/52960
+[#52965]: https://github.com/home-assistant/core/pull/52965
+[#52971]: https://github.com/home-assistant/core/pull/52971
+[#52972]: https://github.com/home-assistant/core/pull/52972
+[#52975]: https://github.com/home-assistant/core/pull/52975
+[#52979]: https://github.com/home-assistant/core/pull/52979
+[#52980]: https://github.com/home-assistant/core/pull/52980
+[#52987]: https://github.com/home-assistant/core/pull/52987
+[#52992]: https://github.com/home-assistant/core/pull/52992
+[#52997]: https://github.com/home-assistant/core/pull/52997
+[#52999]: https://github.com/home-assistant/core/pull/52999
+[#53001]: https://github.com/home-assistant/core/pull/53001
+[#53005]: https://github.com/home-assistant/core/pull/53005
+[#53008]: https://github.com/home-assistant/core/pull/53008
+[#53011]: https://github.com/home-assistant/core/pull/53011
+[#53014]: https://github.com/home-assistant/core/pull/53014
+[#53026]: https://github.com/home-assistant/core/pull/53026
+[#53030]: https://github.com/home-assistant/core/pull/53030
+[#53032]: https://github.com/home-assistant/core/pull/53032
+[#53033]: https://github.com/home-assistant/core/pull/53033
+[#53035]: https://github.com/home-assistant/core/pull/53035
+[#53036]: https://github.com/home-assistant/core/pull/53036
+[#53037]: https://github.com/home-assistant/core/pull/53037
+[#53042]: https://github.com/home-assistant/core/pull/53042
+[#53051]: https://github.com/home-assistant/core/pull/53051
+[#53052]: https://github.com/home-assistant/core/pull/53052
+[#53054]: https://github.com/home-assistant/core/pull/53054
+[#53055]: https://github.com/home-assistant/core/pull/53055
+[#53057]: https://github.com/home-assistant/core/pull/53057
+[#53058]: https://github.com/home-assistant/core/pull/53058
+[#53060]: https://github.com/home-assistant/core/pull/53060
+[#53064]: https://github.com/home-assistant/core/pull/53064
+[#53080]: https://github.com/home-assistant/core/pull/53080
+[#53084]: https://github.com/home-assistant/core/pull/53084
+[#53085]: https://github.com/home-assistant/core/pull/53085
+[#53086]: https://github.com/home-assistant/core/pull/53086
+[#53087]: https://github.com/home-assistant/core/pull/53087
+[#53101]: https://github.com/home-assistant/core/pull/53101
+[#53102]: https://github.com/home-assistant/core/pull/53102
+[#53105]: https://github.com/home-assistant/core/pull/53105
+[#53106]: https://github.com/home-assistant/core/pull/53106
+[#53109]: https://github.com/home-assistant/core/pull/53109
+[#53116]: https://github.com/home-assistant/core/pull/53116
+[#53124]: https://github.com/home-assistant/core/pull/53124
+[#53129]: https://github.com/home-assistant/core/pull/53129
+[#53130]: https://github.com/home-assistant/core/pull/53130
+[#53131]: https://github.com/home-assistant/core/pull/53131
+[#53133]: https://github.com/home-assistant/core/pull/53133
+[#53134]: https://github.com/home-assistant/core/pull/53134
+[#53141]: https://github.com/home-assistant/core/pull/53141
+[#53142]: https://github.com/home-assistant/core/pull/53142
+[#53147]: https://github.com/home-assistant/core/pull/53147
+[#53148]: https://github.com/home-assistant/core/pull/53148
+[#53149]: https://github.com/home-assistant/core/pull/53149
+[#53150]: https://github.com/home-assistant/core/pull/53150
+[#53152]: https://github.com/home-assistant/core/pull/53152
+[#53153]: https://github.com/home-assistant/core/pull/53153
+[#53155]: https://github.com/home-assistant/core/pull/53155
+[#53156]: https://github.com/home-assistant/core/pull/53156
+[#53158]: https://github.com/home-assistant/core/pull/53158
+[#53159]: https://github.com/home-assistant/core/pull/53159
+[#53160]: https://github.com/home-assistant/core/pull/53160
+[#53163]: https://github.com/home-assistant/core/pull/53163
+[#53164]: https://github.com/home-assistant/core/pull/53164
+[#53165]: https://github.com/home-assistant/core/pull/53165
+[#53166]: https://github.com/home-assistant/core/pull/53166
+[#53167]: https://github.com/home-assistant/core/pull/53167
+[#53168]: https://github.com/home-assistant/core/pull/53168
+[#53169]: https://github.com/home-assistant/core/pull/53169
+[#53170]: https://github.com/home-assistant/core/pull/53170
+[#53171]: https://github.com/home-assistant/core/pull/53171
+[#53172]: https://github.com/home-assistant/core/pull/53172
+[#53174]: https://github.com/home-assistant/core/pull/53174
+[#53179]: https://github.com/home-assistant/core/pull/53179
+[#53180]: https://github.com/home-assistant/core/pull/53180
+[#53183]: https://github.com/home-assistant/core/pull/53183
+[#53184]: https://github.com/home-assistant/core/pull/53184
+[#53186]: https://github.com/home-assistant/core/pull/53186
+[#53188]: https://github.com/home-assistant/core/pull/53188
+[#53190]: https://github.com/home-assistant/core/pull/53190
+[#53191]: https://github.com/home-assistant/core/pull/53191
+[#53192]: https://github.com/home-assistant/core/pull/53192
+[#53193]: https://github.com/home-assistant/core/pull/53193
+[#53194]: https://github.com/home-assistant/core/pull/53194
+[#53195]: https://github.com/home-assistant/core/pull/53195
+[#53196]: https://github.com/home-assistant/core/pull/53196
+[#53197]: https://github.com/home-assistant/core/pull/53197
+[#53199]: https://github.com/home-assistant/core/pull/53199
+[#53202]: https://github.com/home-assistant/core/pull/53202
+[#53203]: https://github.com/home-assistant/core/pull/53203
+[#53204]: https://github.com/home-assistant/core/pull/53204
+[#53205]: https://github.com/home-assistant/core/pull/53205
+[#53206]: https://github.com/home-assistant/core/pull/53206
+[#53208]: https://github.com/home-assistant/core/pull/53208
+[#53212]: https://github.com/home-assistant/core/pull/53212
+[#53214]: https://github.com/home-assistant/core/pull/53214
+[#53216]: https://github.com/home-assistant/core/pull/53216
+[#53217]: https://github.com/home-assistant/core/pull/53217
+[#53221]: https://github.com/home-assistant/core/pull/53221
+[#53222]: https://github.com/home-assistant/core/pull/53222
+[#53223]: https://github.com/home-assistant/core/pull/53223
+[#53225]: https://github.com/home-assistant/core/pull/53225
+[#53226]: https://github.com/home-assistant/core/pull/53226
+[#53227]: https://github.com/home-assistant/core/pull/53227
+[#53228]: https://github.com/home-assistant/core/pull/53228
+[#53231]: https://github.com/home-assistant/core/pull/53231
+[#53232]: https://github.com/home-assistant/core/pull/53232
+[#53233]: https://github.com/home-assistant/core/pull/53233
+[#53234]: https://github.com/home-assistant/core/pull/53234
+[#53235]: https://github.com/home-assistant/core/pull/53235
+[#53236]: https://github.com/home-assistant/core/pull/53236
+[#53238]: https://github.com/home-assistant/core/pull/53238
+[#53240]: https://github.com/home-assistant/core/pull/53240
+[#53241]: https://github.com/home-assistant/core/pull/53241
+[#53242]: https://github.com/home-assistant/core/pull/53242
+[#53243]: https://github.com/home-assistant/core/pull/53243
+[#53244]: https://github.com/home-assistant/core/pull/53244
+[#53245]: https://github.com/home-assistant/core/pull/53245
+[#53247]: https://github.com/home-assistant/core/pull/53247
+[#53249]: https://github.com/home-assistant/core/pull/53249
+[#53250]: https://github.com/home-assistant/core/pull/53250
+[#53251]: https://github.com/home-assistant/core/pull/53251
+[#53253]: https://github.com/home-assistant/core/pull/53253
+[#53254]: https://github.com/home-assistant/core/pull/53254
+[#53257]: https://github.com/home-assistant/core/pull/53257
+[#53258]: https://github.com/home-assistant/core/pull/53258
+[#53259]: https://github.com/home-assistant/core/pull/53259
+[#53260]: https://github.com/home-assistant/core/pull/53260
+[#53264]: https://github.com/home-assistant/core/pull/53264
+[#53265]: https://github.com/home-assistant/core/pull/53265
+[#53269]: https://github.com/home-assistant/core/pull/53269
+[#53272]: https://github.com/home-assistant/core/pull/53272
+[#53274]: https://github.com/home-assistant/core/pull/53274
+[#53276]: https://github.com/home-assistant/core/pull/53276
+[#53277]: https://github.com/home-assistant/core/pull/53277
+[#53278]: https://github.com/home-assistant/core/pull/53278
+[#53281]: https://github.com/home-assistant/core/pull/53281
+[#53282]: https://github.com/home-assistant/core/pull/53282
+[#53284]: https://github.com/home-assistant/core/pull/53284
+[#53286]: https://github.com/home-assistant/core/pull/53286
+[#53287]: https://github.com/home-assistant/core/pull/53287
+[#53289]: https://github.com/home-assistant/core/pull/53289
+[#53290]: https://github.com/home-assistant/core/pull/53290
+[#53292]: https://github.com/home-assistant/core/pull/53292
+[#53293]: https://github.com/home-assistant/core/pull/53293
+[#53294]: https://github.com/home-assistant/core/pull/53294
+[#53295]: https://github.com/home-assistant/core/pull/53295
+[#53296]: https://github.com/home-assistant/core/pull/53296
+[#53297]: https://github.com/home-assistant/core/pull/53297
+[#53298]: https://github.com/home-assistant/core/pull/53298
+[#53302]: https://github.com/home-assistant/core/pull/53302
+[#53303]: https://github.com/home-assistant/core/pull/53303
+[#53304]: https://github.com/home-assistant/core/pull/53304
+[#53329]: https://github.com/home-assistant/core/pull/53329
+[#53330]: https://github.com/home-assistant/core/pull/53330
+[#53332]: https://github.com/home-assistant/core/pull/53332
+[#53333]: https://github.com/home-assistant/core/pull/53333
+[#53335]: https://github.com/home-assistant/core/pull/53335
+[#53337]: https://github.com/home-assistant/core/pull/53337
+[#53340]: https://github.com/home-assistant/core/pull/53340
+[#53342]: https://github.com/home-assistant/core/pull/53342
+[#53343]: https://github.com/home-assistant/core/pull/53343
+[#53348]: https://github.com/home-assistant/core/pull/53348
+[#53350]: https://github.com/home-assistant/core/pull/53350
+[#53351]: https://github.com/home-assistant/core/pull/53351
+[#53352]: https://github.com/home-assistant/core/pull/53352
+[#53354]: https://github.com/home-assistant/core/pull/53354
+[#53355]: https://github.com/home-assistant/core/pull/53355
+[#53356]: https://github.com/home-assistant/core/pull/53356
+[#53357]: https://github.com/home-assistant/core/pull/53357
+[#53358]: https://github.com/home-assistant/core/pull/53358
+[#53360]: https://github.com/home-assistant/core/pull/53360
+[#53362]: https://github.com/home-assistant/core/pull/53362
+[#53363]: https://github.com/home-assistant/core/pull/53363
+[#53364]: https://github.com/home-assistant/core/pull/53364
+[#53365]: https://github.com/home-assistant/core/pull/53365
+[#53367]: https://github.com/home-assistant/core/pull/53367
+[#53369]: https://github.com/home-assistant/core/pull/53369
+[#53370]: https://github.com/home-assistant/core/pull/53370
+[#53371]: https://github.com/home-assistant/core/pull/53371
+[#53372]: https://github.com/home-assistant/core/pull/53372
+[#53376]: https://github.com/home-assistant/core/pull/53376
+[#53378]: https://github.com/home-assistant/core/pull/53378
+[#53381]: https://github.com/home-assistant/core/pull/53381
+[#53383]: https://github.com/home-assistant/core/pull/53383
+[#53384]: https://github.com/home-assistant/core/pull/53384
+[#53385]: https://github.com/home-assistant/core/pull/53385
+[#53386]: https://github.com/home-assistant/core/pull/53386
+[#53393]: https://github.com/home-assistant/core/pull/53393
+[#53397]: https://github.com/home-assistant/core/pull/53397
+[#53402]: https://github.com/home-assistant/core/pull/53402
+[#53405]: https://github.com/home-assistant/core/pull/53405
+[#53407]: https://github.com/home-assistant/core/pull/53407
+[#53409]: https://github.com/home-assistant/core/pull/53409
+[#53410]: https://github.com/home-assistant/core/pull/53410
+[#53412]: https://github.com/home-assistant/core/pull/53412
+[#53413]: https://github.com/home-assistant/core/pull/53413
+[#53414]: https://github.com/home-assistant/core/pull/53414
+[#53417]: https://github.com/home-assistant/core/pull/53417
+[#53419]: https://github.com/home-assistant/core/pull/53419
+[#53422]: https://github.com/home-assistant/core/pull/53422
+[#53423]: https://github.com/home-assistant/core/pull/53423
+[#53424]: https://github.com/home-assistant/core/pull/53424
+[#53428]: https://github.com/home-assistant/core/pull/53428
+[#53431]: https://github.com/home-assistant/core/pull/53431
+[#53433]: https://github.com/home-assistant/core/pull/53433
+[#53444]: https://github.com/home-assistant/core/pull/53444
+[#53445]: https://github.com/home-assistant/core/pull/53445
+[#53446]: https://github.com/home-assistant/core/pull/53446
+[#53452]: https://github.com/home-assistant/core/pull/53452
+[#53455]: https://github.com/home-assistant/core/pull/53455
+[#53456]: https://github.com/home-assistant/core/pull/53456
+[#53458]: https://github.com/home-assistant/core/pull/53458
+[#53461]: https://github.com/home-assistant/core/pull/53461
+[#53464]: https://github.com/home-assistant/core/pull/53464
+[#53467]: https://github.com/home-assistant/core/pull/53467
+[#53468]: https://github.com/home-assistant/core/pull/53468
+[#53470]: https://github.com/home-assistant/core/pull/53470
+[#53471]: https://github.com/home-assistant/core/pull/53471
+[#53472]: https://github.com/home-assistant/core/pull/53472
+[#53474]: https://github.com/home-assistant/core/pull/53474
+[#53475]: https://github.com/home-assistant/core/pull/53475
+[#53476]: https://github.com/home-assistant/core/pull/53476
+[#53479]: https://github.com/home-assistant/core/pull/53479
+[#53484]: https://github.com/home-assistant/core/pull/53484
+[#53487]: https://github.com/home-assistant/core/pull/53487
+[#53492]: https://github.com/home-assistant/core/pull/53492
+[#53493]: https://github.com/home-assistant/core/pull/53493
+[#53495]: https://github.com/home-assistant/core/pull/53495
+[#53496]: https://github.com/home-assistant/core/pull/53496
+[#53504]: https://github.com/home-assistant/core/pull/53504
+[#53505]: https://github.com/home-assistant/core/pull/53505
+[#53508]: https://github.com/home-assistant/core/pull/53508
+[#53511]: https://github.com/home-assistant/core/pull/53511
+[#53512]: https://github.com/home-assistant/core/pull/53512
+[#53513]: https://github.com/home-assistant/core/pull/53513
+[#53517]: https://github.com/home-assistant/core/pull/53517
+[#53518]: https://github.com/home-assistant/core/pull/53518
+[#53519]: https://github.com/home-assistant/core/pull/53519
+[#53520]: https://github.com/home-assistant/core/pull/53520
+[#53521]: https://github.com/home-assistant/core/pull/53521
+[#53522]: https://github.com/home-assistant/core/pull/53522
+[#53523]: https://github.com/home-assistant/core/pull/53523
+[#53524]: https://github.com/home-assistant/core/pull/53524
+[#53526]: https://github.com/home-assistant/core/pull/53526
+[#53527]: https://github.com/home-assistant/core/pull/53527
+[#53529]: https://github.com/home-assistant/core/pull/53529
+[#53531]: https://github.com/home-assistant/core/pull/53531
+[#53532]: https://github.com/home-assistant/core/pull/53532
+[#53534]: https://github.com/home-assistant/core/pull/53534
+[#53535]: https://github.com/home-assistant/core/pull/53535
+[#53536]: https://github.com/home-assistant/core/pull/53536
+[#53537]: https://github.com/home-assistant/core/pull/53537
+[#53538]: https://github.com/home-assistant/core/pull/53538
+[#53539]: https://github.com/home-assistant/core/pull/53539
+[#53540]: https://github.com/home-assistant/core/pull/53540
+[#53541]: https://github.com/home-assistant/core/pull/53541
+[#53542]: https://github.com/home-assistant/core/pull/53542
+[#53543]: https://github.com/home-assistant/core/pull/53543
+[#53544]: https://github.com/home-assistant/core/pull/53544
+[#53545]: https://github.com/home-assistant/core/pull/53545
+[#53547]: https://github.com/home-assistant/core/pull/53547
+[#53549]: https://github.com/home-assistant/core/pull/53549
+[#53550]: https://github.com/home-assistant/core/pull/53550
+[#53553]: https://github.com/home-assistant/core/pull/53553
+[#53555]: https://github.com/home-assistant/core/pull/53555
+[#53556]: https://github.com/home-assistant/core/pull/53556
+[#53557]: https://github.com/home-assistant/core/pull/53557
+[#53558]: https://github.com/home-assistant/core/pull/53558
+[#53559]: https://github.com/home-assistant/core/pull/53559
+[#53560]: https://github.com/home-assistant/core/pull/53560
+[#53564]: https://github.com/home-assistant/core/pull/53564
+[#53565]: https://github.com/home-assistant/core/pull/53565
+[#53566]: https://github.com/home-assistant/core/pull/53566
+[#53568]: https://github.com/home-assistant/core/pull/53568
+[#53569]: https://github.com/home-assistant/core/pull/53569
+[#53571]: https://github.com/home-assistant/core/pull/53571
+[#53572]: https://github.com/home-assistant/core/pull/53572
+[#53573]: https://github.com/home-assistant/core/pull/53573
+[#53574]: https://github.com/home-assistant/core/pull/53574
+[#53575]: https://github.com/home-assistant/core/pull/53575
+[#53576]: https://github.com/home-assistant/core/pull/53576
+[#53578]: https://github.com/home-assistant/core/pull/53578
+[#53579]: https://github.com/home-assistant/core/pull/53579
+[#53580]: https://github.com/home-assistant/core/pull/53580
+[#53581]: https://github.com/home-assistant/core/pull/53581
+[#53589]: https://github.com/home-assistant/core/pull/53589
+[#53591]: https://github.com/home-assistant/core/pull/53591
+[#53592]: https://github.com/home-assistant/core/pull/53592
+[#53593]: https://github.com/home-assistant/core/pull/53593
+[#53597]: https://github.com/home-assistant/core/pull/53597
+[#53598]: https://github.com/home-assistant/core/pull/53598
+[#53600]: https://github.com/home-assistant/core/pull/53600
+[#53602]: https://github.com/home-assistant/core/pull/53602
+[#53604]: https://github.com/home-assistant/core/pull/53604
+[#53607]: https://github.com/home-assistant/core/pull/53607
+[#53609]: https://github.com/home-assistant/core/pull/53609
+[#53610]: https://github.com/home-assistant/core/pull/53610
+[#53611]: https://github.com/home-assistant/core/pull/53611
+[#53612]: https://github.com/home-assistant/core/pull/53612
+[#53615]: https://github.com/home-assistant/core/pull/53615
+[#53616]: https://github.com/home-assistant/core/pull/53616
+[#53617]: https://github.com/home-assistant/core/pull/53617
+[#53620]: https://github.com/home-assistant/core/pull/53620
+[#53622]: https://github.com/home-assistant/core/pull/53622
+[#53625]: https://github.com/home-assistant/core/pull/53625
+[#53627]: https://github.com/home-assistant/core/pull/53627
+[#53629]: https://github.com/home-assistant/core/pull/53629
+[#53632]: https://github.com/home-assistant/core/pull/53632
+[#53634]: https://github.com/home-assistant/core/pull/53634
+[#53635]: https://github.com/home-assistant/core/pull/53635
+[#53636]: https://github.com/home-assistant/core/pull/53636
+[#53637]: https://github.com/home-assistant/core/pull/53637
+[@AaronDavidSchneider]: https://github.com/AaronDavidSchneider
+[@Adminiuga]: https://github.com/Adminiuga
+[@BottlecapDave]: https://github.com/BottlecapDave
+[@Bre77]: https://github.com/Bre77
+[@BreakingBread0]: https://github.com/BreakingBread0
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@EddyK69]: https://github.com/EddyK69
+[@Jc2k]: https://github.com/Jc2k
+[@Kane610]: https://github.com/Kane610
+[@Kirchoff]: https://github.com/Kirchoff
+[@Kr0llx]: https://github.com/Kr0llx
+[@Kuzj]: https://github.com/Kuzj
+[@LeszekSwirski]: https://github.com/LeszekSwirski
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MrHarcombe]: https://github.com/MrHarcombe
+[@OttoWinter]: https://github.com/OttoWinter
+[@PeteRager]: https://github.com/PeteRager
+[@RenierM26]: https://github.com/RenierM26
+[@Shulyaka]: https://github.com/Shulyaka
+[@Shutgun]: https://github.com/Shutgun
+[@StevenLooman]: https://github.com/StevenLooman
+[@TomBrien]: https://github.com/TomBrien
+[@aav7fl]: https://github.com/aav7fl
+[@agners]: https://github.com/agners
+[@alengwenus]: https://github.com/alengwenus
+[@allenporter]: https://github.com/allenporter
+[@amelchio]: https://github.com/amelchio
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bnordli]: https://github.com/bnordli
+[@bouwew]: https://github.com/bouwew
+[@bramkragten]: https://github.com/bramkragten
+[@bramstroker]: https://github.com/bramstroker
+[@broadcasttechie]: https://github.com/broadcasttechie
+[@bwduncan]: https://github.com/bwduncan
+[@cdce8p]: https://github.com/cdce8p
+[@cgtobi]: https://github.com/cgtobi
+[@chemelli74]: https://github.com/chemelli74
+[@cmroche]: https://github.com/cmroche
+[@cnico]: https://github.com/cnico
+[@ctalkington]: https://github.com/ctalkington
+[@cyberjunky]: https://github.com/cyberjunky
+[@davidjb]: https://github.com/davidjb
+[@defunctzombie]: https://github.com/defunctzombie
+[@dermotduffy]: https://github.com/dermotduffy
+[@dgomes]: https://github.com/dgomes
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@engrbm87]: https://github.com/engrbm87
+[@epenet]: https://github.com/epenet
+[@esev]: https://github.com/esev
+[@farmio]: https://github.com/farmio
+[@felipediel]: https://github.com/felipediel
+[@firstof9]: https://github.com/firstof9
+[@flabbamann]: https://github.com/flabbamann
+[@fredericseiler]: https://github.com/fredericseiler
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@gjong]: https://github.com/gjong
+[@hmmbob]: https://github.com/hmmbob
+[@janiversen]: https://github.com/janiversen
+[@jbouwh]: https://github.com/jbouwh
+[@jesserockz]: https://github.com/jesserockz
+[@jjlawren]: https://github.com/jjlawren
+[@johansmitsnl]: https://github.com/johansmitsnl
+[@joncar]: https://github.com/joncar
+[@jtitley]: https://github.com/jtitley
+[@knyar]: https://github.com/knyar
+[@kpine]: https://github.com/kpine
+[@ludeeus]: https://github.com/ludeeus
+[@matthewgottlieb]: https://github.com/matthewgottlieb
+[@mdz]: https://github.com/mdz
+[@mib1185]: https://github.com/mib1185
+[@micha91]: https://github.com/micha91
+[@milanmeu]: https://github.com/milanmeu
+[@muppet3000]: https://github.com/muppet3000
+[@natekspencer]: https://github.com/natekspencer
+[@nielstron]: https://github.com/nielstron
+[@oischinger]: https://github.com/oischinger
+[@oxan]: https://github.com/oxan
+[@p4p3r]: https://github.com/p4p3r
+[@peternijssen]: https://github.com/peternijssen
+[@posixx]: https://github.com/posixx
+[@pvizeli]: https://github.com/pvizeli
+[@r-t-s]: https://github.com/r-t-s
+[@raman325]: https://github.com/raman325
+[@rdfurman]: https://github.com/rdfurman
+[@rklomp]: https://github.com/rklomp
+[@samueltardieu]: https://github.com/samueltardieu
+[@scop]: https://github.com/scop
+[@sergeymaysak]: https://github.com/sergeymaysak
+[@sillyfrog]: https://github.com/sillyfrog
+[@stefano055415]: https://github.com/stefano055415
+[@teharris1]: https://github.com/teharris1
+[@thecode]: https://github.com/thecode
+[@timmo001]: https://github.com/timmo001
+[@tkdrob]: https://github.com/tkdrob
+[@vfreex]: https://github.com/vfreex
+[@viiru-]: https://github.com/viiru-
+[@web-dc]: https://github.com/web-dc
+[@yuvalabou]: https://github.com/yuvalabou
+[abode docs]: /integrations/abode/
+[accuweather docs]: /integrations/accuweather/
+[acer_projector docs]: /integrations/acer_projector/
+[adax docs]: /integrations/adax/
+[ads docs]: /integrations/ads/
+[advantage_air docs]: /integrations/advantage_air/
+[aemet docs]: /integrations/aemet/
+[aftership docs]: /integrations/aftership/
+[agent_dvr docs]: /integrations/agent_dvr/
+[airly docs]: /integrations/airly/
+[airnow docs]: /integrations/airnow/
+[airvisual docs]: /integrations/airvisual/
+[aladdin_connect docs]: /integrations/aladdin_connect/
+[alarm_control_panel docs]: /integrations/alarm_control_panel/
+[alarmdecoder docs]: /integrations/alarmdecoder/
+[alert docs]: /integrations/alert/
+[alexa docs]: /integrations/alexa/
+[alpha_vantage docs]: /integrations/alpha_vantage/
+[ambee docs]: /integrations/ambee/
+[ambiclimate docs]: /integrations/ambiclimate/
+[ambient_station docs]: /integrations/ambient_station/
+[androidtv docs]: /integrations/androidtv/
+[anel_pwrctrl docs]: /integrations/anel_pwrctrl/
+[anthemav docs]: /integrations/anthemav/
+[apcupsd docs]: /integrations/apcupsd/
+[api docs]: /integrations/api/
+[apple_tv docs]: /integrations/apple_tv/
+[aqualogic docs]: /integrations/aqualogic/
+[aquostv docs]: /integrations/aquostv/
+[arcam_fmj docs]: /integrations/arcam_fmj/
+[arduino docs]: /integrations/arduino/
+[arest docs]: /integrations/arest/
+[arlo docs]: /integrations/arlo/
+[arwn docs]: /integrations/arwn/
+[asuswrt docs]: /integrations/asuswrt/
+[atag docs]: /integrations/atag/
+[aten_pe docs]: /integrations/aten_pe/
+[august docs]: /integrations/august/
+[aurora docs]: /integrations/aurora/
+[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/
+[automate docs]: /integrations/automate/
+[automation docs]: /integrations/automation/
+[avea docs]: /integrations/avea/
+[avion docs]: /integrations/avion/
+[awair docs]: /integrations/awair/
+[azure_devops docs]: /integrations/azure_devops/
+[bayesian docs]: /integrations/bayesian/
+[bbb_gpio docs]: /integrations/bbb_gpio/
+[bbox docs]: /integrations/bbox/
+[beewi_smartclim docs]: /integrations/beewi_smartclim/
+[bh1750 docs]: /integrations/bh1750/
+[bitcoin docs]: /integrations/bitcoin/
+[bizkaibus docs]: /integrations/bizkaibus/
+[blackbird docs]: /integrations/blackbird/
+[blebox docs]: /integrations/blebox/
+[blink docs]: /integrations/blink/
+[blinksticklight docs]: /integrations/blinksticklight/
+[blinkt docs]: /integrations/blinkt/
+[blockchain docs]: /integrations/blockchain/
+[bloomsky docs]: /integrations/bloomsky/
+[bluesound docs]: /integrations/bluesound/
+[bme280 docs]: /integrations/bme280/
+[bme680 docs]: /integrations/bme680/
+[bmp280 docs]: /integrations/bmp280/
+[bmw_connected_drive docs]: /integrations/bmw_connected_drive/
+[bond docs]: /integrations/bond/
+[bosch_shc docs]: /integrations/bosch_shc/
+[braviatv docs]: /integrations/braviatv/
+[broadlink docs]: /integrations/broadlink/
+[brother docs]: /integrations/brother/
+[brottsplatskartan docs]: /integrations/brottsplatskartan/
+[brunt docs]: /integrations/brunt/
+[bsblan docs]: /integrations/bsblan/
+[buienradar docs]: /integrations/buienradar/
+[caldav docs]: /integrations/caldav/
+[camera docs]: /integrations/camera/
+[canary docs]: /integrations/canary/
+[cast docs]: /integrations/cast/
+[cert_expiry docs]: /integrations/cert_expiry/
+[citybikes docs]: /integrations/citybikes/
+[clementine docs]: /integrations/clementine/
+[climacell docs]: /integrations/climacell/
+[climate docs]: /integrations/climate/
+[cloud docs]: /integrations/cloud/
+[cmus docs]: /integrations/cmus/
+[co2signal docs]: /integrations/co2signal/
+[coinbase docs]: /integrations/coinbase/
+[compensation docs]: /integrations/compensation/
+[config docs]: /integrations/config/
+[control4 docs]: /integrations/control4/
+[coronavirus docs]: /integrations/coronavirus/
+[debugpy docs]: /integrations/debugpy/
+[deconz docs]: /integrations/deconz/
+[default_config docs]: /integrations/default_config/
+[demo docs]: /integrations/demo/
+[devolo_home_control docs]: /integrations/devolo_home_control/
+[dht docs]: /integrations/dht/
+[dsmr docs]: /integrations/dsmr/
+[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/
+[dynalite docs]: /integrations/dynalite/
+[ebox docs]: /integrations/ebox/
+[ecobee docs]: /integrations/ecobee/
+[edl21 docs]: /integrations/edl21/
+[emulated_roku docs]: /integrations/emulated_roku/
+[energy docs]: /integrations/energy/
+[epsonworkforce docs]: /integrations/epsonworkforce/
+[esphome docs]: /integrations/esphome/
+[ezviz docs]: /integrations/ezviz/
+[fan docs]: /integrations/fan/
+[fastdotcom docs]: /integrations/fastdotcom/
+[flipr docs]: /integrations/flipr/
+[flunearyou docs]: /integrations/flunearyou/
+[foobot docs]: /integrations/foobot/
+[forecast_solar docs]: /integrations/forecast_solar/
+[freedompro docs]: /integrations/freedompro/
+[fritz docs]: /integrations/fritz/
+[fritzbox docs]: /integrations/fritzbox/
+[fritzbox_netmonitor docs]: /integrations/fritzbox_netmonitor/
+[fronius docs]: /integrations/fronius/
+[frontend docs]: /integrations/frontend/
+[garmin_connect docs]: /integrations/garmin_connect/
+[generic docs]: /integrations/generic/
+[generic_hygrostat docs]: /integrations/generic_hygrostat/
+[gios docs]: /integrations/gios/
+[glances docs]: /integrations/glances/
+[goalzero docs]: /integrations/goalzero/
+[gogogate2 docs]: /integrations/gogogate2/
+[google docs]: /integrations/google/
+[google_assistant docs]: /integrations/google_assistant/
+[gree docs]: /integrations/gree/
+[group docs]: /integrations/group/
+[growatt_server docs]: /integrations/growatt_server/
+[guardian docs]: /integrations/guardian/
+[hassio docs]: /integrations/hassio/
+[hddtemp docs]: /integrations/hddtemp/
+[history docs]: /integrations/history/
+[homeassistant docs]: /integrations/homeassistant/
+[homekit docs]: /integrations/homekit/
+[homekit_controller docs]: /integrations/homekit_controller/
+[homematicip_cloud docs]: /integrations/homematicip_cloud/
+[honeywell docs]: /integrations/honeywell/
+[htu21d docs]: /integrations/htu21d/
+[huawei_lte docs]: /integrations/huawei_lte/
+[huisbaasje docs]: /integrations/huisbaasje/
+[humidifier docs]: /integrations/humidifier/
+[hyperion docs]: /integrations/hyperion/
+[ihc docs]: /integrations/ihc/
+[influxdb docs]: /integrations/influxdb/
+[insteon docs]: /integrations/insteon/
+[iqvia docs]: /integrations/iqvia/
+[isy994 docs]: /integrations/isy994/
+[jewish_calendar docs]: /integrations/jewish_calendar/
+[juicenet docs]: /integrations/juicenet/
+[kaiterra docs]: /integrations/kaiterra/
+[knx docs]: /integrations/knx/
+[lacrosse docs]: /integrations/lacrosse/
+[lcn docs]: /integrations/lcn/
+[litterrobot docs]: /integrations/litterrobot/
+[lock docs]: /integrations/lock/
+[luftdaten docs]: /integrations/luftdaten/
+[lutron_caseta docs]: /integrations/lutron_caseta/
+[lyft docs]: /integrations/lyft/
+[matrix docs]: /integrations/matrix/
+[melcloud docs]: /integrations/melcloud/
+[meteoclimatic docs]: /integrations/meteoclimatic/
+[metoffice docs]: /integrations/metoffice/
+[mfi docs]: /integrations/mfi/
+[mhz19 docs]: /integrations/mhz19/
+[mill docs]: /integrations/mill/
+[mobile_app docs]: /integrations/mobile_app/
+[modbus docs]: /integrations/modbus/
+[modern_forms docs]: /integrations/modern_forms/
+[motioneye docs]: /integrations/motioneye/
+[mqtt docs]: /integrations/mqtt/
+[mutesync docs]: /integrations/mutesync/
+[mysensors docs]: /integrations/mysensors/
+[nam docs]: /integrations/nam/
+[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/
+[nest docs]: /integrations/nest/
+[netatmo docs]: /integrations/netatmo/
+[network docs]: /integrations/network/
+[nexia docs]: /integrations/nexia/
+[nfandroidtv docs]: /integrations/nfandroidtv/
+[nissan_leaf docs]: /integrations/nissan_leaf/
+[notion docs]: /integrations/notion/
+[nws docs]: /integrations/nws/
+[ondilo_ico docs]: /integrations/ondilo_ico/
+[opencv docs]: /integrations/opencv/
+[openevse docs]: /integrations/openevse/
+[opengarage docs]: /integrations/opengarage/
+[openuv docs]: /integrations/openuv/
+[owntracks docs]: /integrations/owntracks/
+[philips_js docs]: /integrations/philips_js/
+[plex docs]: /integrations/plex/
+[plugwise docs]: /integrations/plugwise/
+[point docs]: /integrations/point/
+[powerwall docs]: /integrations/powerwall/
+[prometheus docs]: /integrations/prometheus/
+[prosegur docs]: /integrations/prosegur/
+[ps4 docs]: /integrations/ps4/
+[qnap docs]: /integrations/qnap/
+[rainbird docs]: /integrations/rainbird/
+[rainforest_eagle docs]: /integrations/rainforest_eagle/
+[rainmachine docs]: /integrations/rainmachine/
+[recollect_waste docs]: /integrations/recollect_waste/
+[recorder docs]: /integrations/recorder/
+[renault docs]: /integrations/renault/
+[rfxtrx docs]: /integrations/rfxtrx/
+[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/
+[roku docs]: /integrations/roku/
+[rova docs]: /integrations/rova/
+[samsungtv docs]: /integrations/samsungtv/
+[script docs]: /integrations/script/
+[sensor docs]: /integrations/sensor/
+[sentry docs]: /integrations/sentry/
+[shell_command docs]: /integrations/shell_command/
+[shelly docs]: /integrations/shelly/
+[sia docs]: /integrations/sia/
+[simplisafe docs]: /integrations/simplisafe/
+[siren docs]: /integrations/siren/
+[skybell docs]: /integrations/skybell/
+[sma docs]: /integrations/sma/
+[sonos docs]: /integrations/sonos/
+[speedtestdotnet docs]: /integrations/speedtestdotnet/
+[spider docs]: /integrations/spider/
+[stream docs]: /integrations/stream/
+[switcher_kis docs]: /integrations/switcher_kis/
+[synology_dsm docs]: /integrations/synology_dsm/
+[system_bridge docs]: /integrations/system_bridge/
+[tado docs]: /integrations/tado/
+[tag docs]: /integrations/tag/
+[tasmota docs]: /integrations/tasmota/
+[temper docs]: /integrations/temper/
+[template docs]: /integrations/template/
+[tensorflow docs]: /integrations/tensorflow/
+[tesla docs]: /integrations/tesla/
+[thermoworks_smoke docs]: /integrations/thermoworks_smoke/
+[tibber docs]: /integrations/tibber/
+[tile docs]: /integrations/tile/
+[trend docs]: /integrations/trend/
+[unifi docs]: /integrations/unifi/
+[upnp docs]: /integrations/upnp/
+[uptime docs]: /integrations/uptime/
+[utility_meter docs]: /integrations/utility_meter/
+[vallox docs]: /integrations/vallox/
+[velux docs]: /integrations/velux/
+[vesync docs]: /integrations/vesync/
+[vicare docs]: /integrations/vicare/
+[waterfurnace docs]: /integrations/waterfurnace/
+[waze_travel_time docs]: /integrations/waze_travel_time/
+[webhook docs]: /integrations/webhook/
+[webostv docs]: /integrations/webostv/
+[websocket_api docs]: /integrations/websocket_api/
+[wemo docs]: /integrations/wemo/
+[wirelesstag docs]: /integrations/wirelesstag/
+[wled docs]: /integrations/wled/
+[workday docs]: /integrations/workday/
+[wunderground docs]: /integrations/wunderground/
+[xiaomi_miio docs]: /integrations/xiaomi_miio/
+[yale_smart_alarm docs]: /integrations/yale_smart_alarm/
+[yamaha_musiccast docs]: /integrations/yamaha_musiccast/
+[youless docs]: /integrations/youless/
+[zeroconf docs]: /integrations/zeroconf/
+[zha docs]: /integrations/zha/
+[zwave docs]: /integrations/zwave/
+[zwave_js docs]: /integrations/zwave_js/
From 46be9f74e65b68f0b69cd7de9acd49486fdb6830 Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Wed, 28 Jul 2021 22:31:15 +0200
Subject: [PATCH 002/122] Sync codebase with docs for 2021.8
---
CODEOWNERS | 16 +++++++++++++---
source/_integrations/automate.markdown | 4 +++-
source/_integrations/coronavirus.markdown | 2 +-
source/_integrations/demo.markdown | 2 ++
source/_integrations/esphome.markdown | 1 +
source/_integrations/flipr.markdown | 2 ++
source/_integrations/freedompro.markdown | 2 +-
source/_integrations/generic.markdown | 2 +-
source/_integrations/generic_hygrostat.markdown | 7 ++++++-
source/_integrations/homekit_controller.markdown | 1 +
source/_integrations/honeywell.markdown | 2 +-
source/_integrations/knx.markdown | 1 +
source/_integrations/mill.markdown | 1 +
source/_integrations/modbus.markdown | 1 +
source/_integrations/motioneye.markdown | 1 +
source/_integrations/mqtt.markdown | 2 ++
source/_integrations/netatmo.markdown | 1 +
source/_integrations/nexia.markdown | 2 +-
source/_integrations/prosegur.markdown | 2 +-
.../_integrations/rituals_perfume_genie.markdown | 2 +-
source/_integrations/siren.markdown | 1 -
source/_integrations/sonos.markdown | 1 +
source/_integrations/spider.markdown | 1 +
source/_integrations/switcher_kis.markdown | 1 +
source/_integrations/template.markdown | 1 +
source/_integrations/velux.markdown | 1 +
source/_integrations/webostv.markdown | 1 +
source/_integrations/wemo.markdown | 1 +
source/_integrations/wirelesstag.markdown | 2 ++
source/_integrations/wled.markdown | 1 +
source/_integrations/xiaomi_miio.markdown | 3 +++
source/_integrations/yale_smart_alarm.markdown | 4 +---
source/_integrations/youless.markdown | 6 +++++-
source/_integrations/zwave_js.markdown | 1 +
34 files changed, 62 insertions(+), 17 deletions(-)
diff --git a/CODEOWNERS b/CODEOWNERS
index 833629b9fc4..8cf36ded999 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -11,6 +11,7 @@
source/_integrations/abode.markdown @shred86
source/_integrations/accuweather.markdown @bieniu
source/_integrations/acmeda.markdown @atmurray
+source/_integrations/adax.markdown @danielhiversen
source/_integrations/adguard.markdown @frenck
source/_integrations/advantage_air.markdown @Bre77
source/_integrations/aemet.markdown @noltari
@@ -45,6 +46,7 @@ source/_integrations/august.markdown @bdraco
source/_integrations/aurora.markdown @djtimca
source/_integrations/aurora_abb_powerone.markdown @davet2001
source/_integrations/auth.markdown @home-assistant/core
+source/_integrations/automate.markdown @sillyfrog
source/_integrations/automation.markdown @home-assistant/core
source/_integrations/avea.markdown @pattyland
source/_integrations/awair.markdown @ahayworth @danielsjf
@@ -87,7 +89,7 @@ source/_integrations/configurator.markdown @home-assistant/core
source/_integrations/control4.markdown @lawtancool
source/_integrations/conversation.markdown @home-assistant/core
source/_integrations/coolmaster.markdown @OnFreund
-source/_integrations/coronavirus.markdown @home_assistant/core
+source/_integrations/coronavirus.markdown @home-assistant/core
source/_integrations/counter.markdown @fabaff
source/_integrations/cover.markdown @home-assistant/core
source/_integrations/cpuspeed.markdown @fabaff
@@ -149,6 +151,7 @@ source/_integrations/fireservicerota.markdown @cyberjunky
source/_integrations/firmata.markdown @DaAwesomeP
source/_integrations/fixer.markdown @fabaff
source/_integrations/flick_electric.markdown @ZephireNZ
+source/_integrations/flipr.markdown @cnico
source/_integrations/flo.markdown @dmulcahey
source/_integrations/flock.markdown @fabaff
source/_integrations/flume.markdown @ChrisMandich @bdraco
@@ -165,6 +168,7 @@ source/_integrations/fronius.markdown @nielstron
source/_integrations/frontend.markdown @home-assistant/frontend
source/_integrations/garages_amsterdam.markdown @klaasnicolaas
source/_integrations/gdacs.markdown @exxamalte
+source/_integrations/generic_hygrostat.markdown @Shulyaka
source/_integrations/geniushub.markdown @zxdavb
source/_integrations/geo_json_events.markdown @exxamalte
source/_integrations/geo_rss_events.markdown @exxamalte
@@ -200,6 +204,7 @@ source/_integrations/homeassistant.markdown @home-assistant/core
source/_integrations/homekit.markdown @bdraco
source/_integrations/homekit_controller.markdown @Jc2k @bdraco
source/_integrations/homematic.markdown @pvizeli @danielperna84
+source/_integrations/honeywell.markdown @rdfurman
source/_integrations/http.markdown @home-assistant/core
source/_integrations/huawei_lte.markdown @scop @fphammerle
source/_integrations/huawei_router.markdown @abmantis
@@ -313,6 +318,7 @@ source/_integrations/netdata.markdown @fabaff
source/_integrations/nexia.markdown @bdraco
source/_integrations/nextbus.markdown @vividboarder
source/_integrations/nextcloud.markdown @meichthys
+source/_integrations/nfandroidtv.markdown @tkdrob
source/_integrations/nightscout.markdown @marciogranzotto
source/_integrations/nilu.markdown @hfurubotten
source/_integrations/nissan_leaf.markdown @filcole
@@ -368,6 +374,7 @@ source/_integrations/powerwall.markdown @bdraco @jrester
source/_integrations/profiler.markdown @bdraco
source/_integrations/progettihwsw.markdown @ardaseremet
source/_integrations/prometheus.markdown @knyar
+source/_integrations/prosegur.markdown @dgomes
source/_integrations/proxmoxve.markdown @k4ds3 @jhollowe @Corbeno
source/_integrations/ps4.markdown @ktnrg45
source/_integrations/push.markdown @dgomes
@@ -426,6 +433,7 @@ source/_integrations/sighthound.markdown @robmarkcole
source/_integrations/signal_messenger.markdown @bbernhard
source/_integrations/simplisafe.markdown @bachya
source/_integrations/sinch.markdown @bendikrb
+source/_integrations/siren.markdown @home-assistant/core @raman325
source/_integrations/sisyphus.markdown @jkeljo
source/_integrations/sky_hub.markdown @rogerselwyn
source/_integrations/slack.markdown @bachya
@@ -486,7 +494,7 @@ source/_integrations/tapsaff.markdown @bazwilliams
source/_integrations/tasmota.markdown @emontnemery
source/_integrations/tautulli.markdown @ludeeus
source/_integrations/tellduslive.markdown @fredrike
-source/_integrations/template.markdown @PhracturedBlue @tetienne
+source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core
source/_integrations/tesla.markdown @zabuldon @alandtse
source/_integrations/tfiac.markdown @fredrike @mellado
source/_integrations/thethingsnetwork.markdown @fabaff
@@ -537,11 +545,12 @@ source/_integrations/wallbox.markdown @hesselonline
source/_integrations/waqi.markdown @andrey-git
source/_integrations/watson_tts.markdown @rutkai
source/_integrations/weather.markdown @fabaff
-source/_integrations/webostv.markdown @bendavid
+source/_integrations/webostv.markdown @bendavid @thecode
source/_integrations/websocket_api.markdown @home-assistant/core
source/_integrations/wemo.markdown @esev
source/_integrations/wiffi.markdown @mampfes
source/_integrations/wilight.markdown @leofig-rj
+source/_integrations/wirelesstag.markdown @sergeymaysak
source/_integrations/withings.markdown @vangorra
source/_integrations/wled.markdown @frenck
source/_integrations/wolflink.markdown @adamkrol93
@@ -559,6 +568,7 @@ source/_integrations/yandex_transport.markdown @rishatik92 @devbis
source/_integrations/yeelight.markdown @rytilahti @zewelor @shenxn
source/_integrations/yeelightsunflower.markdown @lindsaymarkward
source/_integrations/yi.markdown @bachya
+source/_integrations/youless.markdown @gjong
source/_integrations/zeroconf.markdown @bdraco
source/_integrations/zerproc.markdown @emlove
source/_integrations/zha.markdown @dmulcahey @adminiuga
diff --git a/source/_integrations/automate.markdown b/source/_integrations/automate.markdown
index 61e25b7f93f..009edbaf33d 100644
--- a/source/_integrations/automate.markdown
+++ b/source/_integrations/automate.markdown
@@ -1,5 +1,5 @@
---
-title: Automate Pulse 2 Hub by Rollease Acmeda
+title: Automate Pulse Hub v2
description: Instructions on setting up the Automate Pulse Hub v2 by Rollease Acmeda within Home Assistant.
ha_category:
- Cover
@@ -9,6 +9,8 @@ ha_config_flow: true
ha_codeowners:
- '@sillyfrog'
ha_domain: automate
+ha_platforms:
+ - cover
---
The Automate Pulse 2 Hub by Rollease Acmeda integration allows you to control and monitor covers via your Automate Pulse v2 Hub (see the [acmeda](/integrations/acmeda) integration for the v1 hub). The integration uses an [API](https://pypi.org/project/aiopulse2/) to directly communicate with hubs on the local network, rather than connecting via the cloud.
diff --git a/source/_integrations/coronavirus.markdown b/source/_integrations/coronavirus.markdown
index 34b4a87273e..c0b18691ee1 100644
--- a/source/_integrations/coronavirus.markdown
+++ b/source/_integrations/coronavirus.markdown
@@ -7,7 +7,7 @@ ha_release: 0.106
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@home_assistant/core'
+ - '@home-assistant/core'
ha_domain: coronavirus
ha_platforms:
- sensor
diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown
index 658cc652644..dbad6e5433f 100644
--- a/source/_integrations/demo.markdown
+++ b/source/_integrations/demo.markdown
@@ -27,6 +27,8 @@ ha_platforms:
- number
- remote
- sensor
+ - select
+ - siren
- stt
- switch
- tts
diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown
index aeef0935d96..fd42361fc94 100644
--- a/source/_integrations/esphome.markdown
+++ b/source/_integrations/esphome.markdown
@@ -21,6 +21,7 @@ ha_platforms:
- light
- number
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/flipr.markdown b/source/_integrations/flipr.markdown
index 173d9acd013..d6580dfdaf7 100644
--- a/source/_integrations/flipr.markdown
+++ b/source/_integrations/flipr.markdown
@@ -9,6 +9,8 @@ ha_config_flow: true
ha_codeowners:
- '@cnico'
ha_domain: flipr
+ha_platforms:
+ - sensor
---
[Flipr](https://www.goflipr.com) is a smart pool monitor that publishes data to the cloud via SigFox.
diff --git a/source/_integrations/freedompro.markdown b/source/_integrations/freedompro.markdown
index 98d038d3042..3d45f6bffc6 100644
--- a/source/_integrations/freedompro.markdown
+++ b/source/_integrations/freedompro.markdown
@@ -17,7 +17,7 @@ ha_codeowners:
- '@stefano055415'
ha_domain: freedompro
ha_platforms:
- - binary sensor
+ - binary_sensor
- climate
- cover
- fan
diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown
index 9aed29877e3..1fe49cdbd89 100644
--- a/source/_integrations/generic.markdown
+++ b/source/_integrations/generic.markdown
@@ -1,5 +1,5 @@
---
-title: Generic
+title: Generic Camera
description: Instructions on how to integrate IP cameras within Home Assistant.
ha_category:
- Camera
diff --git a/source/_integrations/generic_hygrostat.markdown b/source/_integrations/generic_hygrostat.markdown
index f2f68afc6bc..39e2270fd8d 100644
--- a/source/_integrations/generic_hygrostat.markdown
+++ b/source/_integrations/generic_hygrostat.markdown
@@ -1,11 +1,16 @@
---
-title: Generic Hygrostat
+title: Generic hygrostat
description: Virtual hygrostat device
ha_category:
- Humidifier
ha_release: 2021.8
ha_domain: generic_hygrostat
ha_quality_scale: internal
+ha_codeowners:
+ - '@Shulyaka'
+ha_iot_class: Local Polling
+ha_platforms:
+ - humidifier
---
The `generic_hygrostat` humidifier integration is a virtual hygrostat implemented in Home Assistant. It uses a sensor and a switch connected to a humidifier or dehumidifier under the hood. When in humidifier mode, if the measured humidity is less than the target humidity, the humidifier will be turned on and turned off when the required humidity is reached. When in dehumidifier mode, if the measured humidity is greater than the target humidity, the dehumidifier will be turned on and turned off when required humidity is reached. One Generic Hygrostat entity can only control one switch. If you need to activate two switches, one for a humidifier and one for a dehumidifier, you will need two Generic Hygrostat entities.
diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown
index a34be7397e4..377079d4080 100644
--- a/source/_integrations/homekit_controller.markdown
+++ b/source/_integrations/homekit_controller.markdown
@@ -34,6 +34,7 @@ ha_platforms:
- light
- lock
- media_player
+ - number
- sensor
- switch
---
diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown
index 393b08dd9ca..c15ae822535 100644
--- a/source/_integrations/honeywell.markdown
+++ b/source/_integrations/honeywell.markdown
@@ -19,4 +19,4 @@ It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library.
If your system is compatible with this integration, then you will be able access it via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`).
-{% include integrations/config_flow.md %}
\ No newline at end of file
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index aa1a27133ed..16416c0d4b3 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -33,6 +33,7 @@ ha_platforms:
- number
- scene
- sensor
+ - select
- switch
- weather
---
diff --git a/source/_integrations/mill.markdown b/source/_integrations/mill.markdown
index 018ffa48c48..f5dd09fdd2a 100644
--- a/source/_integrations/mill.markdown
+++ b/source/_integrations/mill.markdown
@@ -11,6 +11,7 @@ ha_domain: mill
ha_config_flow: true
ha_platforms:
- climate
+ - sensor
---
Integrates Mill heater into Home Assistant.
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 4f3c1093da6..a779c6d0efe 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -18,6 +18,7 @@ ha_platforms:
- light
- sensor
- switch
+ha_quality_scale: silver
---
[Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable Logic Controller) and RTUs (Remote Terminal Unit). The integration adheres strictly to the [protocol specification](https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf).
diff --git a/source/_integrations/motioneye.markdown b/source/_integrations/motioneye.markdown
index 067ed4b9289..c9056afdf49 100644
--- a/source/_integrations/motioneye.markdown
+++ b/source/_integrations/motioneye.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_config_flow: true
ha_platforms:
- camera
+ - switch
---
The motionEye integration allows you to integrate your
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index 41de0c79af2..007bccc1948 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -17,10 +17,12 @@ ha_platforms:
- climate
- cover
- fan
+ - humidifier
- lock
- number
- scene
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown
index 90e11d9b7cc..6f5da99d714 100644
--- a/source/_integrations/netatmo.markdown
+++ b/source/_integrations/netatmo.markdown
@@ -21,6 +21,7 @@ ha_platforms:
- climate
- light
- sensor
+ - select
---
The Netatmo integration platform is the main integration to integrate all Netatmo related platforms.
diff --git a/source/_integrations/nexia.markdown b/source/_integrations/nexia.markdown
index 20f3d2ffe10..c8a035f1531 100644
--- a/source/_integrations/nexia.markdown
+++ b/source/_integrations/nexia.markdown
@@ -1,5 +1,5 @@
---
-title: Nexia/American Standard
+title: Nexia/American Standard/Trane
description: Instructions on how to integrate Trane and American Standard thermostats into Home Assistant.
ha_category:
- Binary Sensor
diff --git a/source/_integrations/prosegur.markdown b/source/_integrations/prosegur.markdown
index 5fb60c6dc32..6def25326c8 100644
--- a/source/_integrations/prosegur.markdown
+++ b/source/_integrations/prosegur.markdown
@@ -1,5 +1,5 @@
---
-title: Prosegur
+title: Prosegur Alarm
description: Instructions on how to integrate Prosegur Smart Alarms into Home Assistant.
ha_category:
- Alarm
diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown
index 694a3c786bd..ed4c7e323a1 100644
--- a/source/_integrations/rituals_perfume_genie.markdown
+++ b/source/_integrations/rituals_perfume_genie.markdown
@@ -16,8 +16,8 @@ ha_domain: rituals_perfume_genie
ha_platforms:
- binary_sensor
- number
- - select
- sensor
+ - select
- switch
ha_quality_scale: silver
---
diff --git a/source/_integrations/siren.markdown b/source/_integrations/siren.markdown
index 8f4b668f868..7f9333f7b1f 100644
--- a/source/_integrations/siren.markdown
+++ b/source/_integrations/siren.markdown
@@ -9,7 +9,6 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
- '@raman325'
-ha_iot_class:
---
The Siren integration is built for the controlling and monitoring of siren/chime devices.
diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown
index ea66f950e4b..7e6561ebebe 100644
--- a/source/_integrations/sonos.markdown
+++ b/source/_integrations/sonos.markdown
@@ -18,6 +18,7 @@ ha_platforms:
- media_player
- sensor
- switch
+ha_zeroconf: true
---
The `sonos` integration allows you to control your [Sonos](https://www.sonos.com) wireless speakers from Home Assistant. It also works with IKEA Symfonisk speakers.
diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown
index 9506d1a5c27..d2eee712234 100644
--- a/source/_integrations/spider.markdown
+++ b/source/_integrations/spider.markdown
@@ -13,6 +13,7 @@ ha_domain: spider
ha_config_flow: true
ha_platforms:
- climate
+ - sensor
- switch
---
diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown
index 3e8c608689c..b4484e6e793 100644
--- a/source/_integrations/switcher_kis.markdown
+++ b/source/_integrations/switcher_kis.markdown
@@ -12,6 +12,7 @@ ha_domain: switcher_kis
ha_platforms:
- sensor
- switch
+ha_config_flow: true
---
This `Switcher` integration allows you to control your [Switcher Devices](https://www.switcher.co.il/).
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 6904ba4337a..7be37c2682e 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -9,6 +9,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@PhracturedBlue'
- '@tetienne'
+ - '@home-assistant/core'
ha_domain: template
ha_platforms:
- alarm_control_panel
diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown
index a0e896633c9..d494dba3d9b 100644
--- a/source/_integrations/velux.markdown
+++ b/source/_integrations/velux.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_domain: velux
ha_platforms:
- cover
+ - light
- scene
---
diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown
index 6c0b075d355..d145f6217d7 100644
--- a/source/_integrations/webostv.markdown
+++ b/source/_integrations/webostv.markdown
@@ -8,6 +8,7 @@ ha_iot_class: Local Polling
ha_release: 0.18
ha_codeowners:
- '@bendavid'
+ - '@thecode'
ha_domain: webostv
ha_platforms:
- media_player
diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown
index 78d457a1816..8fde46d4522 100644
--- a/source/_integrations/wemo.markdown
+++ b/source/_integrations/wemo.markdown
@@ -17,6 +17,7 @@ ha_platforms:
- binary_sensor
- fan
- light
+ - sensor
- switch
ha_codeowners:
- '@esev'
diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown
index 7ea450c5633..ae5c89e7edd 100644
--- a/source/_integrations/wirelesstag.markdown
+++ b/source/_integrations/wirelesstag.markdown
@@ -13,6 +13,8 @@ ha_platforms:
- binary_sensor
- sensor
- switch
+ha_codeowners:
+ - '@sergeymaysak'
---
The `wirelesstag` implementation allows you to integrate your [wirelesstag.net](https://wirelesstag.net/) sensors tags in Home Assistant.
diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown
index e1b5f9d5397..108ec900173 100644
--- a/source/_integrations/wled.markdown
+++ b/source/_integrations/wled.markdown
@@ -16,6 +16,7 @@ ha_zeroconf: true
ha_platforms:
- light
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index fde7c6ad63b..8993d1e7640 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -24,9 +24,12 @@ ha_platforms:
- alarm_control_panel
- device_tracker
- fan
+ - humidifier
- light
+ - number
- remote
- sensor
+ - select
- switch
- vacuum
---
diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown
index d8e46872f40..d0a174a0164 100644
--- a/source/_integrations/yale_smart_alarm.markdown
+++ b/source/_integrations/yale_smart_alarm.markdown
@@ -7,12 +7,10 @@ ha_release: 0.78
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@gjohanssson-ST'
+ - '@gjohansson-ST'
ha_domain: yale_smart_alarm
ha_platforms:
- alarm_control_panel
-ha_codeowners:
- - '@gjohansson-ST'
---
The Yale Smart Living integration provides connectivity with the Yale Smart Alarm systems and Smart Hub through Yale's API.
diff --git a/source/_integrations/youless.markdown b/source/_integrations/youless.markdown
index 1624f242eb8..885df87f888 100644
--- a/source/_integrations/youless.markdown
+++ b/source/_integrations/youless.markdown
@@ -3,10 +3,14 @@ title: YouLess
description: Instructions on how to integrate your YouLess device into Home Assistant.
ha_category:
- Sensor
-ha_iot_class: Local Pull
+ha_iot_class: Local Polling
ha_config_flow: true
ha_release: 2021.8
ha_domain: youless
+ha_codeowners:
+ - '@gjong'
+ha_platforms:
+ - sensor
---
The YouLess integration for Home Assistant allows you to read the meter values from sensors created by [YouLess](https://www.youless.nl/home.html).
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index fde2654e49f..d37561b2566 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -27,6 +27,7 @@ ha_platforms:
- lock
- number
- sensor
+ - siren
- switch
---
From 44f9f581a614281fccf318c4d0a1c8ad1653b088 Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Wed, 28 Jul 2021 22:32:13 +0200
Subject: [PATCH 003/122] Bump release
---
_config.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/_config.yml b/_config.yml
index 7ad17af55ab..7ebfbee5e6f 100644
--- a/_config.yml
+++ b/_config.yml
@@ -104,9 +104,9 @@ social:
# Home Assistant release details
current_major_version: 2021
-current_minor_version: 7
-current_patch_version: 4
-date_released: 2021-07-21
+current_minor_version: 8
+current_patch_version: 0
+date_released: 2021-08-04
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
From 06f2005438ecfbca1ae7145bb3817b71ee4a1378 Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Wed, 28 Jul 2021 22:56:02 +0200
Subject: [PATCH 004/122] 2021.8.0 beta notes tweaks
---
source/_posts/2021-08-04-release-20218.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_posts/2021-08-04-release-20218.markdown b/source/_posts/2021-08-04-release-20218.markdown
index 08ecff6b421..b682d00a74d 100644
--- a/source/_posts/2021-08-04-release-20218.markdown
+++ b/source/_posts/2021-08-04-release-20218.markdown
@@ -72,7 +72,7 @@ Screenshot of the new energy dashboard.
-Screenshot of power usage card on the energy dashboard.
+Screenshot of the usage card on the energy dashboard.
## Siren
@@ -112,7 +112,7 @@ Some new features landed for script, automations and templates this release.
### This
When an automation or script is triggered to run, a new variable is available:
-`this`. This variable contains the [state object](docs/configurationstate_object)
+`this`. This variable contains the [state object](/docs/configuration/state_object/)
of the automation or script running and allows you to access information about
the automation directly. Thanks, [@r-t-s]!
From 373f54fc44f04c249a49d5daa06b6b12f7639058 Mon Sep 17 00:00:00 2001
From: Diogo Gomes
Date: Wed, 28 Jul 2021 22:05:18 +0100
Subject: [PATCH 005/122] Fix Prosegur link in 2021.8.0 release notes (#18648)
---
source/_posts/2021-08-04-release-20218.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_posts/2021-08-04-release-20218.markdown b/source/_posts/2021-08-04-release-20218.markdown
index b682d00a74d..6b76f3fb915 100644
--- a/source/_posts/2021-08-04-release-20218.markdown
+++ b/source/_posts/2021-08-04-release-20218.markdown
@@ -196,7 +196,7 @@ We welcome the following new integrations this release:
- [Energy][energy docs], added by the Home Assistant Core team
- [Flipr][flipr docs], added by [@cnico]
- [Generic Hygrostat][generic_hygrostat docs], added by [@Shulyaka]
-- [Prosegur][prometheus docs], added by [@dgomes]
+- [Prosegur][prosegur docs], added by [@dgomes]
- [Siren][siren docs], added by [@raman325]
- [YouLess][youless docs], added by [@gjong]
- [Renault][renault docs], added by [@epenet]
From b48b21167bd9299eb46a063bb0eb3e4818075f1c Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Thu, 29 Jul 2021 23:57:17 +0200
Subject: [PATCH 006/122] 2021.8.0 beta notes tweaks
---
.../_posts/2021-08-04-release-20218.markdown | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
diff --git a/source/_posts/2021-08-04-release-20218.markdown b/source/_posts/2021-08-04-release-20218.markdown
index 6b76f3fb915..1ec2013a6be 100644
--- a/source/_posts/2021-08-04-release-20218.markdown
+++ b/source/_posts/2021-08-04-release-20218.markdown
@@ -192,7 +192,6 @@ noteworthy changes this release:
We welcome the following new integrations this release:
- [Adax][adax docs], added by [@Danielhiversen]
-- [Automate Pulse 2 Hub by Rollease Acmeda][automate docs], added by [@sillyfrog]
- [Energy][energy docs], added by the Home Assistant Core team
- [Flipr][flipr docs], added by [@cnico]
- [Generic Hygrostat][generic_hygrostat docs], added by [@Shulyaka]
@@ -222,6 +221,7 @@ The following integrations are now available via the Home Assistant UI:
- [CO2 Signal][co2_signal docs], done by [@Danielhiversen]
- [Honeywell Total Connect Comfort (US)][honeywell docs], done by [@rdfurman]
- [Notifications for Android TV / Fire TV][nfandroid docs], done by [@tkdrob]
+- [Switcher][switcher_kis docs], done by [@thecode]
- [Yale Smart Living][yale_smart_alarm docs], done by [@gjohansson-ST]
## If you need help...
@@ -504,22 +504,6 @@ dashboards, you'll need to update your configuration to match this change.
{% enddetails %}
-{% details "Sonos" %}
-
-Sonos speaker regrouping behavior may change during snapshot restores for
-certain layouts. Previously, speakers which were joined after a snapshot was
-taken were not unjoined during restores.
-
-Restored groups are now recreated to exactly match the snapshot.
-If `sonos.restore` is called with `with_group: True` (the default) on individual
-speakers (instead of `entity_id: all`) **and** speakers were joined after
-snapshots were taken, then it is possible to create groups which did not
-previously exist.
-
-([@jjlawren] - [#53277]) ([sonos docs])
-
-{% enddetails %}
-
{% details "Viessmann ViCare" %}
Viessmann introduced a new API to control their devices. The original
From 6e0ae6fca2fb93f6edaef6b1b6e62dd72fb76395 Mon Sep 17 00:00:00 2001
From: Raman Gupta <7243222+raman325@users.noreply.github.com>
Date: Wed, 28 Jul 2021 17:26:25 -0400
Subject: [PATCH 007/122] Document zwave_js.reset_meter service (#18587)
* Document zwave_js.meter_reset service
* revert additional change and put in separate PR
* Updates based on PR feedback
* Tweak
* tweaks based on upstream feedback
Co-authored-by: Franck Nijhof
---
source/_integrations/zwave_js.markdown | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index d37561b2566..c22af14aa33 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -263,6 +263,16 @@ action:
entity_id: "{{ trigger.entity_id }}"
```
+### Service `zwave_js.reset_meter`
+
+This service will reset the meters on a device that supports the Meter Command Class.
+
+| Service Data Attribute | Required | Description |
+| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
+| `entity_id` | yes | Entity (or list of entities) for the meters you want to reset. |
+| `meter_type` | no | If supported by the device, indicates the type of meter to reset. Not all devices support this option. |
+| `value` | no | If supported by the device, indicates the value to reset the meter to. Not all devices support this option. |
+
### Service `zwave_js.set_lock_usercode`
This service will set the usercode of a lock to X at code slot Y.
From db853354655979757e3329e8864c2cb8fa00e9b0 Mon Sep 17 00:00:00 2001
From: Michael <35783820+mib1185@users.noreply.github.com>
Date: Tue, 3 Aug 2021 10:37:19 +0200
Subject: [PATCH 008/122] Move power and energy attributes to sensors (#18644)
---
source/_integrations/tplink.markdown | 49 +++-------------------------
1 file changed, 5 insertions(+), 44 deletions(-)
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index 5dfb8ed248a..cc24ef88d1e 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -5,6 +5,7 @@ ha_category:
- Hub
- Switch
- Light
+ - Sensor
ha_release: 0.89
ha_iot_class: Local Polling
ha_config_flow: true
@@ -24,6 +25,7 @@ There is currently support for the following device types within Home Assistant:
- **Light**
- **Switch**
+- **Sensor**
In order to activate the support, you will have to enable the integration inside the configuration panel.
The supported devices in your network are automatically discovered, but if you want to control devices residing in other networks you will need to configure them manually as shown below.
@@ -40,14 +42,14 @@ Plugs are type `switch` when autodiscovery has been disabled.
- HS100
- HS103
- HS105
-- HS110 (This device is capable of reporting energy usage data to template sensors)
+- HS110 (confirmed to support consumption sensors)
- KP105
-- KP115
+- KP115 (confirmed to support consumption sensors)
### Strip (Multi-Plug)
- HS107 (indoor 2-outlet)
-- HS300 (powerstrip 6-outlet) (This device is capable of reporting energy usage data to template sensors)
+- HS300 (powerstrip 6-outlet) (confirmed to support consumption sensors)
- KP303 (powerstrip 3-outlet)
- KP400 (outdoor 2-outlet)
- KP200 (indoor 2-outlet)
@@ -143,44 +145,3 @@ tplink:
- host: 192.168.200.7
- host: 192.168.200.8
```
-
-## Extracting Energy Sensor data
-
-Devices that are confirmed to support Consumption Reading;
-1. HS110
-2. HS300
-3. KP115
-4. Bulbs (device-specific, only current power consumption is commonly available)
-
-In order to get the power consumption readings from a TP-Link HS110 device, you'll have to create a [template sensor](/integrations/template/).
-In the example below, change all of the `my_tp_switch`'s to match your device's entity ID (without the domain). For example, if your entity is `switch.whale_heater` then replace `my_tp_switch` with `whale_heater`:
-
-{% raw %}
-
-```yaml
-sensor:
- - platform: template
- sensors:
- my_tp_switch_amps:
- friendly_name_template: "{{ state_attr('switch.my_tp_switch','friendly_name') }} Current"
- value_template: "{{ state_attr('switch.my_tp_switch','current_a') }}"
- unit_of_measurement: "A"
- my_tp_switch_watts:
- friendly_name_template: "{{ state_attr('switch.my_tp_switch','friendly_name') }} Power"
- value_template: "{{ state_attr('switch.my_tp_switch','current_power_w') }}"
- unit_of_measurement: "W"
- my_tp_switch_total_kwh:
- friendly_name_template: "{{ state_attr('switch.my_tp_switch','friendly_name') }} Total Consumption"
- value_template: "{{ state_attr('switch.my_tp_switch','total_energy_kwh') }}"
- unit_of_measurement: "kWh"
- my_tp_switch_volts:
- friendly_name_template: "{{ state_attr('switch.my_tp_switch','friendly_name') }} Voltage"
- value_template: "{{ state_attr('switch.my_tp_switch','voltage') }}"
- unit_of_measurement: "V"
- my_tp_switch_today_kwh:
- friendly_name_template: "{{ state_attr('switch.my_tp_switch','friendly_name') }} Today's Consumption"
- value_template: "{{ state_attr('switch.my_tp_switch','today_energy_kwh') }}"
- unit_of_measurement: "kWh"
-```
-
-{% endraw %}
From 34457a6c52f4bd832d11e5be8a4db36a72f32199 Mon Sep 17 00:00:00 2001
From: Nicko van Someren
Date: Mon, 2 Aug 2021 06:44:23 -0600
Subject: [PATCH 009/122] Document change to Lutron button events for un-named
buttons (#18650)
---
source/_integrations/lutron.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown
index c9c4f87e8b7..9bda0f6c3ba 100644
--- a/source/_integrations/lutron.markdown
+++ b/source/_integrations/lutron.markdown
@@ -63,7 +63,7 @@ It is recommended to assign a static IP address to your main repeater. This ensu
Individual buttons on keypads are not represented as entities. Instead, they fire events called `lutron_event` whose payloads include `id` and `action` attributes.
-The `id` attribute includes the name of the keypad and the name of the button, normalized the same way entity names are. For example, if the keypad is called "Kitchen Keypad" and the button is called "Dinner" the event's `id` will be `kitchen_keypad_dinner`.
+The `id` attribute includes the name of the keypad and the name of the button, normalized the same way entity names are. For example, if the keypad is called "Kitchen Keypad" and the button is called "Dinner" the event's `id` will be `kitchen_keypad_dinner`. If the button has not been assigned a name by the Lutron system installer then the button will have a name of "Unknown Button". In this case the `id` will be suffixed with the underlying Lutron button number and will be of the form `kitchen_keypad_unknown_button_1`.
The `action` attribute varies depending on the button type.
From 2e7334e7a2fc205d55465203590dcb1f9d509162 Mon Sep 17 00:00:00 2001
From: Franck Nijhof
Date: Thu, 29 Jul 2021 20:59:00 +0200
Subject: [PATCH 010/122] Revert "Documentation for new Automate integration"
(#18656)
This reverts commit 4503957bea8a6949bd6c75910daf6e3018a71a35.
---
source/_integrations/acmeda.markdown | 6 ++---
source/_integrations/automate.markdown | 34 --------------------------
2 files changed, 2 insertions(+), 38 deletions(-)
delete mode 100644 source/_integrations/automate.markdown
diff --git a/source/_integrations/acmeda.markdown b/source/_integrations/acmeda.markdown
index 39f411e7133..d787f59ac66 100644
--- a/source/_integrations/acmeda.markdown
+++ b/source/_integrations/acmeda.markdown
@@ -15,15 +15,13 @@ ha_platforms:
- sensor
---
-The Rollease Acmeda Automate integration allows you to control and monitor covers via your Rolelase Acmeda Automate hub (v1 only, see the [Automate Integration](/integrations/automate) for the Automate Pulse v2 Hub).
-
-The integration uses an [API](https://pypi.org/project/aiopulse/) to directly communicate with hubs on the local network, rather than connecting via the cloud or via RS-485.
-Devices are represented as a cover for monitoring and control as well as a sensor for monitoring battery condition.
+The Rollease Acmeda Automate integration allows you to control and monitor covers via your Rolelase Acmeda Automate hub. The integrations communicates directly with hubs on the local network, rather than connecting via the cloud or via RS-485. Devices are represented as a cover for monitoring and control as well as a sensor for monitoring battery condition.
### Supported devices
- Automate Pulse Hub v1
+
{% include integrations/config_flow.md %}
### Multiple hubs
diff --git a/source/_integrations/automate.markdown b/source/_integrations/automate.markdown
deleted file mode 100644
index 009edbaf33d..00000000000
--- a/source/_integrations/automate.markdown
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Automate Pulse Hub v2
-description: Instructions on setting up the Automate Pulse Hub v2 by Rollease Acmeda within Home Assistant.
-ha_category:
- - Cover
-ha_iot_class: Local Push
-ha_release: 2021.8
-ha_config_flow: true
-ha_codeowners:
- - '@sillyfrog'
-ha_domain: automate
-ha_platforms:
- - cover
----
-
-The Automate Pulse 2 Hub by Rollease Acmeda integration allows you to control and monitor covers via your Automate Pulse v2 Hub (see the [acmeda](/integrations/acmeda) integration for the v1 hub). The integration uses an [API](https://pypi.org/project/aiopulse2/) to directly communicate with hubs on the local network, rather than connecting via the cloud.
-
-Devices are represented as a cover for monitoring and control as well as a sensor for monitoring battery level and signal strength.
-
-
-{% include integrations/config_flow.md %}
-
-Once registration is complete, all devices are automatically discovered on the hub and you will have the opportunity to select the area each device is located. You should see a `cover` and two `sensor` entities for each device.
-
-The integration automatically manages the addition/update/removal of any devices connected to the hub at startup, including device names unless manually specified in Home Assistant.
-
-## Caveats
-
-If the IP address for the hub changes, you will need to re-register it with Home Assistant again. To avoid this, you may set up a DHCP reservation on your router for your hub so that it always has the same IP address.
-
-The integration has the following limitations:
-
-- covers with position as well as tilt are not yet supported.
-- the integration doesn't make use of rooms and scenes configured in the hub, use the equivalent functionality in Home Assistant instead.
From 57f6854a1b769a5e3688b4f7eb61eebddd84394a Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Thu, 29 Jul 2021 11:04:59 -0700
Subject: [PATCH 011/122] Add energy statistics more info (#18657)
---
source/more-info/statistics.markdown | 8 ++++++++
1 file changed, 8 insertions(+)
create mode 100644 source/more-info/statistics.markdown
diff --git a/source/more-info/statistics.markdown b/source/more-info/statistics.markdown
new file mode 100644
index 00000000000..f3e344d8115
--- /dev/null
+++ b/source/more-info/statistics.markdown
@@ -0,0 +1,8 @@
+---
+title: "Expected data source not listed"
+description: "More information on if your expected data source is not listed."
+---
+
+You're configuring a statistic but you couldn't find your source in the dropdown? That's caused by a bug in the integration providing the entity. Integrations need to configure their entities correctly so Home Assistant knows that we need to track statistics for it and how.
+
+Open an issue with the author of the integration and link them to https://developers.home-assistant.io/docs/core/entity/sensor#statistics.
From eb83045b8df1e249497b4141d246178351a5a8f1 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Thu, 29 Jul 2021 11:47:48 -0700
Subject: [PATCH 012/122] Update the in-page anchor (#18659)
---
source/more-info/statistics.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/more-info/statistics.markdown b/source/more-info/statistics.markdown
index f3e344d8115..bda81cfff6b 100644
--- a/source/more-info/statistics.markdown
+++ b/source/more-info/statistics.markdown
@@ -5,4 +5,4 @@ description: "More information on if your expected data source is not listed."
You're configuring a statistic but you couldn't find your source in the dropdown? That's caused by a bug in the integration providing the entity. Integrations need to configure their entities correctly so Home Assistant knows that we need to track statistics for it and how.
-Open an issue with the author of the integration and link them to https://developers.home-assistant.io/docs/core/entity/sensor#statistics.
+Open an issue with the author of the integration and link them to https://developers.home-assistant.io/docs/core/entity/sensor#long-term-statistics.
From a94e5bf572603690019fd9ade27942df8cf34bb9 Mon Sep 17 00:00:00 2001
From: Aaron David Schneider
Date: Tue, 3 Aug 2021 10:05:07 +0200
Subject: [PATCH 013/122] extend fritz doc (#18682)
* extend fritz doc
* fix FRITZ!Box name
* Update source/_integrations/fritz.markdown
Co-authored-by: Simone Chemelli
* Update source/_integrations/fritz.markdown
Co-authored-by: Franck Nijhof
* Update source/_integrations/fritz.markdown
Co-authored-by: Franck Nijhof
* suggestions
Co-authored-by: Simone Chemelli
Co-authored-by: Franck Nijhof
---
source/_integrations/fritz.markdown | 54 +++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown
index 6c99fce904d..7ae3e2e8c07 100644
--- a/source/_integrations/fritz.markdown
+++ b/source/_integrations/fritz.markdown
@@ -79,6 +79,8 @@ These can be changed at **AVM FRITZ!Box Tools** -> **Configure** on the Integrat
### Parental control
+Parental control switches can be used to enable and disable internet access of individual devices. If a device has internet access it will be enabled, otherwise it will be disabled. You can also find the current blocking state of the individual devices in the UI of the FRITZ!Box under `Internet` -> `Filters` -> `Parental Controls` -> `Device Block`
+
Parental control switches are designed for advanced users, thus they are disabled by default. You need to enable the wanted entities manually.
### Device Tracker
@@ -91,3 +93,55 @@ Parental control switches are designed for advanced users, thus they are disable
Due to security reasons, AVM implemented the ability to enable/disable a port forward rule only from the host involved in the rule.
As a result, this integration will create entities only for rules that have your Home Assistant host as a destination.
+
+**Note 1**: On your FRITZ!Box, enable the setting `Permit independent port sharing for this device` for the device which runs HA (`Internet` -> `Permit Access` -> ``)
+
+**Note 2**: Only works if you have a dedicated IPv4 address (it won't work with DS-Lite)
+
+## Example Automations and Scripts
+
+
+**Script: Reconnect / get new IP**
+
+The following script can be used to easily add a reconnect button to your UI. If you want to reboot your FRITZ!Box, you can use `fritzbox_tools.reboot` instead.
+
+```yaml
+fritz_box_reconnect:
+ alias: "Reconnect FRITZ!Box"
+ sequence:
+ - service: fritz.reconnect
+ target:
+ entity_id: binary_sensor.fritz_box_7530_connectivity
+
+```
+**Automation: Reconnect / get new IP every night**
+
+```yaml
+automation:
+- alias: "System: Reconnect FRITZ!Box"
+ trigger:
+ - platform: time
+ at: "05:00:00"
+ action:
+ - service: fritz.reconnect
+ target:
+ entity_id: binary_sensor.fritzbox_x_connectivity
+
+```
+
+**Automation: Phone notification with wifi credentials when guest wifi is created**
+
+```yaml
+automation:
+ - alias: "Guests Wifi Turned On -> Send Password To Phone"
+ trigger:
+ - platform: state
+ entity_id: switch.fritzbox_x_wifi_x
+ to: "on"
+ action:
+ - service: notify.notify
+ data:
+ title: "Guest wifi is enabled"
+ message: "Password: ..."
+
+```
From 93c5f8952fb24cb0b879fe1c58d4261989dfd07b Mon Sep 17 00:00:00 2001
From: jan iversen
Date: Mon, 2 Aug 2021 14:56:03 +0200
Subject: [PATCH 014/122] Allow combinations write_coil/read_coils and
write_coils/read_coil for modbus switch (#18691)
---
source/_integrations/modbus.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index a779c6d0efe..7eba22b4399 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -946,7 +946,7 @@ switches:
default: 0
type: integer
input_type:
- description: type of address (holding/coil/discrete/input)
+ description: type of address (holding/coil/discrete/input or holdings/coils for array call)
required: false
default: write_type
type: integer
From 6db3413cfeceb50c7ac3dd20896ac490c0935f3e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20S=C3=B8rensen?=
Date: Mon, 2 Aug 2021 18:51:25 +0200
Subject: [PATCH 015/122] Add energy analytics (#18693)
---
source/_integrations/analytics.markdown | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/source/_integrations/analytics.markdown b/source/_integrations/analytics.markdown
index ec29202eac3..cddcd7ba759 100644
--- a/source/_integrations/analytics.markdown
+++ b/source/_integrations/analytics.markdown
@@ -74,6 +74,7 @@ This includes:
- The names of all your core integrations
- The names and versions of all your custom integrations if you have any
+- Boolean to indicate that the [`energy` integration](/integrations/energy) is configured
If your system includes the Supervisor, this will also contain:
@@ -100,14 +101,17 @@ If your system includes the Supervisor, this will also contain:
"version": "{{site.data.version_data.hassos['odroid-n2']}}"
},
"integrations": ["awesome_integration"],
- "addons": [
- {
- "slug": "awesome_addon",
- "protected": true,
- "version": "1.0.0",
- "auto_update": false
- }
- ]
+ "addons": [
+ {
+ "slug": "awesome_addon",
+ "protected": true,
+ "version": "1.0.0",
+ "auto_update": false
+ }
+ ],
+ "energy": {
+ "configured": true
+ }
}
```
From 3cd204b63fc77df91514aa2a439cad4ef2255fc2 Mon Sep 17 00:00:00 2001
From: Bram Kragten
Date: Mon, 2 Aug 2021 20:27:55 +0200
Subject: [PATCH 016/122] New Lovelace element 2021.8 (#18695)
---
.../_includes/asides/lovelace_navigation.html | 49 +++--
source/_lovelace/alarm-panel.markdown | 1 +
source/_lovelace/button.markdown | 1 +
source/_lovelace/calendar.markdown | 1 +
source/_lovelace/conditional.markdown | 1 +
source/_lovelace/energy.markdown | 127 ++++++++++++
source/_lovelace/entities.markdown | 1 +
source/_lovelace/entity-filter.markdown | 1 +
source/_lovelace/entity.markdown | 1 +
source/_lovelace/gauge.markdown | 11 +
source/_lovelace/glance.markdown | 1 +
source/_lovelace/grid.markdown | 1 +
source/_lovelace/history-graph.markdown | 1 +
source/_lovelace/horizontal-stack.markdown | 1 +
source/_lovelace/humidifier.markdown | 1 +
source/_lovelace/iframe.markdown | 1 +
source/_lovelace/light.markdown | 1 +
source/_lovelace/logbook.markdown | 1 +
source/_lovelace/map.markdown | 1 +
source/_lovelace/markdown.markdown | 1 +
source/_lovelace/masonary.markdown | 16 ++
source/_lovelace/media-control.markdown | 1 +
source/_lovelace/panel.markdown | 19 ++
source/_lovelace/picture-elements.markdown | 1 +
source/_lovelace/picture-entity.markdown | 1 +
source/_lovelace/picture-glance.markdown | 1 +
source/_lovelace/picture.markdown | 1 +
source/_lovelace/plant-status.markdown | 1 +
source/_lovelace/sensor.markdown | 1 +
source/_lovelace/shopping-list.markdown | 1 +
source/_lovelace/sidebar.markdown | 47 +++++
source/_lovelace/statistics-graph.markdown | 76 +++++++
source/_lovelace/thermostat.markdown | 1 +
source/_lovelace/vertical-stack.markdown | 1 +
source/_lovelace/weather-forecast.markdown | 1 +
.../lovelace/energy/carbon-consumed-gauge.png | Bin 0 -> 4506 bytes
.../images/lovelace/energy/devices-graph.png | Bin 0 -> 8209 bytes
.../images/lovelace/energy/distribution.png | Bin 0 -> 8288 bytes
.../lovelace/energy/grid-neutrality-gauge.png | Bin 0 -> 4247 bytes
.../lovelace/energy/solar-consumed-gauge.png | Bin 0 -> 3985 bytes
source/images/lovelace/energy/solar-graph.png | Bin 0 -> 7117 bytes
.../images/lovelace/energy/sources-table.png | Bin 0 -> 8700 bytes
source/images/lovelace/energy/usage-graph.png | Bin 0 -> 7071 bytes
.../lovelace/lovelace_gauge_needle_card.png | Bin 0 -> 3874 bytes
.../lovelace_statistics_graph_bar.png | Bin 0 -> 6405 bytes
.../lovelace_statistics_graph_line.png | Bin 0 -> 18628 bytes
source/lovelace/badges.markdown | 2 +-
source/lovelace/cards.markdown | 8 +
...and-views.markdown => dashboards.markdown} | 190 +-----------------
source/lovelace/views.markdown | 188 +++++++++++++++++
50 files changed, 560 insertions(+), 201 deletions(-)
create mode 100644 source/_lovelace/energy.markdown
create mode 100644 source/_lovelace/masonary.markdown
create mode 100644 source/_lovelace/panel.markdown
create mode 100644 source/_lovelace/sidebar.markdown
create mode 100644 source/_lovelace/statistics-graph.markdown
create mode 100644 source/images/lovelace/energy/carbon-consumed-gauge.png
create mode 100644 source/images/lovelace/energy/devices-graph.png
create mode 100644 source/images/lovelace/energy/distribution.png
create mode 100644 source/images/lovelace/energy/grid-neutrality-gauge.png
create mode 100644 source/images/lovelace/energy/solar-consumed-gauge.png
create mode 100644 source/images/lovelace/energy/solar-graph.png
create mode 100644 source/images/lovelace/energy/sources-table.png
create mode 100644 source/images/lovelace/energy/usage-graph.png
create mode 100644 source/images/lovelace/lovelace_gauge_needle_card.png
create mode 100644 source/images/lovelace/lovelace_statistics_graph_bar.png
create mode 100644 source/images/lovelace/lovelace_statistics_graph_line.png
create mode 100644 source/lovelace/cards.markdown
rename source/lovelace/{dashboards-and-views.markdown => dashboards.markdown} (58%)
create mode 100644 source/lovelace/views.markdown
diff --git a/source/_includes/asides/lovelace_navigation.html b/source/_includes/asides/lovelace_navigation.html
index 47f23ade87e..08cc065b9ef 100644
--- a/source/_includes/asides/lovelace_navigation.html
+++ b/source/_includes/asides/lovelace_navigation.html
@@ -1,10 +1,44 @@
- {% assign cards = site.lovelace | sort_natural: 'title' %}
+ {% assign elements = site.lovelace | sort_natural: 'title' %}
Lovelace UI
+
+
+
+
Views
+
+
+
+
+
Cards
+
@@ -12,10 +46,6 @@
Advanced
-
-
-
Cards
-
-
diff --git a/source/_lovelace/alarm-panel.markdown b/source/_lovelace/alarm-panel.markdown
index 1288e296f4f..f0c773dfdb7 100644
--- a/source/_lovelace/alarm-panel.markdown
+++ b/source/_lovelace/alarm-panel.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Alarm Panel Card"
sidebar_label: Alarm Panel
description: "The Alarm Panel card allows you to arm and disarm your alarm control panel integrations."
diff --git a/source/_lovelace/button.markdown b/source/_lovelace/button.markdown
index c7dca136f75..14ed2b2e819 100644
--- a/source/_lovelace/button.markdown
+++ b/source/_lovelace/button.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Button Card"
sidebar_label: Button
description: "The Button card allows you to add buttons to perform tasks."
diff --git a/source/_lovelace/calendar.markdown b/source/_lovelace/calendar.markdown
index 6b5d084212d..b5fb73da00b 100644
--- a/source/_lovelace/calendar.markdown
+++ b/source/_lovelace/calendar.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Calendar Card"
sidebar_label: Calendar
description: "The calendar card displays your calendar entities in a month, day and list view"
diff --git a/source/_lovelace/conditional.markdown b/source/_lovelace/conditional.markdown
index b8fe0369d86..df73887cdc3 100644
--- a/source/_lovelace/conditional.markdown
+++ b/source/_lovelace/conditional.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: Conditional Card
sidebar_label: Conditional
description: The Conditional card displays another card based on entity states.
diff --git a/source/_lovelace/energy.markdown b/source/_lovelace/energy.markdown
new file mode 100644
index 00000000000..4b91455242e
--- /dev/null
+++ b/source/_lovelace/energy.markdown
@@ -0,0 +1,127 @@
+---
+type: card
+title: "Energy Cards"
+sidebar_label: Energy Cards
+description: "An overview of the energy cards that are available."
+---
+
+This is a list of all the cards used in the energy dashboard, you can also place them anywhere you want in your Lovelace dashboard.
+
+At the moment there are no configuration options available for these cards, you can configure them on the energy {% my config_energy title="energy configuration page" %}.
+
+They will always show the data of today when used outside the energy dashboard.
+
+## Energy usage graph
+
+
+
+ Screenshot of the Energy usage graph card.
+
+
+The energy usage graph card shows the amount of energy your house has consumed, and from what source this energy came.
+It will also show the amount of energy your have returned to the grid.
+
+#### Example
+```yaml
+type: energy-usage-graph
+```
+
+## Solar production graph
+
+
+
+ Screenshot of the Solar production graph card.
+
+
+The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production.
+
+#### Example
+```yaml
+type: energy-solar-graph
+```
+
+## Energy distribution
+
+
+
+ Screenshot of the Energy distribution card.
+
+
+The energy distribution card shows how the energy flowed, from the grid to your house, from your solar panels to your house and/or back to the grid.
+If setup, it will also tell you how many kWh of the energy you got from the grid was produced without using fossil fuels.
+
+#### Example
+```yaml
+type: energy-distribution
+```
+
+## Energy sources table
+
+
+
+ Screenshot of the Energy sources table card.
+
+
+The energy sources table card shows all your energy sources, and the corresponding amount of energy.
+If setup, it will also show the costs and compensation per source and the total.
+
+#### Example
+```yaml
+type: energy-sources-table
+```
+
+## Grid neutrality gauge
+
+
+
+ Screenshot of the Grid neutrality gauge card.
+
+
+The grid neutrality gauge card represents your energy dependency. If it's green, it means you produced more energy than that you consumed from the grid. If it's in the red, it means that you relied on the grid for part of your home's energy consumption.
+
+#### Example
+```yaml
+type: energy-grid-neutrality-gauge
+```
+
+## Solar consumed gauge
+
+
+
+ Screenshot of the Solar consumed gauge card.
+
+
+The solar consumed gauge represents how much of the solar energy was not used by your home and was returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge.
+
+#### Example
+```yaml
+type: energy-solar-consumed-gauge
+```
+
+## Carbon consumed gauge
+
+
+
+ Screenshot of the Carbon consumed gauge card.
+
+
+The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self.
+
+#### Example
+```yaml
+type: energy-carbon-consumed-gauge
+```
+
+## Devices energy graph
+
+
+
+ Screenshot of the devices energy graph card.
+
+
+The devices energy graph show the energy usage per device, it is sorted by usage.
+
+#### Example
+```yaml
+type: energy-devices-graph
+```
\ No newline at end of file
diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown
index 8a6fc8db5d9..18c81656924 100644
--- a/source/_lovelace/entities.markdown
+++ b/source/_lovelace/entities.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entities Card"
sidebar_label: Entities
description: "The Entities card is the most common type of card. It groups items together into lists."
diff --git a/source/_lovelace/entity-filter.markdown b/source/_lovelace/entity-filter.markdown
index 8605d34b89b..0e62325fe56 100644
--- a/source/_lovelace/entity-filter.markdown
+++ b/source/_lovelace/entity-filter.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entity Filter Card"
sidebar_label: Entity Filter
description: "The Entity Filter card allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. "
diff --git a/source/_lovelace/entity.markdown b/source/_lovelace/entity.markdown
index 132347a1f32..7c1009f09eb 100644
--- a/source/_lovelace/entity.markdown
+++ b/source/_lovelace/entity.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Entity Card"
sidebar_label: Entity
description: "The Entity card gives you a quick overview of your entity's state"
diff --git a/source/_lovelace/gauge.markdown b/source/_lovelace/gauge.markdown
index c82dc46e4b5..b55fe8c7093 100644
--- a/source/_lovelace/gauge.markdown
+++ b/source/_lovelace/gauge.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Gauge Card"
sidebar_label: Gauge
description: "The Gauge card is a basic card that allows visually seeing sensor data."
@@ -11,6 +12,11 @@ The Gauge card is a basic card that allows visually seeing sensor data.
Screenshot of the Gauge card.
+
+
+Screenshot of the Gauge card in needle mode.
+
+
To add the Gauge card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Gauge** from the card picker. All options for this card can be configured via the user interface.
Alternatively, the card can be configured using YAML:
@@ -53,6 +59,11 @@ max:
description: Maximum value for graph.
type: integer
default: 100
+needle:
+ required: false
+ description: Show the gauge as a needle gauge.
+ type: boolean
+ default: false
severity:
required: false
description: Allows setting of colors for different numbers.
diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown
index 812c9269ca7..b9a00165006 100644
--- a/source/_lovelace/glance.markdown
+++ b/source/_lovelace/glance.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Glance Card"
sidebar_label: Glance
description: "The Glance card is useful to group multiple sensors in a compact overview."
diff --git a/source/_lovelace/grid.markdown b/source/_lovelace/grid.markdown
index 3b31e81f53a..95a1fc4953b 100644
--- a/source/_lovelace/grid.markdown
+++ b/source/_lovelace/grid.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Grid Card"
sidebar_label: Grid
description: "The Grid card allows you to show multiple cards in a grid."
diff --git a/source/_lovelace/history-graph.markdown b/source/_lovelace/history-graph.markdown
index 9452a3e0969..d77a4dd437f 100644
--- a/source/_lovelace/history-graph.markdown
+++ b/source/_lovelace/history-graph.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "History Graph Card"
sidebar_label: History Graph
description: "The History Graph card allows you to display a graph for each of the entities listed."
diff --git a/source/_lovelace/horizontal-stack.markdown b/source/_lovelace/horizontal-stack.markdown
index eaf96be80f0..fa66b6d0b80 100644
--- a/source/_lovelace/horizontal-stack.markdown
+++ b/source/_lovelace/horizontal-stack.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Horizontal Stack Card"
sidebar_label: Horizontal Stack
description: "The Horizontal Stack card allows you to stack together multiple cards, so they always sit next to each other in the space of one column."
diff --git a/source/_lovelace/humidifier.markdown b/source/_lovelace/humidifier.markdown
index 935e42c2dad..25edb613984 100644
--- a/source/_lovelace/humidifier.markdown
+++ b/source/_lovelace/humidifier.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Humidifier Card"
sidebar_label: Humidifier
description: "The Humidifier card gives control of your humidifier entity, allowing you to change the target humidity and mode of the entity."
diff --git a/source/_lovelace/iframe.markdown b/source/_lovelace/iframe.markdown
index 9b2316e41c6..310029219b2 100644
--- a/source/_lovelace/iframe.markdown
+++ b/source/_lovelace/iframe.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Webpage Card"
sidebar_label: Webpage
description: "The Webpage card allows you to embed your favorite webpage right into Home Assistant."
diff --git a/source/_lovelace/light.markdown b/source/_lovelace/light.markdown
index 56e74ee880a..baf00451017 100644
--- a/source/_lovelace/light.markdown
+++ b/source/_lovelace/light.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Light Card"
sidebar_label: Light
description: "The Light card allows you to change the brightness of the light."
diff --git a/source/_lovelace/logbook.markdown b/source/_lovelace/logbook.markdown
index aed2f9af910..4ddb422ef86 100644
--- a/source/_lovelace/logbook.markdown
+++ b/source/_lovelace/logbook.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Logbook Card"
sidebar_label: Logbook
description: "The Logbook card displays entries from the logbook for specific entities."
diff --git a/source/_lovelace/map.markdown b/source/_lovelace/map.markdown
index 63815a9885c..65259d0d5da 100644
--- a/source/_lovelace/map.markdown
+++ b/source/_lovelace/map.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Map Card"
sidebar_label: Map
description: "The Map card that allows you to display entities on a map"
diff --git a/source/_lovelace/markdown.markdown b/source/_lovelace/markdown.markdown
index 417f9b4e3d9..f26e7d9bbd1 100644
--- a/source/_lovelace/markdown.markdown
+++ b/source/_lovelace/markdown.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Markdown Card"
sidebar_label: Markdown
description: "The Markdown card is used to render Markdown"
diff --git a/source/_lovelace/masonary.markdown b/source/_lovelace/masonary.markdown
new file mode 100644
index 00000000000..44c08960819
--- /dev/null
+++ b/source/_lovelace/masonary.markdown
@@ -0,0 +1,16 @@
+---
+type: view
+title: Masonary View
+sidebar_label: Masonary (default)
+description: "The default panel layout uses a masonary algorithme."
+---
+
+The masonary view is the default view type.
+It sorts cards in columns based on their `card size`. If you want to group some cards you have to use `stack` cards.
+
+{% configuration %}
+type:
+ required: false
+ description: "`masonary`"
+ type: string
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_lovelace/media-control.markdown b/source/_lovelace/media-control.markdown
index fc6ad9bd9e8..ab292870643 100644
--- a/source/_lovelace/media-control.markdown
+++ b/source/_lovelace/media-control.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Media Control Card"
sidebar_label: Media Control
description: "The Media Control card is used to display media player entities on an interface with easy to use controls."
diff --git a/source/_lovelace/panel.markdown b/source/_lovelace/panel.markdown
new file mode 100644
index 00000000000..98972e1a44f
--- /dev/null
+++ b/source/_lovelace/panel.markdown
@@ -0,0 +1,19 @@
+---
+type: view
+title: Panel View
+sidebar_label: Panel
+description: "The panel view shows 1 card in the fullwidth of the screen."
+---
+
+In this view the first card is rendered full-width, other cards in the view will not be rendered.
+
+This view doesn't have support for badges.
+
+This mode is good when using cards like `map`, `stack` or `picture-elements`.
+
+{% configuration %}
+type:
+ required: true
+ description: "`panel`"
+ type: string
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown
index 0141895c8c7..59e2732b632 100644
--- a/source/_lovelace/picture-elements.markdown
+++ b/source/_lovelace/picture-elements.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Elements Card"
sidebar_label: Picture Elements
description: "The Picture Elements card is one of the most versatile types of cards. The cards allow you to position icons or text and even services! On an image based on coordinates."
diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown
index 372f85f09f7..b0e84aca0bd 100644
--- a/source/_lovelace/picture-entity.markdown
+++ b/source/_lovelace/picture-entity.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: Picture Entity Card
sidebar_label: Picture Entity
description: The Picture Entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of camera entities.
diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown
index 776853bf4e5..89972b57d70 100644
--- a/source/_lovelace/picture-glance.markdown
+++ b/source/_lovelace/picture-glance.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Glance Card"
sidebar_label: Picture Glance
description: "The Picture Glance card shows an image and corresponding entity states as an icon. The entities on the right side allow toggle actions, others show the more information dialog."
diff --git a/source/_lovelace/picture.markdown b/source/_lovelace/picture.markdown
index 5dffca2b3e3..79cc23d89c5 100644
--- a/source/_lovelace/picture.markdown
+++ b/source/_lovelace/picture.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Picture Card"
sidebar_label: Picture
description: "The Picture card allows you to set an image to use for navigation to various paths in your interface or to call a service."
diff --git a/source/_lovelace/plant-status.markdown b/source/_lovelace/plant-status.markdown
index 24dc0b1cecb..753a58877b2 100644
--- a/source/_lovelace/plant-status.markdown
+++ b/source/_lovelace/plant-status.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Plant Status Card"
sidebar_label: Plant Status
description: "The Plant Status card is for all the lovely botanists out there."
diff --git a/source/_lovelace/sensor.markdown b/source/_lovelace/sensor.markdown
index ae9d3379d11..f5201c12bae 100644
--- a/source/_lovelace/sensor.markdown
+++ b/source/_lovelace/sensor.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Sensor Card"
sidebar_label: Sensor
description: "The Sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time."
diff --git a/source/_lovelace/shopping-list.markdown b/source/_lovelace/shopping-list.markdown
index 360a4172448..9edd2e39aec 100644
--- a/source/_lovelace/shopping-list.markdown
+++ b/source/_lovelace/shopping-list.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Shopping List Card"
sidebar_label: Shopping List
description: "The Shopping List card allows you to add, edit, check-off, and clear items from your shopping list."
diff --git a/source/_lovelace/sidebar.markdown b/source/_lovelace/sidebar.markdown
new file mode 100644
index 00000000000..03e2176fcc4
--- /dev/null
+++ b/source/_lovelace/sidebar.markdown
@@ -0,0 +1,47 @@
+---
+type: view
+title: Sidebar View
+sidebar_label: Sidebar
+description: "The sidebar view has 2 columns, a wide one and a smaller one on the right."
+---
+
+The sidebar view has 2 columns, a wide one and a smaller one on the right.
+
+This view doesn't have support for badges.
+
+To change a view to edit mode, or to change the location of a card, enable edit mode:
+Click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**.
+
+You can set if a card should be placed in the main (left) column of the sidebar column (right), by pressing the arrow right or left arrow in the bar underneath the card.
+
+On mobile all cards are rendered in 1 column and kept in the order of the cards in the config.
+
+## View config:
+
+{% configuration %}
+type:
+ required: true
+ description: "`sidebar`"
+ type: string
+{% endconfiguration %}
+
+#### Example
+
+Alternatively, the position of the card can be configured using YAML with the `view_layout` option:
+
+```yaml
+type: entities
+entities:
+ - media_player.lounge_room
+view_layout:
+ position: sidebar
+```
+
+## Cards config:
+
+{% configuration %}
+view_layout.position:
+ required: false
+ description: "The position of the card, `main` or `sidebar`"
+ type: string
+{% endconfiguration %}
diff --git a/source/_lovelace/statistics-graph.markdown b/source/_lovelace/statistics-graph.markdown
new file mode 100644
index 00000000000..0afd047ab8f
--- /dev/null
+++ b/source/_lovelace/statistics-graph.markdown
@@ -0,0 +1,76 @@
+---
+type: card
+title: "Statistics Graph Card"
+sidebar_label: Statistics Graph
+description: "The Statistics Graph card allows you to display a graph with statistics data for each of the entities listed."
+---
+
+The Statistics Graph card allows you to display a graph of statistics data for each of the entities listed. To learn more about statistics and what is supported, check out the [statistics](/integrations/statistics/) documentation.
+
+
+
+Screenshot of the Statistics Graph card with none metered entities and `chart_type` `line`.
+
+
+
+
+Screenshot of the Statistics Graph card with a metered entity and `chart_type` `bar`.
+
+
+To add the Statistics Graph card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Statistics Graph** from the card picker. All options for this card can be configured via the user interface.
+
+{% configuration %}
+type:
+ required: true
+ description: statistics-graph
+ type: string
+entities:
+ required: true
+ description: "A list of entity IDs or `entity` objects, see below."
+ type: list
+days_to_show:
+ required: false
+ description: Days to show in graph. Minimum is 1 day.
+ type: integer
+ default: 30
+chart_type:
+ required: false
+ description: If the chart should be rendered as a `bar` or a `line` chart.
+ type: string
+state_types:
+ required: false
+ description: The stat types to render. `min`, `max`, `mean`, `sum`
+ type: list
+title:
+ required: false
+ description: The card title.
+ type: string
+{% endconfiguration %}
+
+## Options For Entities
+
+If you define entities as objects instead of strings, you can add more customization and configuration:
+
+{% configuration %}
+entity:
+ required: true
+ description: Entity ID.
+ type: string
+name:
+ required: false
+ description: Overwrites friendly name.
+ type: string
+{% endconfiguration %}
+
+## Example
+
+Alternatively, the card can be configured using YAML:
+
+```yaml
+type: statistics-graph
+title: 'My Graph'
+entities:
+ - sensor.outside_temperature
+ - entity: sensor.inside_temperature
+ name: Inside
+```
diff --git a/source/_lovelace/thermostat.markdown b/source/_lovelace/thermostat.markdown
index 4add4187272..5be392a7e67 100644
--- a/source/_lovelace/thermostat.markdown
+++ b/source/_lovelace/thermostat.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Thermostat Card"
sidebar_label: Thermostat
description: "The Thermostat card gives control of your climate entity, allowing you to change the temperature and mode of the entity."
diff --git a/source/_lovelace/vertical-stack.markdown b/source/_lovelace/vertical-stack.markdown
index fb3d0b05b43..2b5946bd9c5 100644
--- a/source/_lovelace/vertical-stack.markdown
+++ b/source/_lovelace/vertical-stack.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Vertical Stack Card"
sidebar_label: Vertical Stack
description: "The Vertical Stack card allows you to group multiple cards so they always sit in the same column."
diff --git a/source/_lovelace/weather-forecast.markdown b/source/_lovelace/weather-forecast.markdown
index 3925f8f4712..94cae354bdd 100644
--- a/source/_lovelace/weather-forecast.markdown
+++ b/source/_lovelace/weather-forecast.markdown
@@ -1,4 +1,5 @@
---
+type: card
title: "Weather Forecast Card"
sidebar_label: Weather Forecast
description: "The Weather Forecast card displays the weather. Very useful to include on interfaces that people display on the wall."
diff --git a/source/images/lovelace/energy/carbon-consumed-gauge.png b/source/images/lovelace/energy/carbon-consumed-gauge.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a422bc8b92133cd4b90f74804afd0b3e6aa16ad
GIT binary patch
literal 4506
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
JO2#z!zW~#wOlAN8
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/distribution.png b/source/images/lovelace/energy/distribution.png
new file mode 100644
index 0000000000000000000000000000000000000000..d89afabe75b0d0e84e8883beed65734b52042cf6
GIT binary patch
literal 8288
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
Re?JF6N^)wlHPU7w{|A$Kyomq+
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/grid-neutrality-gauge.png b/source/images/lovelace/energy/grid-neutrality-gauge.png
new file mode 100644
index 0000000000000000000000000000000000000000..88153c29c05f350268f6d3422306e224fc146129
GIT binary patch
literal 4247
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
literal 0
HcmV?d00001
diff --git a/source/images/lovelace/energy/sources-table.png b/source/images/lovelace/energy/sources-table.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b7316d1fdc231705a9ba926e56635c7c12ffbf7
GIT binary patch
literal 8700
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