From ed256ec1d3126e838f85b7fb5d7b1bdc72ef4938 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 30 Jun 2021 17:22:24 +0200 Subject: [PATCH 01/25] Add beta release notes for 2021.7 --- _config.yml | 6 +- .../_posts/2021-07-07-release-20217.markdown | 2192 +++++++++++++++++ 2 files changed, 2195 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2021-07-07-release-20217.markdown diff --git a/_config.yml b/_config.yml index 274f5a2a363..5a2f5f40720 100644 --- a/_config.yml +++ b/_config.yml @@ -104,9 +104,9 @@ social: # Home Assistant release details current_major_version: 2021 -current_minor_version: 6 -current_patch_version: 6 -date_released: 2021-06-20 +current_minor_version: 7 +current_patch_version: 0 +date_released: 2021-07-07 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown new file mode 100644 index 00000000000..be050b97f1a --- /dev/null +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -0,0 +1,2192 @@ +--- +layout: post +title: "2021.7: Beta release notes" +description: "Beta release notes for Home Assistant Core 2021.7" +date: 2021-06-30 00:00:00 +date_formatted: "July 7, 2021" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2021-07/social.png +feedback: true +--- + + + +These are the beta release notes for Home Assistant Core 2021.7 (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. + +- [New entity: Select](#new-entity-select) +- [Trigger conditions and trigger IDs](#trigger-conditions-and-trigger-ids) +- [Referencing other entities in triggers and conditions](#referencing-other-entities-in-triggers-and-conditions) +- [Working with dates in templates](#working-with-dates-in-templates) +- [Series version tags for Docker containers](#series-version-tags-for-docker-containers) +- [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) +- [All changes](#all-changes) + + + +## New entity: Select + +This release we welcome the `select` entity to the Home Assistant family. The +select entity is relative of the dropdown helper (also known as +`input_select`). + +The difference is that while the input select is configured and managed by you, +the select entities are provided by integrations. + +This means integrations can now provide provide entities that give a choice. +Either in the Lovelace UI, but also via automations using services, +and via the Google Assistant. + + + +Some integrations started implementing the first select entities as of this +release. MQTT & KNS made it available for use, WLED uses it to provide +controls on selecting and activating a user preset, and with Rituals Perfume +Genie you can now change the room size for your diffuser. + +## Trigger conditions and trigger IDs + +If you are creating some complex automations in YAML, you might be familiar with +this. Consider an big automation, with a whole bunch of triggers. But how +would you know which of those triggers actually triggered the automation? + +You can now assign an `id` to your triggers that is passed into automation +when it is triggered, allowing you to make decision on it. + +```yaml +automation: + - alias: "Trigger IDs!" + trigger: + - platform: state + id: "normal" + entity_id: binary_sensor.gate + - platform: state + id: "forgotten" + entity_id: binary_sensor.gate + for: + minutes: 10 + ... +``` + +The above example triggers the same automation twice, once when the gate opens +and once when the gate is left open for 10 minutes (probably forgotten). Each +trigger has its own ID. + +Now introducing the new trigger condition! So you can add a condition on which +trigger fired the automation. + +```yaml +automation: + - alias: "Trigger IDs!" + ... + action: + ... + - condition: trigger + id: "forgotten" + - service: notify.frenck_iphone + data: + message: "Someone left the gate open..." +``` + +You can use the trigger condition in all places all other conditions work +as well, including things like [choose from a group of actions](/docs/scripts/#choose-a-group-of-actions). + +## Referencing other entities in triggers and conditions + +A small, but possibly helpful, change to our script and automations. +You can now reference other entities for the above/below values of numeric +state triggers and conditions. Both sensors and number entities can be used. + +For example, you can now trigger an automation if the outside temperature +is higher than the temperature inside. + +```yaml +automation: + - alias: "Notify to close the window" + trigger: + - platform: numeric_state + entity_id: sensor.outside_temperature + above: sensor.inside_temperature + action: + - service: notify.frenck_iphone + data: + message: "Close the windows, it is warm outside!" +``` + +The numeric state conditions supports the same. + +Additionally, the time conditions now support a similar thing using other +sensors that provide a time in the before and after options. Time triggers +added support for that already in a previous release. + +## Working with dates in templates + +If you ever tried to work with dates in templates, you probably know that that +is hard. And honestly, that will never go away, a time and timezones is a +complex little beast. + +However, we realized that the hardest part of using date & times with templates, +is actually converting the state of a sensor or text to an datetime. This +release we added a small template method to help with that: `as_datetime`. + +It can be used as a filter or as a method. Here is an example to +calculate the number of days until my drivers license expires: + +{% raw %} + +```yaml +{{ (states('sensor.drivers_license') | as_datetime - now()).days }} days +``` + +{% endraw %} + +## Series version tags for Docker containers + +If you are using the Home Assistant Container installation method, +we recommend to use a specific version tag, however, that means +you need to update the version tag each time we release a new patch version +of Home Assistant. + +As of this release, we also provide a series version tag, that always +points to the latest patch version of that release. + +```shell +docker pull ghcr.io/home-assistant/home-assistant:2021.7 +``` + +The `2021.7`, will contain the latest July release, even if that is +actually version `2021.7.2`. + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +Z-Wave JS Updates, probably make it a chapter in the release blog: + +- Add zwave_js.multicast_set_value service ([@raman325] - [#51115]) ([zwave_js docs]) +- Add zwave_js node status sensor ([@raman325] - [#51181]) ([zwave_js docs]) +- Add zwave_js ping node service ([@raman325] - [#51435]) ([zwave_js docs]) +- Add ZWave JS heal network UI (#9449) @cgarwood (frontend) +- Add button for zwave_js options flow (#9001) @MartinHjelmare (frontend) +- Add button to download logs from zwave_js logs page (#9395) @raman325 (frontend) + +Others: + +- Add support for fan speed percentage and preset modes to google_assistant integration ([@jbouwh] - [#50283]) ([google_assistant docs]) +- Alexa fan preset_mode support ([@jbouwh] - [#50466]) ([alexa docs]) +- Philips TV ambilight support ([@elupus] - [#44867]) ([philips_js docs]) +- Yamaha musiccast grouping-services ([@micha91] - [#51952]) ([yamaha_musiccast docs]) +- Add separate ozone sensor for climacell ([@raman325] - [#51182]) ([climacell docs]) +- Add device trigger support for Philips Hue Wall Switch Module ([@cklagenberg] - [#51574]) ([hue docs]) +- WLED WebSocket support - local push updates ([@frenck] - [#51683]) ([wled docs]) +- Add preset support to WLED ([@frenck] - [#52170]) ([wled docs]) +- Allow keeping master light in WLED ([@frenck] - [#51759]) ([wled docs]) +- Add Xiaomi add using cloud support ([@starkillerOG] - [#47955]) ([xiaomi_miio docs]) +- Add services to ezviz integration ([@RenierM26] - [#48984]) ([ezviz docs]) (new-platform) +- Xiaomi_miio fan percentage based speeds and preset_modes ([@jbouwh] - [#51791]) ([xiaomi_miio docs]) +- Add config flow step user to dsmr ([@RobBie1221] - [#50318]) ([dsmr docs]) +- Add sensor platform to Meteoclimatic integration ([@adrianmo] - [#51467]) ([meteoclimatic docs]) (new-platform) +- Tibber power factor ([@Danielhiversen] - [#52223]) ([tibber docs]) +- Bulgarian language added in Google Translate TTS ([@hristo-atanasov] - [#51985]) ([google_translate docs]) +- Add new climacell sensors ([@raman325] - [#52079]) ([climacell docs]) +- Add service to reset SmartTub reminders ([@mdz] - [#51824]) ([smarttub docs]) +- ESPHome Climate add preset, custom preset, custom fan mode ([@OttoWinter] - [#52133]) ([esphome docs]) +- Change DiffuserRoomSize number entity to select entity ([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) +- KNX: Support for XY-color lights ([@farmio] - [#51306]) ([knx docs]) +- Add quantiles to Statistics integration ([@cgomesu] - [#52189]) ([statistics docs]) +- Create service to enable Continuous Mode on Nuki Opener ([@anaisbetts] - [#51861]) ([nuki docs]) + +- Add input elements to login page for password managers (#9369) @rianadon (frontend) +- Add hardware dialog (#9348) @ludeeus (frontend) + +## New Integrations + +We welcome the following new integrations this release: + +- [Ambee][ambee docs], added by [@frenck] +- [Forecast.Solar], added by [@klaasnicolaas] +- [Freedompro], added by [@stefano055415] +- [Modern Forms][modern_forms docs], added by [@wonderslug] +- [Select], added by [@frenck] + +## New Platforms + +The following integration got support for a new platform: + +- [AVM FRITZ!Box Tools][fritz docs] now has switches available, added by [[@chemelli74] +- [Bosch SHC][bosch_shc docs] has now several sensors for their devices, added by [@tschamm] +- [Groups][group docs] now support creating Media Player groups, added by [@definitio] +- [Hyperion][hyperion docs] can now provide a camera feed with the live image, added by [@dermotduffy] +- [KNX][knx docs] added support for number and the new select entities, added by [@farmio] +- [Meteoclimatic][meteoclimatic docs] now provides sensors with weather information, added by [@adrianmo] +- [MQTT][mqtt docs] got support for the new select entities, added by [@emontnemery] +- [Rituals Perfume Genie][rituals_perfume_genie docs] added a select entity for room size, added by [@milanmeu] +- [SIA Alarm Systems][sia docs] now provides various binary sensors, added by [@eavanvalkenburg] +- [Sony Bravia TV][braviatv docs] now offers a remote entity, added by [@Drafteed] +- [Switcher][switcher_kis docs] now provides sensors, added by [@thecode] +- [WLED][wled docs] now exposes color palettes and presets using select entities, added by [@frenck] + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [Coinbase][coinbase docs], done by [@TomBrien] +- [DSMR Slimme Meter][dsmr docs], done by [@RobBie1221] +- [Nmap Tracker][nmap_tracker docs], done by [@bdraco] +- [Yamaha MusicCast][yamaha_musiccast docs], done by [@vigonotion] + +## 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 "Using a reverse proxy with Home Assistant" %} + +Home Assistant will now block HTTP requests when a misconfigured reverse proxy, +or misconfigured Home Assistant instance when using a reverse proxy, +has been detected. + +If you are using a reverse proxy, please make sure you have configured +`use_x_forwarded_for` and `trusted_proxies` in your HTTP integration +configuration. + +For more information, see the +[HTTP integration documentation](https://www.home-assistant.io/integrations/http#use_x_forwarded_for). + +Additionally, access to Home Assistant from same IP as a trusted proxy will be +rejected if the request is marked as forwarded. + +([@frenck] - [#51839]) ([@elupus] - [#52073]) ([http docs]) + +{% enddetails %} + +{% details "Python 3.9 / Alpine 3.13" %} + +Our Docker images are not based on Alpine 3.13, and run Python 3.9. + +This is mainly interesting if you running custom Docker containers based +on our container. + +If you are using Home Assistant Container, Home Assistant OS or the Home Assistant +Supervised installation method, you will automatically get this update on upgrade +and no additional interaction is needed. + +([@pvizeli] - [#51628]) + +{% enddetails %} + +{% details "Modbus" %} + +As announced in 2021.4, the “old style” YAML was deprecated and now removed: + +Example “old style” configuration, that is now invalid: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + +binary_sensor: + platform: modbus + registers: + - name: Sensor1 + hub: hub1 + slave: 1 + register: 100 +``` + +Same configuration in valid new style: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + binary_sensors: + - name: Sensor1 + slave: 1 + address: 100 +``` + +([@janiversen] - [#51117]) ([modbus docs]) + +--- + +The `coil` and `register` configuration options are changed to `address` and (if not default) `input_type`. + +Previous configuration example: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + covers: + - name: Door1 + coil: 117 + - name: Door2 + register: 131 + state_open: 1 + state_closed: 0 +``` + +The new configuration looks like: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + covers: + - name: Door1 + input_type: coil + address: 117 + - name: Door2 + address: 131 + state_open: 1 + state_closed: 0 +``` + +([@janiversen] - [#51154]) ([modbus docs]) + +--- + +The configuration attributes `curent_temp_register` and `current_temp_register_type` +are changed to `address` and `input_type` in order for all platforms to have a +common configurations. + +Before this PR, this was legal: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + climates: + - name: "Watlow F4T" + current_temp_register: 27586 + current_temp_register_type: holding +``` + +This changes to: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + climates: + - name: "Watlow F4T" + address: 27586 + input_type: holding +``` + +([@janiversen] - [#51202]) ([modbus docs]) + +--- + +Modbus sensor ‘reverse_order’ is no longer supported, please use ‘swap’ instead. + +Old configuration: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + sensors: + - name: Sensor1 + address: 100 + reverse_order: true +``` + +New configuration: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + sensors: + - name: Sensor1 + address: 100 + swap: word +``` + +([@janiversen] - [#51665]) ([modbus docs]) + +--- + +`data_count` is no longer supported, please use `count`. + +No longer supported: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + climates: + - name: "Watlow F4T" + address: 27586 + input_type: holding + data_count: 1 + ... +``` + +Please change it to: + +```yaml +modbus: + - name: hub1 + type: tcp + host: IP_ADDRESS + port: 502 + climates: + - name: "Watlow F4T" + address: 27586 + input_type: holding + count: 1 + ... +``` + +([@janiversen] - [#51668]) ([modbus docs]) + +{% enddetails %} + +{% details "Google Play Music Desktop Player (GPMDP)" %} + +- The integration has been disabled since it requires an old version of the + `websocket-client` library which is incompatible with the requirements of + other integrations that are actively maintained. + +- It's not clear if this integration still works with the gpmdp app that now + only supports YouTube Music. If there's someone that uses the integration + successfully and wants to take on the maintenance task that is required to get + the integration in a compatible state, please create an issue to discus + the future of this integration. + +([@MartinHjelmare] - [#51509]) ([gpmdp docs]) + +{% enddetails %} + +{% details "MeteoAlarm" %} + +You now cannot use the 2 letters of your country code, but must know use the +complete country name in your configuration. To find out which country names +you can use, please look at meteoalarm.org. + +([@rolfberkenbosch] - [#51383]) ([meteoalarm docs]) + +{% enddetails %} + +{% details "CEC Support" %} + +our Docker container limited too support CEC drivers that are provided by +the Linux kernel. This applies to the Home Assistant Container, +Home Assistant OS and Home Assistant Supervised installation types. + +This will cover most CEC drivers out there. + + ([@pvizeli] - [#51637]) + +{% enddetails %} + +{% details "Yamaha MusicCast" %} + +The integration has been rewritten from the ground up and is now configurable +via the user interface only. Existing platform YAML config will automatically +imported into the user interface on upgrade; and can be safely removed +from the YAML configuration after upgrade has been completed. + +([@vigonotion] - [#51561]) ([yamaha_musiccast docs]) + +{% enddetails %} + +{% details "Spain electricity hourly pricing (PVPC)" %} + +With the change to the new, and unique, electric tariff 2.0TD, if you +previously had configured multiple PVPC sensors monitoring prices for more +than one of the old tariffs, only the first one will survive, so if you +have any automations or scripts that depend on these removed sensors, +you might need to adjust them. + +([@azogue] - [#51789]) ([pvpc_hourly_pricing docs]) + +{% enddetails %} + +{% details "Growatt" %} + +The Growatt API has changed individual PV array units from Watts to Kilowatts. +This change is to update the units used for these values in Home Assistant, +therefore the units for these values will change. + +([@muppet3000] - [#52021]) ([growatt_server docs]) + +{% enddetails %} + +{% details "Switcher" %} + +In preparation for multi device support, configuration via the UI and support +for discovery; this integration is migrating entity attributes into sensors +to be later added as device entities. The following switch entity attributes +migrated to sensors: + +| Attribute | Sensor Name | +| ------------- | ------------- | +| `power_consumption` | Power Consumption | +| `electric_current` | Electric Current | +| `remaining_time` | Remaining Time | +| `auto_off_set` | Auto Shutdown | + +([@thecode] - [#51964]) ([switcher_kis docs]) + +{% enddetails %} + +{% details "Sony Bravia TV " %} + +From April 2020, the Sony Bravia TV integration has been automatically importing +your import of existing YAML configurations. Now we have removed this option for +migration. Your existing configuration has been imported to the UI already +and can now be safely removed from your YAML configuration files. + +([@bieniu] - [#52141]) ([braviatv docs]) + +{% enddetails %} + +{% details "Azure Event Hub" %} + +When using this integration with with IoTHub, the `event_hub_name` is now +a required field, can be filled by the DeviceID when using IoTHub. + +([@eavanvalkenburg] - [#52049]) ([azure_event_hub docs]) + +{% enddetails %} + +{% details "DSMR Slimme Meter" %} + +Configuring the DSMR integration via YAML has been deprecated and will +be removed in Home Assistant 2021.9. If you have an existing YAML +configuration for the DSMR platform is will be imported into the UI +automatically on upgrade. You can safely remove the DSMR YAML configuration +after upgrading Home Assistant. + +([@frenck] - [#52179]) ([dsmr docs]) + +---- + +The Hourly Gas Consumption sensor has been removed from the DSMR integration. +This sensor was calculated and it is not an actual datapoint from the energy +meter. + +If you are looking for a replacement, you can use the +[Derivative integration](/integrations/derivative/) to re-create the hourly +(or any other timeframe) sensor based on the total Gas consumption sensor. + +([@frenck] - [#52147]) ([dsmr docs]) + +{% enddetails %} + +{% details "Nettigo Air Monitor" %} + +The AirQuality platform has been marked as deprecated. The `air_quality` +entities will be deleted and replaced with `sensor` entities. +You need to update your automations and dashboards if you have been usin +these `air_quality` entities in those. + +([@bieniu] - [#52152]) ([nam docs]) + +{% enddetails %} + +{% details "Open Z-Wave" %} + +Open Z-Wave lights no longer support the deprecated `white_value` attribute, +use `rgbw_color` instead. + +([@emontnemery] - [#52063]) ([ozw docs]) + +{% enddetails %} + +{% details "Prometheus" %} + +Prometheus is now converting temperatures in °F to °C. If you are relying on +`temperature_c` being in Fahrenheit, you will need to make adjustments, +for example by doing a unit conversion in a PromQL query. + +([@masto] - [#52212]) ([prometheus docs]) + +{% enddetails %} + +{% details "Airly" %} + +The AirQuality platform has been marked as deprecated. The `air_quality` entitiy +is removed and replaced with sensor entities. You will need to update their +automations and dashboards if you have been using the `air_quality` entity +of Airly. + +([@bieniu] - [#52225]) ([airly docs]) + +{% enddetails %} + +{% details "Nmap Tracker" %} + +The Nmap Tracker has fully transitioned to configuration via UI. +Existing YAML configuration will be imported automatically and can now safely +be removed from your configuration files. + +([@bdraco] - [#50429]) ([nmap_tracker docs]) + +{% enddetails %} + +{% details "MQTT" %} + +It's no longer possible to set attributes defined in the the base component +via a configured `json_attributes_topic`. + +For example a light no longer accepts brightness via the `json_attribute_topic`. +This was unintended and undocumented functionality that lead to expected +behavior. + +This change applies to all supported MQTT platforms. + +([@emontnemery] - [#52242] [#52278] [#52280] [#52285] [#52286] [#52283] [#52289] [#52291] [#52290] [#52288] [#52282] [#52279]) ([mqtt docs]) + +{% enddetails %} + +{% details "Coinbase" %} + +The Coinbase integration migrated to configuration via the UI. Configuring +Coinbase 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. + +([@TomBrien] - [#45354]) ([coinbase docs]) + +---- + +Only accounts explicitly included in `account_balance_currencies` will be +loaded. Excluding the option will no longer load all provided accounts as +Coinbase's API now provides at least 29 accounts even if they are not +configured in your API settings on Coinbase. + +([@TomBrien] - [#51981]) ([coinbase docs]) + +{% enddetails %} + +{% details "Kuler Sky" %} + +Kuler Sky lights no longer supports deprecated `white_value` attribute for +its lights, use the `rgbw_color` attribute instead. + +([@emontnemery] - [#52080]) ([kulersky docs]) + +{% enddetails %} + +{% details "Zero-configuration networking (zeroconf)" %} + +The IPv6 configuration option has been deprecated in favor of the settings +provided by the network integration. + +([@bdraco] - [#51173]) ([zeroconf docs]) + +{% enddetails %} + +{% details "Database (statistics table)" %} + +The statistics table is Home Assistant data table that is not exposed +or used by Home Assistant yet and is part of an alpha / feature that is in +development. However, it does exist and it might be you found it already +interesting or found a use for it. + +This release, the contents of this table is reset. This does not impact +any state history, and this data isn't used by Home Assistant as of yet. + +If you have no idea what this message is about, you can safely ignore it. +We have merely listed this to be complete in our breaking changes report. + +([@emontnemery] - [#52331]) ([history docs]) + +{% enddetails %} + +## All changes + +{% details "Click to see all changes!" %} + +- Refactor ModbusRegisterSensor class to get hub and configuration ([@yury-sannikov] - [#50234]) ([modbus docs]) +- Bump version to 2021.7.0dev0 ([@frenck] - [#51116]) +- Change stream sequence number to start from 0 ([@uvjustin] - [#51101]) ([stream docs]) +- Upgrade pysonos to 0.0.50 ([@amelchio] - [#51125]) ([sonos docs]) +- After merge, review. ([@janiversen] - [#51139]) ([modbus docs]) +- Bump pysma version to 0.5.0 ([@rklomp] - [#51098]) ([sma docs]) +- Add missing function signature ([@ollo69] - [#51153]) ([asuswrt docs]) +- Clean up Local IP integration ([@frenck] - [#51126]) ([local_ip docs]) +- Clean up DNS IP integration ([@frenck] - [#51143]) ([dnsip docs]) +- Update sia tests ([@eavanvalkenburg] - [#51151]) ([sia docs]) +- Normalize async_setup_entry ([@tkdrob] - [#51161]) +- Add myself to Switcher codeowners ([@thecode] - [#51158]) ([switcher_kis docs]) +- Use bool annotations for setup entries ([@tkdrob] - [#51166]) +- Define climate entity attributes as class variables ([@frenck] - [#51006]) ([climate docs]) ([toon docs]) +- Add zwave_js.multicast_set_value service ([@raman325] - [#51115]) ([zwave_js docs]) +- Fix totalconnect test calling public host ([@jjlawren] - [#51138]) ([totalconnect docs]) +- Adjust segment duration calculation in stream ([@uvjustin] - [#51149]) ([stream docs]) +- Use entity class vars in SolarEdge ([@frenck] - [#51123]) ([solaredge docs]) +- Define alarm_control_panel entity attributes as class variables ([@frenck] - [#51120]) ([alarm_control_panel docs]) ([verisure docs]) +- Bump actions/cache from 2.1.5 to 2.1.6 (@dependabot - [#51185]) +- Clean up Speedtest.net Sensors ([@frenck] - [#51124]) ([speedtestdotnet docs]) +- Bump config version to 2 for AVM Fritz Tools ([@mib1185] - [#51176]) ([fritz docs]) +- Remove old config from cover, including tests ([@janiversen] - [#51118]) ([modbus docs]) +- Move modbus schema validators to validators.py ([@janiversen] - [#51121]) ([modbus docs]) +- Remove "old" config from modbus binary_sensor ([@janiversen] - [#51117]) ([modbus docs]) (breaking-change) +- Define media_player entity attributes as class variables ([@frenck] - [#51192]) ([dunehd docs]) ([heos docs]) ([media_player docs]) ([spotify docs]) +- Change Cover to use address/input_type ([@janiversen] - [#51154]) ([modbus docs]) (breaking-change) +- Add missing outdoor temperature unit for Tado ([@Noltari] - [#51197]) ([tado docs]) +- Revert "Bump config version to 2 for AVM Fritz Tools (#51176)" ([@ludeeus] - [#51193]) ([fritz docs]) +- Set Registry name parameter to Hashable type ([@MartinHjelmare] - [#51203]) +- Address late review of Mazda services ([@bdr99] - [#51178]) ([mazda docs]) +- Adjust modbus climate to use address/input_type ([@janiversen] - [#51202]) ([modbus docs]) (breaking-change) +- Add separate ozone sensor for climacell ([@raman325] - [#51182]) ([climacell docs]) +- Decrease nsw fuel request volume ([@nickw444] - [#49552]) ([nsw_fuel_station docs]) +- Add network and callback support to SSDP ([@bdraco] - [#51019]) ([dlna_dmr docs]) ([network docs]) ([ssdp docs]) ([upnp docs]) (new-integration) +- Remove incorrect check in Alexa for SERVICE_ALARM_DISARM fail ([@emontnemery] - [#51224]) ([alexa docs]) +- Add discovery by manufacturer to Nettigo Air Monitor integration ([@bieniu] - [#51155]) ([nam docs]) +- Use flow result type constants more ([@scop] - [#51122]) ([auth docs]) ([mqtt docs]) ([mysensors docs]) +- Remove double schema validation in network ([@bdraco] - [#51219]) ([network docs]) +- Define CoverEntity entity attributes as class variables ([@frenck] - [#51236]) ([cover docs]) ([zwave_js docs]) +- Replace sonos discovery thread with ssdp callback registration ([@bdraco] - [#51033]) ([network docs]) ([sonos docs]) ([ssdp docs]) (new-integration) +- Cleanup unneeded variable assignment in ezviz ([@frenck] - [#51239]) ([ezviz docs]) +- Cleanup commented code + comprehensions in iOS ([@frenck] - [#51238]) ([ios docs]) +- Small tweaks to LaCrosse ([@frenck] - [#51249]) ([lacrosse docs]) +- Add gui config option consider device unavailable ([@rsegers] - [#51218]) ([zha docs]) +- Update HLS playlist in stream ([@uvjustin] - [#51191]) ([stream docs]) +- Handle empty ssdp descriptions in the cache ([@bdraco] - [#51253]) ([ssdp docs]) +- Small optimization in entity registry enabled deConz method ([@frenck] - [#51250]) ([deconz docs]) +- Clean up SmartTub ([@mdz] - [#51257]) ([smarttub docs]) +- Use entity class vars for Mill ([@Danielhiversen] - [#51264]) ([mill docs]) +- Only debug log new Sonos SSDP discoveries ([@jjlawren] - [#51247]) ([sonos docs]) +- Add zwave_js node status sensor ([@raman325] - [#51181]) ([zwave_js docs]) +- Simplify device action code ([@emontnemery] - [#51263]) +- Simplify device condition code ([@emontnemery] - [#51266]) +- Move light helper get_supported_color_modes ([@emontnemery] - [#51269]) ([light docs]) +- Collection of changing entity properties to class attributes ([@frenck] - [#51248]) +- Update to pygtfs 0.1.6 ([@mazzy89] - [#51267]) ([gtfs docs]) +- Entity attributes + typing fix in deCONZ alarm control panel ([@frenck] - [#51241]) ([deconz docs]) +- Add support for state class for Airly sensor ([@bieniu] - [#51285]) ([airly docs]) +- Processing of messages from channel by telegram_bot ([@NikoM87] - [#51274]) ([telegram_bot docs]) +- AppleTV typo in error notification ([@adrum] - [#51300]) ([apple_tv docs]) +- Upgrade black to 21.5b2 ([@frenck] - [#51297]) +- Alexa fan preset_mode support ([@jbouwh] - [#50466]) ([alexa docs]) +- Philips TV ambilight support ([@elupus] - [#44867]) ([philips_js docs]) +- Upgrade pylint to 2.8.3 ([@frenck] - [#51308]) +- KNX: move some Schema to schema.py ([@farmio] - [#51307]) ([knx docs]) +- KNX: Support for XY-color lights ([@farmio] - [#51306]) ([knx docs]) +- Refactor yeelight integration to use only flows ([@danielrheinbay] - [#51255]) ([yeelight docs]) +- Define SwitchEntity entity attributes as class variables ([@frenck] - [#51232]) ([switch docs]) +- Switch to using entity class attributes where possible in zwave_js ([@raman325] - [#51207]) ([zwave_js docs]) +- Improve config validation for key_value_schemas ([@balloob] - [#49429]) +- Bump aioswitcher to 1.2.3 ([@thecode] - [#51324]) ([switcher_kis docs]) +- Collection of changing entity properties to class attributes - 2 ([@frenck] - [#51345]) +- Use entity class vars for Melcloud ([@Danielhiversen] - [#51351]) ([melcloud docs]) +- SolarEdge: Move coordinators out of sensor platform ([@frenck] - [#51348]) ([solaredge docs]) +- Bump hangups to 0.4.14 ([@MartinHjelmare] - [#51355]) ([hangouts docs]) +- Move pymodbus test fixtures to test_init ([@janiversen] - [#51244]) ([modbus docs]) +- Define ToggleEntity entity attributes as class variables ([@frenck] - [#51231]) +- Add binary_sensor tests for devolo Home Control ([@Shutgun] - [#49843]) ([devolo_home_control docs]) +- Mark state final in BinarySensorEntity ([@frenck] - [#51234]) ([binary_sensor docs]) +- Update ping to use asyncio function in icmplib ([@bdraco] - [#50808]) ([ping docs]) +- Add Hyperion camera feed ([@dermotduffy] - [#46516]) ([hyperion docs]) (new-platform) +- Add media_player.group ([@definitio] - [#38855]) ([group docs]) (new-integration) (new-platform) +- Add support for fan speed percentage and preset modes to google_assistant integration ([@jbouwh] - [#50283]) ([google_assistant docs]) +- Fix HLS idle timer in stream ([@uvjustin] - [#51372]) ([stream docs]) +- Add binary sensor platform to SIA integration ([@eavanvalkenburg] - [#51206]) ([sia docs]) (new-platform) +- Remove is_standby from SwitchEntity ([@emontnemery] - [#51400]) ([hdmi_cec docs]) ([switch docs]) +- Add bosch shc platforms for sensor devices ([@tschamm] - [#50720]) ([bosch_shc docs]) (new-platform) +- Bumped to boschshcpy==0.2.19 ([@tschamm] - [#51416]) ([bosch_shc docs]) +- Allow registering a callback to ssdp that matches any key value ([@bdraco] - [#51382]) ([ssdp docs]) +- Pin jinja ([@balloob] - [#51434]) +- Bump aiohue to 2.5.1 ([@balloob] - [#51447]) ([hue docs]) +- Small fixes in SIA ([@eavanvalkenburg] - [#51401]) ([sia docs]) +- Address Hyperion camera post-merge code review ([@dermotduffy] - [#51457]) ([hyperion docs]) +- Allow unlimited scan_interval in modbus ([@janiversen] - [#51471]) ([modbus docs]) +- Allow number/sensor entities in numeric state conditions/triggers ([@frenck] - [#51439]) ([homeassistant docs]) +- Bump islamic-prayer-times to 0.0.5 ([@uchagani] - [#51174]) +- Remove empty tests for ping now that the code in icmplib is used ([@bdraco] - [#51454]) ([ping docs]) +- Ensure ssdp can callback messages that do not have an ST ([@bdraco] - [#51436]) ([ssdp docs]) +- Disable gpmdp integration ([@MartinHjelmare] - [#51509]) ([gpmdp docs]) (breaking-change) +- Bump mcstatus to 6.0.0 ([@MartinHjelmare] - [#51517]) ([minecraft_server docs]) +- Fix mysensors typing ([@MartinHjelmare] - [#51518]) ([mysensors docs]) +- Check initial connect() worked in modbus ([@janiversen] - [#51470]) ([modbus docs]) +- Add fix delay after send/request to allow RS485 adapter to switch in modbus ([@janiversen] - [#51417]) ([modbus docs]) +- Clean mysensors on_unload ([@MartinHjelmare] - [#51521]) ([mysensors docs]) +- Add retries/retry_on_empty configuration parameters to Modbus ([@janiversen] - [#51412]) ([modbus docs]) +- Add color_mode white ([@emontnemery] - [#51411]) ([light docs]) +- Add workaround for missing cleaning time in roomba ([@drinfernoo] - [#51163]) ([roomba docs]) +- Ensure from __future__ import annotations in irobot_base ([@bdraco] - [#51554]) ([roomba docs]) +- Add lightwave state_class and unique_id properties ([@ColinRobbins] - [#51544]) ([lightwave docs]) +- Update pyhomematic to 0.1.73 ([@danielperna84] - [#51551]) ([homematic docs]) +- Replace supported_features property with class attribute in deCONZ light entities ([@Kane610] - [#51558]) ([deconz docs]) +- Cleanup of Toon ([@frenck] - [#51230]) ([toon docs]) +- Allow referencing sensor entities for before/after in time conditions ([@frenck] - [#51444]) +- Bump home-assistant/wheels from 2021.05.4 to 2021.06.0 (@dependabot - [#51569]) +- Add easy converting string timestamps/dates to datetime objects in templates ([@frenck] - [#51576]) +- Clean mysensors gateway type selection ([@MartinHjelmare] - [#51531]) ([mysensors docs]) +- Type mysensors strictly ([@MartinHjelmare] - [#51535]) ([mysensors docs]) +- Bump nad_receiver to version 0.2.0 ([@andreas-amlabs] - [#51381]) ([nad docs]) +- Bump aio_georss_gdacs to 0.5 ([@exxamalte] - [#51577]) ([gdacs docs]) +- Bump meteoalertapi to 0.2.0 ([@rolfberkenbosch] - [#51383]) ([meteoalarm docs]) (breaking-change) +- Fully type switch entity component ([@frenck] - [#51586]) ([switch docs]) +- Add support for color_mode white to demo light ([@emontnemery] - [#51575]) ([demo docs]) +- Move remaining code out of netdisco to eliminate as SSDP dependency ([@bdraco] - [#51588]) ([ssdp docs]) +- Use supported color modes in Axis integration ([@Kane610] - [#51557]) ([axis docs]) +- Correctly support use of Farenheit in Gree Climate component ([@cmroche] - [#50260]) ([gree docs]) +- Bump georss_qld_bushfire_alert_client to 0.5 ([@exxamalte] - [#51596]) ([qld_bushfire docs]) +- Fix kraken I/O and sleep in tests ([@MartinHjelmare] - [#51599]) ([kraken docs]) +- Fix misaligned high/low temperatures in weather card ([@michaeldavie] - [#49826]) ([environment_canada docs]) +- Add Rituals number platform ([@milanmeu] - [#49723]) ([rituals_perfume_genie docs]) +- Detect Sonos reboots and recreate subscriptions ([@jjlawren] - [#51377]) ([sonos docs]) +- Bump aio_geojson_geonetnz_volcano to v0.6 ([@exxamalte] - [#51602]) ([geonetnz_volcano docs]) +- Modern Forms integration initial pass - Fan ([@wonderslug] - [#51317]) ([modern_forms docs]) (new-integration) +- Remove value_template from MQTT_RW_PLATFORM_SCHEMA ([@emontnemery] - [#51590]) ([mqtt docs]) +- Deprecate support for undocumented value_template in MQTT light ([@emontnemery] - [#51589]) ([mqtt docs]) +- Small entity attribute cleanup in AirVisual ([@frenck] - [#51601]) ([airvisual docs]) +- Address late review of nsw fuel station ([@nickw444] - [#51619]) ([nsw_fuel_station docs]) +- Fix mysensors tests typing ([@MartinHjelmare] - [#51621]) ([mysensors docs]) +- Static typing for Zodiac ([@yuvalabou] - [#51622]) ([zodiac docs]) +- Bump sqlalchemy to 1.4.17 ([@bdraco] - [#51593]) ([recorder docs]) ([sql docs]) +- Add support for color_mode white to tasmota light ([@emontnemery] - [#51608]) ([light docs]) ([tasmota docs]) +- Use baseimage 2021.06.0 / Python 3.9 - Alpine 3.13 ([@pvizeli] - [#51628]) (breaking-change) +- Fix mysensors awesomeversion strategy usage ([@MartinHjelmare] - [#51627]) ([mysensors docs]) +- Update Machine support of python 3.9 / Kernel CEC ([@pvizeli] - [#51637]) (breaking-change) +- Bump hatasmota to 0.2.16 ([@emontnemery] - [#51623]) ([tasmota docs]) +- Populate upnp devices from ssdp ([@bdraco] - [#51221]) ([upnp docs]) +- Upgrade wled to 0.5.0 ([@frenck] - [#51632]) ([wled docs]) +- Improve editing of device automations referencing non-added sensors ([@emontnemery] - [#51312]) ([sensor docs]) +- Bump codecov/codecov-action from 1.5.0 to 1.5.2 (@dependabot - [#51652]) +- Emulate color_temp for lights which support color or white ([@emontnemery] - [#51654]) ([light docs]) +- Increase test coverage in Brother integration ([@bieniu] - [#51657]) ([brother docs]) +- Add device trigger support for Philips Hue Wall Switch Module ([@cklagenberg] - [#51574]) ([hue docs]) +- Tweak light.valid_supported_color_modes ([@emontnemery] - [#51659]) ([light docs]) +- Add Ambee integration ([@frenck] - [#51645]) ([ambee docs]) (new-integration) +- Add color mode support to WLED ([@frenck] - [#51648]) ([wled docs]) +- Remove ASUS.gpio / not working with new GCC ([@pvizeli] - [#51662]) +- Convert ecobee pressure to local units ([@rianadon] - [#51379]) ([ecobee docs]) +- Update xknx to version 0.18.5 ([@farmio] - [#51644]) ([knx docs]) +- Static typing for Uptime ([@yuvalabou] - [#51638]) ([uptime docs]) +- Create docker series version tag YYYY.M ([@kmdm] - [#51615]) +- Bump pysonos to 0.0.51 ([@jjlawren] - [#51669]) ([sonos docs]) +- Restructure WLED integration ([@frenck] - [#51667]) ([wled docs]) +- Add 100% test coverage to Ambee integration ([@frenck] - [#51670]) ([ambee docs]) +- Clean up unused Sonos subscriptions ([@jjlawren] - [#51583]) ([sonos docs]) +- Upgrade ambee to 0.3.0 ([@frenck] - [#51676]) ([ambee docs]) +- Correct comment in MQTT fan ([@emontnemery] - [#51682]) ([mqtt docs]) +- Use supported color modes in deCONZ integration ([@Kane610] - [#51656]) ([deconz docs]) +- Clean up unloads ([@tkdrob] - [#51688]) ([modern_forms docs]) ([wallbox docs]) +- Improve editing of device triggers referencing non-added cover ([@emontnemery] - [#51703]) ([cover docs]) +- Improve editing of device triggers referencing non-added binary sensors ([@emontnemery] - [#51700]) ([binary_sensor docs]) +- Add device trigger for IKEA Trådfri Shortcut button to deCONZ ([@Kane610] - [#51680]) ([deconz docs]) +- Add pollen sensors to Ambee ([@frenck] - [#51702]) ([ambee docs]) +- Use attrs instead of properties in Nettigo Air Monitor integration ([@bieniu] - [#51705]) ([nam docs]) +- Increase Ambee update interval to 1 hour ([@frenck] - [#51708]) ([ambee docs]) +- Revert "Set Fahrenheit reporting precision to tenths for Homekit Controller climate entities (#50415)" ([@Jc2k] - [#51698]) ([homekit_controller docs]) (breaking-change) +- Add Supervisor restart add-on helper ([@MartinHjelmare] - [#51717]) ([hassio docs]) +- Rename device trigger base schema to DEVICE_TRIGGER_BASE_SCHEMA ([@emontnemery] - [#51719]) +- Replace properties with attr in Axis integration ([@Kane610] - [#51686]) ([axis docs]) +- Secure not to activate multiple venv in pre_commit hook ([@janiversen] - [#51715]) +- Use attrs instead of properties in Airly integration ([@bieniu] - [#51712]) ([airly docs]) +- Add support for state_class ([@bieniu] - [#51512]) ([brother docs]) +- Static typing for no_ip integration ([@yuvalabou] - [#51694]) ([no_ip docs]) +- Reduce modbus schemas and add delay to fan/light ([@janiversen] - [#51664]) ([modbus docs]) +- Add base schema for triggers ([@emontnemery] - [#51727]) +- Improve editing of device actions referencing non-added HVAC ([@emontnemery] - [#51706]) ([climate docs]) +- Mock WLED in all WLED tests ([@frenck] - [#51724]) ([wled docs]) +- Remove reverse_order (replaced by generic swap) ([@janiversen] - [#51665]) ([modbus docs]) (breaking-change) +- Add 100% test coverage to WLED integration ([@frenck] - [#51743]) ([wled docs]) +- Clean up redudant exceptions from handlers ([@frenck] - [#51741]) +- Bump georss_generic_client to v0.6 ([@exxamalte] - [#51745]) ([geo_rss_events docs]) +- Spelling fixes ([@scop] - [#51642]) +- Use attrs instead of properties in Brother ([@bieniu] - [#51742]) ([brother docs]) +- Use attrs instead of properties in sonarr ([@ctalkington] - [#51737]) ([sonarr docs]) +- Use attrs instead of properties in roku ([@ctalkington] - [#51735]) ([roku docs]) +- Add trigger condition ([@emontnemery] - [#51710]) +- Add Ecobee humidifier device_info and unique_id ([@bjpetit] - [#51504]) ([ecobee docs]) +- WLED WebSocket support - local push updates ([@frenck] - [#51683]) ([wled docs]) +- Tweak device action scaffold, fix typo ([@emontnemery] - [#51751]) ([climate docs]) +- xknx 0.18.6 ([@farmio] - [#51758]) ([knx docs]) +- Refactor zwave_js disconnect client helper ([@MartinHjelmare] - [#51718]) ([zwave_js docs]) +- Bump aio_geojson_nsw_rfs_incidents to v0.4 ([@exxamalte] - [#51770]) ([nsw_rural_fire_service_feed docs]) +- Refactor zwave_js config flow ([@MartinHjelmare] - [#51720]) ([zwave_js docs]) +- Add timedelta option for async_call_later ([@eavanvalkenburg] - [#50164]) +- Allow keeping master light in WLED ([@frenck] - [#51759]) ([wled docs]) +- Add re-authentication support to Ambee ([@frenck] - [#51773]) ([ambee docs]) +- Improve editing of device actions referencing non-added lock ([@emontnemery] - [#51750]) ([lock docs]) +- Improve editing of device actions referencing non-added cover ([@emontnemery] - [#51748]) ([cover docs]) +- Upgrade black to 21.6b0 ([@frenck] - [#51785]) +- Upgrade wled to 0.6.0 ([@frenck] - [#51783]) ([wled docs]) +- Improve editing of device actions referencing non-added alarm ([@emontnemery] - [#51747]) ([alarm_control_panel docs]) +- Improve editing of device triggers referencing non-added alarm ([@emontnemery] - [#51701]) ([alarm_control_panel docs]) +- Mark Ambee as a platinum quality integration ([@frenck] - [#51779]) ([ambee docs]) +- Remove connection classes ([@milanmeu] - [#51801]) ([growatt_server docs]) ([kraken docs]) ([modern_forms docs]) ([synology_dsm docs]) ([system_bridge docs]) +- Fix Roomba strings step_id rename ([@milanmeu] - [#51744]) ([roomba docs]) +- Cleanup switcher_kis - move to consts ([@thecode] - [#51807]) ([switcher_kis docs]) +- Strict types - first part ([@chemelli74] - [#51479]) ([fritz docs]) +- Bump androidtv to 0.0.60 ([@JeffLIrion] - [#51812]) +- Refactor stream to create partial segments ([@uvjustin] - [#51282]) ([stream docs]) +- Catch AsusWRT UnicodeDecodeError in get_nvram call ([@ollo69] - [#51811]) ([asuswrt docs]) +- Set playlist name on playing Sonos media ([@jjlawren] - [#51685]) ([sonos docs]) +- Improve error when HomeKit accessory underlying entity is missing ([@bdraco] - [#51713]) ([homekit docs]) +- Bump up ZHA dependencies ([@Adminiuga] - [#51765]) ([zha docs]) +- Pass metadata when casting an app ([@blawford] - [#51148]) ([cast docs]) +- Rewrite of Yamaha musiccast integration ([@vigonotion] - [#51561]) ([yamaha_musiccast docs]) (breaking-change) +- Do not return an exception in modbus ([@janiversen] - [#51829]) ([modbus docs]) +- Improve editing of device conditions referencing non-added alarm ([@emontnemery] - [#51830]) ([alarm_control_panel docs]) +- Create dataclass to mock entry setup in Broadlink tests ([@felipediel] - [#50134]) ([broadlink docs]) +- Bump georss_ign_sismologia_client to v0.3 ([@exxamalte] - [#51838]) ([ign_sismologia docs]) +- Improve editing of device conditions referencing non-added humidifier ([@emontnemery] - [#51834]) ([humidifier docs]) +- Improve editing of device conditions referencing non-added cover ([@emontnemery] - [#51833]) ([cover docs]) +- Improve editing of device conditions referencing non-added sensor ([@emontnemery] - [#51835]) ([sensor docs]) +- Improve editing of device conditions referencing non-added binary sensor ([@emontnemery] - [#51831]) ([binary_sensor docs]) +- Correct trace path for trigger with custom id ([@emontnemery] - [#51847]) +- Bump aio_geojson_geonetnz_quakes to v0.13 ([@exxamalte] - [#51846]) ([geonetnz_quakes docs]) +- Improve type hints in stream ([@uvjustin] - [#51837]) ([stream docs]) +- Migrate the name for the hassio user ([@ludeeus] - [#51771]) ([hassio docs]) +- Define HumidifierEntity entity attributes as class variables ([@frenck] - [#51841]) ([demo docs]) ([humidifier docs]) +- Define NumberEntity entity attributes as class variables ([@frenck] - [#51842]) ([demo docs]) ([number docs]) +- Create zwave_js node status sensor when the node is added ([@raman325] - [#51850]) ([zwave_js docs]) +- Add warning during playback if Plex token missing ([@jjlawren] - [#51853]) ([plex docs]) +- Add missing languages to Microsoft TTS ([@yllar] - [#51774]) ([microsoft docs]) +- Cleanup of code reviews from initial modern forms ([@wonderslug] - [#51794]) ([modern_forms docs]) +- Add zwave_js ping node service ([@raman325] - [#51435]) ([zwave_js docs]) +- Add zwave_js WS API cmds to get node state and version info ([@raman325] - [#51396]) ([zwave_js docs]) +- Add Xiaomi Miio EU gateway support ([@starkillerOG] - [#47955]) ([xiaomi_miio docs]) +- Update fortios device tracker to support FortiOS 7.0 ([@kimfrellsen] - [#51640]) ([fortios docs]) +- Add selectors to BMW Connected Drive service definitions ([@rikroe] - [#47065]) ([bmw_connected_drive docs]) +- Improve editing of device conditions referencing non-added HVAC ([@emontnemery] - [#51832]) ([climate docs]) +- Require admin for new node status WS API command ([@raman325] - [#51863]) ([zwave_js docs]) +- Enable asyncio debugging from debugpy integration ([@emontnemery] - [#51880]) ([debugpy docs]) +- Additional units for HM-ES-TX-WM with ES-IEC ([@climblinne] - [#50713]) ([homematic docs]) +- Restore state of KNX Switch ([@farmio] - [#51761]) ([knx docs]) +- Don't create unsupported pump sensors ([@dieselrabbit] - [#51828]) ([screenlogic docs]) +- Add services to ezviz integration ([@RenierM26] - [#48984]) ([ezviz docs]) (new-platform) +- Upgrade pytest-cov to 2.12.1 ([@frenck] - [#51886]) +- Upgrade codecov to 2.1.11 ([@frenck] - [#51885]) +- Add current hvac_action to KNX climate ([@farmio] - [#51464]) ([knx docs]) +- Upgrade pillow to 8.2.0 ([@frenck] - [#51897]) +- Add a menu_cursor service to the yamaha component ([@esev] - [#44819]) ([yamaha docs]) +- Mark config flow fields as required ([@milanmeu] - [#51898]) ([flo docs]) ([goalzero docs]) ([mutesync docs]) ([ring docs]) ([risco docs]) ([roon docs]) ([ruckus_unleashed docs]) +- Speed up record stream audio test ([@uvjustin] - [#51901]) ([stream docs]) +- Use entity class vars in Switch demo ([@frenck] - [#51906]) ([demo docs]) +- Fix typo in min/max mired(s) entity class attribute ([@frenck] - [#51921]) ([light docs]) +- Support receiving long-press events from WeMo devices ([@esev] - [#45503]) ([wemo docs]) +- Add swap to climate and change data_count -> count in modbus ([@janiversen] - [#51668]) ([modbus docs]) (breaking-change) +- Clean up light group ([@frenck] - [#51922]) ([group docs]) +- Upgrade mypy to 0.902 ([@frenck] - [#51907]) +- Clean up cover group ([@frenck] - [#51924]) ([group docs]) +- Refactor Sonos alarms and favorites into system-level coordinators ([@jjlawren] - [#51757]) ([sonos docs]) +- Support bitmask as a value ([@raman325] - [#51892]) ([zwave_js docs]) +- Raise bad request when receiving HTTP request from untrusted proxy ([@frenck] - [#51839]) ([http docs]) (breaking-change) +- Support Wolflink reconnection after unexpected failure ([@adamkrol93] - [#47011]) ([wolflink docs]) +- Clean ezviz error handling in services ([@RenierM26] - [#51945]) ([ezviz docs]) +- Bump actions/upload-artifact from 2.2.3 to 2.2.4 (@dependabot - [#51946]) +- Bump plexapi to 4.6.1 ([@jjlawren] - [#51936]) ([plex docs]) +- Adopt new electricity tariffs in pvpc hourly pricing ([@azogue] - [#51789]) ([pvpc_hourly_pricing docs]) (breaking-change) +- Type entry setup/unload for entity components ([@frenck] - [#51912]) +- Define WeatherEntity entity attributes as class variables ([@frenck] - [#51899]) ([weather docs]) +- Define WaterHeaterEntity entity attributes as class variables ([@frenck] - [#51903]) ([demo docs]) ([water_heater docs]) +- Define RemoteEntity entity attributes as class variables ([@frenck] - [#51904]) ([remote docs]) +- Improve editing of device actions referencing non-added humidifier ([@emontnemery] - [#51749]) ([humidifier docs]) +- Add autospec to modbus mock, in order to use getattr ([@janiversen] - [#51813]) ([modbus docs]) +- Ecobee logging cleanup ([@bjpetit] - [#51754]) ([ecobee docs]) +- Improve Sonos Spotify/Tidal support, add service exceptions ([@jjlawren] - [#51871]) ([sonos docs]) +- Define LockEntity entity attributes as class variables ([@frenck] - [#51909]) ([demo docs]) ([lock docs]) +- Add Mutesync dynamic update interval and catch invalid response values ([@bramkragten] - [#50764]) ([mutesync docs]) +- Use test fixture for configuration testing ([@janiversen] - [#51803]) ([modbus docs]) +- Add remote control platform to BraviaTV ([@Drafteed] - [#50845]) ([braviatv docs]) (new-platform) +- Fully type binary_sensor entity component ([@frenck] - [#51957]) +- Fully type lock entity component ([@frenck] - [#51958]) ([lock docs]) +- Adjust zwave_js WS API commands for logging ([@raman325] - [#51096]) ([zwave_js docs]) +- Add deconz support for Lidl Smart Door Bell HG06668 ([@T0mWz] - [#51949]) ([deconz docs]) +- Handle disconnected ecobee thermostat in humidifier and remote sensors ([@bjpetit] - [#51873]) ([ecobee docs]) +- Convert if/elif chains to dicts in modbus ([@janiversen] - [#51962]) ([modbus docs]) +- Add Select entity component platform ([@frenck] - [#51849]) ([demo docs]) ([select docs]) (new-integration) +- Type homeassistant triggers event ([@MartinHjelmare] - [#51979]) ([homeassistant docs]) +- Add device trigger support to Select entity ([@frenck] - [#51987]) ([select docs]) +- Add reproduce state to select entity ([@frenck] - [#51977]) ([select docs]) +- Add significant change support to select entity ([@frenck] - [#51978]) ([select docs]) +- Add device action support to Select entity ([@frenck] - [#51990]) ([select docs]) +- Allow fetching multiple statistics ([@balloob] - [#51996]) ([history docs]) ([recorder docs]) +- Add WS API for listing available statistic ids ([@emontnemery] - [#51984]) ([history docs]) ([recorder docs]) +- Add Select entity support to Google Assistant ([@frenck] - [#51997]) ([google_assistant docs]) +- Add device condition support to Select entity ([@frenck] - [#51992]) ([select docs]) +- Force SimpliSafe to reauthenticate with a password ([@bachya] - [#51528]) ([simplisafe docs]) +- Update xknx to 0.18.7 ([@farmio] - [#52000]) ([knx docs]) +- Fix not awaiting async super method in KNX climate ([@farmio] - [#52005]) ([knx docs]) +- Use entity sources to find related entities in Search ([@bramkragten] - [#51966]) ([search docs]) +- Fix IoT class ([@Oderik] - [#52008]) ([min_max docs]) +- Small WLED cleanups ([@frenck] - [#52014]) ([wled docs]) +- Clean up stream refactor ([@uvjustin] - [#51951]) ([stream docs]) +- Upgrade async_upnp_client to 0.19.0 ([@StevenLooman] - [#52019]) ([dlna_dmr docs]) ([ssdp docs]) ([upnp docs]) +- Remove undo listener variable in sonarr ([@ctalkington] - [#52042]) ([sonarr docs]) +- Remove undo_listener variable in Sony Bravia TV integration ([@bieniu] - [#52033]) ([braviatv docs]) +- Remove `undo_listener` variable in AccuWeather integration ([@bieniu] - [#52032]) ([accuweather docs]) +- Bump adb-shell to 0.3.4 ([@JeffLIrion] - [#52044]) +- Upgrade wled to 0.7.0 ([@frenck] - [#52017]) ([wled docs]) +- Modern Forms light platform ([@wonderslug] - [#51857]) ([modern_forms docs]) (new-platform) +- Improve editing of device automation referring non added select entity ([@emontnemery] - [#52047]) ([alarm_control_panel docs]) ([select docs]) +- Update climate.py ([@MattWestb] - [#52065]) ([zha docs]) +- Fix zwave_js migration logic ([@raman325] - [#52070]) ([zwave_js docs]) +- Move zwave_js migration tests into new module ([@raman325] - [#52075]) ([zwave_js docs]) +- ESPHome rework EsphomeEnumMapper for safe enum mappings ([@OttoWinter] - [#51975]) ([esphome docs]) +- Modern Forms light platform code cleanup ([@wonderslug] - [#52058]) ([modern_forms docs]) +- Static typing for PiHole ([@yuvalabou] - [#51681]) ([pi_hole docs]) +- Add support for color_mode white to MQTT light basic schema ([@emontnemery] - [#51484]) ([light docs]) ([mqtt docs]) +- Adjust Growatt PV units from W to kW ([@muppet3000] - [#52021]) ([growatt_server docs]) (breaking-change) +- Bump Nettigo Air Monitor library ([@bieniu] - [#52085]) ([nam docs]) +- Migrate Switcher entity attributes to sensors ([@thecode] - [#51964]) ([switcher_kis docs]) (breaking-change) (new-platform) +- Improve deCONZ lights supported_color_modes and tests ([@Kane610] - [#51933]) ([deconz docs]) +- Make attestation of supported features easier to read (deCONZ test) ([@Kane610] - [#52096]) ([deconz docs]) +- Use HS color instead of RGB color for Tasmota lights ([@emontnemery] - [#52052]) ([tasmota docs]) +- Handle ConnectionError if proxmoxve host is not reachable ([@maurerle] - [#51970]) ([proxmoxve docs]) +- Get running event loop in debugpy ([@frenck] - [#52091]) ([debugpy docs]) +- Add state class to powerwall ([@balloob] - [#52102]) ([powerwall docs]) +- Add state class to Sense ([@balloob] - [#52104]) ([sense docs]) +- Xiaomi_miio fan percentage based speeds and preset_modes ([@jbouwh] - [#51791]) ([xiaomi_miio docs]) +- Add @jesserockz to ESPHome codeowners ([@jesserockz] - [#52115]) +- Add state class to Huisbaasje ([@frenck] - [#52114]) ([huisbaasje docs]) +- Catch exception for failed webhook drop for netatmo ([@cgtobi] - [#52119]) ([netatmo docs]) +- Add monetary sensor device class ([@emontnemery] - [#52087]) ([sensor docs]) +- Update MQTT number to treat received payload as UTF-8 ([@emontnemery] - [#52121]) ([mqtt docs]) +- Pass the hass object to all MQTT component constructors ([@emontnemery] - [#52124]) ([mqtt docs]) +- Use attrs instead of properties in Bravia TV integration ([@bieniu] - [#52045]) ([braviatv docs]) +- Bump pyatmo version ([@cgtobi] - [#52112]) ([netatmo docs]) +- Warn when receiving message on illegal MQTT discovery topic ([@emontnemery] - [#52106]) ([mqtt docs]) +- Use attrs instead of properties for directv ([@ctalkington] - [#51918]) ([directv docs]) +- Add number entity to KNX ([@farmio] - [#51786]) ([knx docs]) +- Fix ezviz options flow test patch ([@MartinHjelmare] - [#52125]) ([ezviz docs]) +- Add state class to Atome Linky, use class attributes ([@frenck] - [#52107]) ([atome docs]) +- Add state class to Neurio energy ([@frenck] - [#52117]) ([neurio_energy docs]) +- Add state class to JuiceNet ([@frenck] - [#52116]) ([juicenet docs]) +- Add state class to Aurora ABB Solar PV ([@frenck] - [#52108]) ([aurora_abb_powerone docs]) +- Add state class to The Energy Detective TED5000 ([@frenck] - [#52109]) ([ted5000 docs]) +- Add state class to DTE Energy Bridge ([@frenck] - [#52110]) ([dte_energy_bridge docs]) +- Add state class to Eliqonline ([@frenck] - [#52111]) ([eliqonline docs]) +- Add state class to Enphase Envoy ([@frenck] - [#52113]) ([enphase_envoy docs]) +- Share struct validator between sensor and climate ([@janiversen] - [#51935]) ([modbus docs]) +- Use more attr instead of properties in deCONZ integration ([@Kane610] - [#52098]) ([deconz docs]) +- Allow defining state class for template sensors ([@balloob] - [#52130]) ([template docs]) +- Change dynamic segment handling of WLED ([@frenck] - [#52018]) ([wled docs]) +- Bump docker/login-action from 1.9.0 to 1.10.0 (@dependabot - [#52140]) +- Add config flow step user to dsmr ([@RobBie1221] - [#50318]) ([dsmr docs]) +- Add KNX select entity ([@farmio] - [#52026]) ([knx docs]) +- Remove YAML configuration import from Sony Bravia TV ([@bieniu] - [#52141]) ([braviatv docs]) (breaking-change) +- DSMR: Adding myself to the codeowners ([@frenck] - [#52144]) ([dsmr docs]) +- Fix missing azure event hub instance name ([@eavanvalkenburg] - [#52049]) ([azure_event_hub docs]) (breaking-change) +- DSMR: Small cleanup; use entity class attributes ([@frenck] - [#52143]) ([dsmr docs]) +- DSMR: Typing cleanup in init & config flow ([@frenck] - [#52145]) ([dsmr docs]) +- Add zwave_js options flow to reconfigure server ([@MartinHjelmare] - [#51840]) ([zwave_js docs]) +- DSMR: Remove Gas derivative sensor ([@frenck] - [#52147]) ([dsmr docs]) (breaking-change) +- Type frontend strictly ([@MartinHjelmare] - [#52148]) ([frontend docs]) +- Filter MQTT JSON attributes ([@emontnemery] - [#52076]) ([mqtt docs]) +- DSMR: Refactor sensor creation, added typing to sensors ([@frenck] - [#52153]) ([dsmr docs]) +- Second part of Strict types for Fritz ([@chemelli74] - [#52086]) ([fritz docs]) +- Fix Xiaomi Miio missing gateway info ([@starkillerOG] - [#52146]) ([xiaomi_miio docs]) +- Add MQTT select ([@emontnemery] - [#52120]) ([mqtt docs]) +- DSMR: Device/state classes, icons, less common disabled by default ([@frenck] - [#52159]) ([dsmr docs]) +- Add mac address to samsungtv config entry data if missing ([@bdraco] - [#51634]) ([samsungtv docs]) +- Add Color Palette Select entities to WLED ([@frenck] - [#51994]) ([wled docs]) +- DSMR: Complete full strictly typed ([@frenck] - [#52162]) ([dsmr docs]) +- Tibber, correct generate a 0-timestamp ([@Danielhiversen] - [#52165]) ([tibber docs]) +- Toon, correct generate a 0-timestamp ([@Danielhiversen] - [#52167]) ([toon docs]) +- Remove `air_quality` platform from Nettigo Air Monitor integration ([@bieniu] - [#52152]) ([nam docs]) (breaking-change) +- Add preset support to WLED ([@frenck] - [#52170]) ([wled docs]) +- Handle connection being closed in legacy samsungtv ([@bdraco] - [#52137]) ([samsungtv docs]) +- Create a base class for broadlink entities ([@bdraco] - [#52132]) ([broadlink docs]) +- Add support for state_class to AccuWeather integration ([@bieniu] - [#51510]) ([accuweather docs]) +- Simplify WLED segment tracking ([@frenck] - [#52174]) ([wled docs]) +- Clean up input_boolean, removing typing exceptions ([@frenck] - [#52181]) ([input_boolean docs]) +- Fix typo in Nettigo Air Monitor integration ([@bieniu] - [#52182]) ([nam docs]) +- Add day-consumption fixed cost sensor in dsmr_reader ([@depl0y] - [#52178]) ([dsmr_reader docs]) +- DSMR: Add deprecation warning for YAML configuration ([@frenck] - [#52179]) ([dsmr docs]) (breaking-change) +- Add color_mode support to yeelight light ([@emontnemery] - [#51973]) ([yeelight docs]) +- Stream requests to ingress ([@ludeeus] - [#52184]) ([hassio docs]) +- Improve Xiaomi Miio error handling ([@starkillerOG] - [#52009]) ([xiaomi_miio docs]) +- Abort samsungtv config flow for existing hosts when the unique id is set ([@bdraco] - [#52138]) ([samsungtv docs]) +- Avoid drift in recorder purge cut-off ([@PeteBa] - [#52135]) ([recorder docs]) +- Use entity class vars in Broadlink ([@Danielhiversen] - [#52177]) ([broadlink docs]) +- Add retries for tplink discovery ([@appleguru] - [#52015]) ([tplink docs]) +- Address late review of Switcher sensor migration ([@thecode] - [#52186]) ([switcher_kis docs]) +- Fix deprecation warning in discord notifier ([@ludeeus] - [#52197]) ([discord docs]) +- Cleanup KNX integration ([@farmio] - [#52168]) ([knx docs]) +- Correct keyerror exception. ([@janiversen] - [#52150]) ([modbus docs]) +- Clean up strings.json ([@milanmeu] - [#52202]) ([arcam_fmj docs]) ([directv docs]) ([kraken docs]) ([roku docs]) +- Fix habitica regression ([@ASMfreaK] - [#52097]) ([habitica docs]) +- Surepetcare, Use entity class vars and some clean up ([@Danielhiversen] - [#52205]) ([surepetcare docs]) +- Add Forecast Solar integration ([@klaasnicolaas] - [#52158]) ([forecast_solar docs]) (new-integration) +- Upgrade pyrituals 0.0.3 -> 0.0.4 ([@milanmeu] - [#52209]) ([rituals_perfume_genie docs]) +- Tibber power factor ([@Danielhiversen] - [#52223]) ([tibber docs]) +- Upgrade watchdog to 2.1.3 ([@frenck] - [#52224]) ([folder_watcher docs]) +- DSMR: Use entry unload to unsub update listener ([@frenck] - [#52220]) ([dsmr docs]) +- Clean up Surepetcare sensor ([@Danielhiversen] - [#52219]) ([surepetcare docs]) +- Clean up surepetcare binary sensor ([@Danielhiversen] - [#52217]) ([surepetcare docs]) +- Add idle hvac_action to KNX climate ([@farmio] - [#52006]) ([knx docs]) +- Add respond_to_read option to KNX switch ([@farmio] - [#51790]) ([knx docs]) +- Remove Rituals room size number entity ([@milanmeu] - [#52200]) ([rituals_perfume_genie docs]) +- Add state attribute to SmartTub reminders for days remaining ([@mdz] - [#51825]) ([smarttub docs]) +- Update base image to 2021.06.2 ([@ryansun96] - [#52190]) +- Reject requests from the proxy itself ([@elupus] - [#52073]) ([http docs]) (breaking-change) +- Update pyfronius to 0.5.2 ([@nielstron] - [#52216]) ([fronius docs]) +- Make PjLink power toggle more robust ([@shocklateboy92] - [#51821]) ([pjlink docs]) +- Add mysensors sensor platform test foundation ([@MartinHjelmare] - [#51548]) ([mysensors docs]) +- Fix isy994 fan when turn on is not called with a percentage ([@bdraco] - [#49531]) ([isy994 docs]) +- Bulgarian language added in Google Translate TTS ([@hristo-atanasov] - [#51985]) ([google_translate docs]) +- Add service to reset SmartTub reminders ([@mdz] - [#51824]) ([smarttub docs]) +- Implement color_mode support for ozw ([@emontnemery] - [#52063]) ([ozw docs]) (breaking-change) +- Add new climacell sensors ([@raman325] - [#52079]) ([climacell docs]) +- Add forecasts to MetOffice integration ([@avee87] - [#50876]) ([metoffice docs]) +- Refactor wallbox tests ([@hesselonline] - [#51094]) ([wallbox docs]) +- AsusWRT code improvements for sensors and related tests ([@ollo69] - [#51822]) ([asuswrt docs]) +- Add support for 4th fan speed in izone A/C systems ([@SgtBatten] - [#51969]) ([climate docs]) ([izone docs]) +- Allow creating ZHA groups with specific IDs ([@puddly] - [#50781]) ([zha docs]) +- Make Philips TV notify service optional ([@elupus] - [#50691]) ([philips_js docs]) +- Remove undo listener variable in cloudflare ([@ctalkington] - [#52227]) ([cloudflare docs]) +- Fix Fahrenheit to Celsius conversion in Prometheus exporter ([@masto] - [#52212]) ([prometheus docs]) (breaking-change) +- Support dynamic schema validation in device conditions and actions ([@raman325] - [#52007]) ([device_automation docs]) +- Modern forms switch platform ([@wonderslug] - [#52061]) ([modern_forms docs]) (new-platform) +- Remove `air_quality` platform from Airly integration ([@bieniu] - [#52225]) ([airly docs]) (breaking-change) +- Add value_template support to MQTT number ([@emontnemery] - [#52155]) ([mqtt docs]) +- Update cloudflare test helpers ([@ctalkington] - [#52235]) ([cloudflare docs]) +- Add re-authentication support to cloudflare ([@ctalkington] - [#51787]) ([cloudflare docs]) +- Add hvac_action to Daikin AC ([@myhomeiot] - [#52035]) ([daikin docs]) +- Add "auto" HVAC mode to Advantage Air ([@Bre77] - [#51693]) ([advantage_air docs]) +- Change "Not adding entity" log level to debug ([@thecode] - [#52240]) +- Convert openweathermap dewpoint from kelvin to celcius ([@devfaz] - [#51893]) ([openweathermap docs]) +- Suppress duplicate mdns discovery from netdisco ([@bdraco] - [#52099]) ([discovery docs]) +- Fix unique_id generation for AtwZoneSensors ([@vilppuvuorinen] - [#51227]) ([melcloud docs]) +- Convert nmap_tracker to be a config flow ([@bdraco] - [#50429]) ([nmap_tracker docs]) (breaking-change) +- Add support for overriding SMTP recipient(s) in a service call ([@billsq] - [#47611]) ([smtp docs]) +- Fix timezones in Environment Canada hourly forecasts ([@michaeldavie] - [#51917]) ([environment_canada docs]) +- ESPHome Climate add preset, custom preset, custom fan mode ([@OttoWinter] - [#52133]) ([esphome docs]) +- Removal of stale add-on devices on startup ([@ludeeus] - [#52245]) ([hassio docs]) +- Yamaha musiccast grouping-services ([@micha91] - [#51952]) ([yamaha_musiccast docs]) +- Update new effect before calculating color on Philips TV ([@elupus] - [#52072]) ([philips_js docs]) +- Filter MQTT light JSON attributes ([@emontnemery] - [#52242]) ([mqtt docs]) (breaking-change) +- Add reauth config flow to devolo Home Control ([@Shutgun] - [#49697]) ([devolo_home_control docs]) +- Update SMA device info on setup ([@rklomp] - [#51159]) ([sma docs]) +- Bump hatasmota to 0.2.19 ([@emontnemery] - [#52246]) ([tasmota docs]) +- Don't copy result to new list ([@ludeeus] - [#52248]) ([hassio docs]) +- Add config flow for Coinbase ([@TomBrien] - [#45354]) ([coinbase docs]) (breaking-change) +- Merge onvif host/auth step, allow skipping scan ([@xuefer] - [#49660]) ([onvif docs]) +- Use pysma exceptions ([@rklomp] - [#52252]) ([sma docs]) +- Add tests for LCN integration setup ([@alengwenus] - [#48070]) ([lcn docs]) +- Provide correct defaults for CoinBase options flow ([@TomBrien] - [#52255]) ([coinbase docs]) +- Change DiffuserRoomSize number entity to select entity ([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) +- Only load requested coinbase accounts ([@TomBrien] - [#51981]) ([coinbase docs]) (breaking-change) +- Cleanup KNX supported_features for climate, cover and fan ([@farmio] - [#52218]) ([knx docs]) +- Add OAuth 2.0 Bearer Token authentication to send_file for telegram_bot ([@fnoorian] - [#46567]) ([telegram_bot docs]) +- Update Tile unique ID to include username ([@bachya] - [#52175]) ([tile docs]) +- Add AsusWRT load average sensors ([@ollo69] - [#52230]) ([asuswrt docs]) +- Add secondary temperature sensors to homekit_controller ([@Jc2k] - [#52194]) ([homekit_controller docs]) +- change processor_temperature icon ([@Mariusthvdb] - [#52256]) ([systemmonitor docs]) +- Clean up Rituals Perfume Genie integration ([@milanmeu] - [#52266]) ([rituals_perfume_genie docs]) +- Bump zwave_js_server to 0.27.0 ([@raman325] - [#52267]) ([zwave_js docs]) +- Remove bachya as 17track.net codeowner ([@bachya] - [#52262]) +- Tibber, add device class monetary to accumulated cost ([@Danielhiversen] - [#52259]) ([tibber docs]) +- Add fixture to handle mock restore state ([@janiversen] - [#52198]) ([modbus docs]) +- Let climate use base_struct_schema. ([@janiversen] - [#52154]) ([modbus docs]) +- Add state class support to SolarEdge ([@frenck] - [#52271]) ([solaredge docs]) +- Add state class support to SAJ Solar Inverter ([@frenck] - [#52261]) ([saj docs]) +- Small tweaks to Rituals Perfume Genie ([@frenck] - [#52269]) ([rituals_perfume_genie docs]) +- Demo: Sensor improvements ([@frenck] - [#52263]) ([demo docs]) +- Reduce Ring TTL ([@balloob] - [#52277]) ([ring docs]) +- Fix caldav TZ interpretation of all day events ([@franc6] - [#48642]) ([caldav docs]) +- Clean up Onvif steps ([@xuefer] - [#52254]) ([onvif docs]) +- Use attrs instead of properties for ipp ([@ctalkington] - [#52270]) ([ipp docs]) +- Add sensor platform to Modern Forms integration ([@wonderslug] - [#52249]) ([modern_forms docs]) (new-platform) +- Fix bug in detecting RainMachine zone soil type ([@bachya] - [#52273]) ([rainmachine docs]) +- Update RainMachine sprinkler and vegetation types ([@bachya] - [#52274]) ([rainmachine docs]) +- Fix values of RainMachine Freeze Protection and Hot Days binary sensors ([@bachya] - [#52275]) ([rainmachine docs]) +- Filter MQTT alarm JSON attributes ([@emontnemery] - [#52278]) ([mqtt docs]) (breaking-change) +- Filter MQTT climate JSON attributes ([@emontnemery] - [#52280]) ([mqtt docs]) (breaking-change) +- Support setting hvac_mode and temp in same homekit_controller set_temperature service call ([@Jc2k] - [#52195]) ([homekit_controller docs]) +- Filter MQTT lock JSON attributes ([@emontnemery] - [#52285]) ([mqtt docs]) (breaking-change) +- Filter MQTT number JSON attributes ([@emontnemery] - [#52286]) ([mqtt docs]) (breaking-change) +- Filter MQTT fan JSON attributes ([@emontnemery] - [#52283]) ([mqtt docs]) (breaking-change) +- Filter MQTT sensor JSON attributes ([@emontnemery] - [#52289]) ([mqtt docs]) (breaking-change) +- Filter MQTT vacuum JSON attributes ([@emontnemery] - [#52291]) ([mqtt docs]) (breaking-change) (new-platform) +- Filter MQTT switch JSON attributes ([@emontnemery] - [#52290]) ([mqtt docs]) (breaking-change) +- Filter MQTT select JSON attributes ([@emontnemery] - [#52288]) ([mqtt docs]) (breaking-change) +- Demo: Remote improvements ([@frenck] - [#52265]) ([demo docs]) +- Add test to MQTT device tracker ([@emontnemery] - [#52292]) ([mqtt docs]) +- Filter MQTT cover JSON attributes ([@emontnemery] - [#52282]) ([mqtt docs]) (breaking-change) +- Filter MQTT camera JSON attributes ([@emontnemery] - [#52279]) ([mqtt docs]) (breaking-change) +- Normalize energy statistics to kWh ([@emontnemery] - [#52238]) ([sensor docs]) +- Small clean up for Motion Blinds ([@frenck] - [#52281]) ([motion_blinds docs]) +- Add sensor platform to Meteoclimatic integration ([@adrianmo] - [#51467]) ([meteoclimatic docs]) (new-platform) +- Add number entities to ESPHome ([@jesserockz] - [#52241]) ([esphome docs]) +- Compile statistics for power sensors ([@emontnemery] - [#52299]) ([sensor docs]) +- Allow None value return type for Number entity state value ([@frenck] - [#52302]) ([number docs]) ([zwave_js docs]) +- Bump hass-nabucasa to 0.44.0 ([@ludeeus] - [#52303]) ([cloud docs]) +- Disable dependency checks and tests for disabled EE Brightbox integration ([@frenck] - [#52304]) ([ee_brightbox docs]) +- Implement color_mode support for kulersky ([@emontnemery] - [#52080]) ([kulersky docs]) (breaking-change) +- Fix Garmin Connect sensor dependency import ([@frenck] - [#52306]) ([garmin_connect docs]) +- Coinbase code quality improvements from review ([@TomBrien] - [#52307]) ([coinbase docs]) +- Add switch platform to Fritz ([@chemelli74] - [#51610]) ([fritz docs]) (new-platform) +- Skip updating tplink bulb state if the new state not reported by the device ([@rytilahti] - [#52310]) ([tplink docs]) +- Fix Todoist incorrect end date when task has no time ([@Koenkk] - [#52258]) ([todoist docs]) +- Add Melcloud device class and state class ([@Danielhiversen] - [#52276]) ([melcloud docs]) +- ESPHome Migrate to dataclasses ([@OttoWinter] - [#52305]) ([esphome docs]) +- Fix small inconsistencies in RainMachine vegetation and sprinkler types ([@bachya] - [#52313]) ([rainmachine docs]) +- Disable import of disabled eebrightbox in tests ([@frenck] - [#52314]) ([ee_brightbox docs]) +- Stop build wheels for python38 ([@pvizeli] - [#52309]) +- Refactor Tile entity unique ID migration to use helper ([@bachya] - [#52315]) ([tile docs]) +- Upgrade nmap tracker with forked package for compatibility ([@frenck] - [#52300]) ([nmap_tracker docs]) +- Bump enturclient to v0.2.2 ([@hfurubotten] - [#52321]) ([entur_public_transport docs]) +- Fix esphome startup with missing api_version key ([@bdraco] - [#52324]) ([esphome docs]) +- Normalize pressure statistics to Pa ([@emontnemery] - [#52298]) ([sensor docs]) +- ESPHome delete store data when unloading entry ([@OttoWinter] - [#52296]) ([esphome docs]) +- Fix Mill consumption data ([@Danielhiversen] - [#52320]) ([mill docs]) +- Fix point ConnectionTimeout during startup ([@fredrike] - [#52322]) ([point docs]) +- Deprecate IPv6 zeroconf setting in favor of the network integration ([@bdraco] - [#51173]) ([zeroconf docs]) (breaking-change) +- Add quantiles to Statistics integration ([@cgomesu] - [#52189]) ([statistics docs]) +- Create service to enable Continuous Mode on Nuki Opener ([@anaisbetts] - [#51861]) ([nuki docs]) +- Speed up lookup of AirVisual pollutant labels, levels, and units ([@bachya] - [#52327]) ([airvisual docs]) +- Add Modern Forms binary sensor platform ([@wonderslug] - [#52312]) ([modern_forms docs]) (new-platform) +- Fix MusicCast subwoofers ([@vigonotion] - [#52335]) ([yamaha_musiccast docs]) +- Add Freedompro ([@stefano055415] - [#46332]) ([freedompro docs]) (new-integration) +- Add statistics meta data table ([@emontnemery] - [#52331]) ([history docs]) ([recorder docs]) ([sensor docs]) (breaking-change) +- Update frontend to 20210630.0 ([@bramkragten] - [#52336]) ([frontend docs]) +- Normalize temperature statistics to °C ([@emontnemery] - [#52297]) ([recorder docs]) ([sensor docs]) +- review comments. ([@janiversen] - [#52337]) ([modbus docs]) +- Convert units when fetching statistics ([@emontnemery] - [#52338]) ([recorder docs]) +- xknx 0.18.8 ([@farmio] - [#52340]) ([knx docs]) +- Report target unit in statistics meta data ([@emontnemery] - [#52341]) ([history docs]) ([recorder docs]) + +{% enddetails %} + +[#38855]: https://github.com/home-assistant/core/pull/38855 +[#44819]: https://github.com/home-assistant/core/pull/44819 +[#44867]: https://github.com/home-assistant/core/pull/44867 +[#45354]: https://github.com/home-assistant/core/pull/45354 +[#45503]: https://github.com/home-assistant/core/pull/45503 +[#46332]: https://github.com/home-assistant/core/pull/46332 +[#46516]: https://github.com/home-assistant/core/pull/46516 +[#46567]: https://github.com/home-assistant/core/pull/46567 +[#47011]: https://github.com/home-assistant/core/pull/47011 +[#47065]: https://github.com/home-assistant/core/pull/47065 +[#47611]: https://github.com/home-assistant/core/pull/47611 +[#47955]: https://github.com/home-assistant/core/pull/47955 +[#48070]: https://github.com/home-assistant/core/pull/48070 +[#48642]: https://github.com/home-assistant/core/pull/48642 +[#48984]: https://github.com/home-assistant/core/pull/48984 +[#49429]: https://github.com/home-assistant/core/pull/49429 +[#49531]: https://github.com/home-assistant/core/pull/49531 +[#49552]: https://github.com/home-assistant/core/pull/49552 +[#49660]: https://github.com/home-assistant/core/pull/49660 +[#49697]: https://github.com/home-assistant/core/pull/49697 +[#49723]: https://github.com/home-assistant/core/pull/49723 +[#49826]: https://github.com/home-assistant/core/pull/49826 +[#49843]: https://github.com/home-assistant/core/pull/49843 +[#50134]: https://github.com/home-assistant/core/pull/50134 +[#50164]: https://github.com/home-assistant/core/pull/50164 +[#50234]: https://github.com/home-assistant/core/pull/50234 +[#50260]: https://github.com/home-assistant/core/pull/50260 +[#50283]: https://github.com/home-assistant/core/pull/50283 +[#50318]: https://github.com/home-assistant/core/pull/50318 +[#50429]: https://github.com/home-assistant/core/pull/50429 +[#50466]: https://github.com/home-assistant/core/pull/50466 +[#50691]: https://github.com/home-assistant/core/pull/50691 +[#50713]: https://github.com/home-assistant/core/pull/50713 +[#50720]: https://github.com/home-assistant/core/pull/50720 +[#50764]: https://github.com/home-assistant/core/pull/50764 +[#50781]: https://github.com/home-assistant/core/pull/50781 +[#50808]: https://github.com/home-assistant/core/pull/50808 +[#50845]: https://github.com/home-assistant/core/pull/50845 +[#50876]: https://github.com/home-assistant/core/pull/50876 +[#51006]: https://github.com/home-assistant/core/pull/51006 +[#51019]: https://github.com/home-assistant/core/pull/51019 +[#51033]: https://github.com/home-assistant/core/pull/51033 +[#51094]: https://github.com/home-assistant/core/pull/51094 +[#51096]: https://github.com/home-assistant/core/pull/51096 +[#51098]: https://github.com/home-assistant/core/pull/51098 +[#51101]: https://github.com/home-assistant/core/pull/51101 +[#51115]: https://github.com/home-assistant/core/pull/51115 +[#51116]: https://github.com/home-assistant/core/pull/51116 +[#51117]: https://github.com/home-assistant/core/pull/51117 +[#51118]: https://github.com/home-assistant/core/pull/51118 +[#51120]: https://github.com/home-assistant/core/pull/51120 +[#51121]: https://github.com/home-assistant/core/pull/51121 +[#51122]: https://github.com/home-assistant/core/pull/51122 +[#51123]: https://github.com/home-assistant/core/pull/51123 +[#51124]: https://github.com/home-assistant/core/pull/51124 +[#51125]: https://github.com/home-assistant/core/pull/51125 +[#51126]: https://github.com/home-assistant/core/pull/51126 +[#51138]: https://github.com/home-assistant/core/pull/51138 +[#51139]: https://github.com/home-assistant/core/pull/51139 +[#51143]: https://github.com/home-assistant/core/pull/51143 +[#51148]: https://github.com/home-assistant/core/pull/51148 +[#51149]: https://github.com/home-assistant/core/pull/51149 +[#51151]: https://github.com/home-assistant/core/pull/51151 +[#51153]: https://github.com/home-assistant/core/pull/51153 +[#51154]: https://github.com/home-assistant/core/pull/51154 +[#51155]: https://github.com/home-assistant/core/pull/51155 +[#51158]: https://github.com/home-assistant/core/pull/51158 +[#51159]: https://github.com/home-assistant/core/pull/51159 +[#51161]: https://github.com/home-assistant/core/pull/51161 +[#51163]: https://github.com/home-assistant/core/pull/51163 +[#51166]: https://github.com/home-assistant/core/pull/51166 +[#51173]: https://github.com/home-assistant/core/pull/51173 +[#51174]: https://github.com/home-assistant/core/pull/51174 +[#51176]: https://github.com/home-assistant/core/pull/51176 +[#51178]: https://github.com/home-assistant/core/pull/51178 +[#51181]: https://github.com/home-assistant/core/pull/51181 +[#51182]: https://github.com/home-assistant/core/pull/51182 +[#51185]: https://github.com/home-assistant/core/pull/51185 +[#51191]: https://github.com/home-assistant/core/pull/51191 +[#51192]: https://github.com/home-assistant/core/pull/51192 +[#51193]: https://github.com/home-assistant/core/pull/51193 +[#51197]: https://github.com/home-assistant/core/pull/51197 +[#51202]: https://github.com/home-assistant/core/pull/51202 +[#51203]: https://github.com/home-assistant/core/pull/51203 +[#51206]: https://github.com/home-assistant/core/pull/51206 +[#51207]: https://github.com/home-assistant/core/pull/51207 +[#51218]: https://github.com/home-assistant/core/pull/51218 +[#51219]: https://github.com/home-assistant/core/pull/51219 +[#51221]: https://github.com/home-assistant/core/pull/51221 +[#51224]: https://github.com/home-assistant/core/pull/51224 +[#51227]: https://github.com/home-assistant/core/pull/51227 +[#51230]: https://github.com/home-assistant/core/pull/51230 +[#51231]: https://github.com/home-assistant/core/pull/51231 +[#51232]: https://github.com/home-assistant/core/pull/51232 +[#51234]: https://github.com/home-assistant/core/pull/51234 +[#51236]: https://github.com/home-assistant/core/pull/51236 +[#51238]: https://github.com/home-assistant/core/pull/51238 +[#51239]: https://github.com/home-assistant/core/pull/51239 +[#51241]: https://github.com/home-assistant/core/pull/51241 +[#51244]: https://github.com/home-assistant/core/pull/51244 +[#51247]: https://github.com/home-assistant/core/pull/51247 +[#51248]: https://github.com/home-assistant/core/pull/51248 +[#51249]: https://github.com/home-assistant/core/pull/51249 +[#51250]: https://github.com/home-assistant/core/pull/51250 +[#51253]: https://github.com/home-assistant/core/pull/51253 +[#51255]: https://github.com/home-assistant/core/pull/51255 +[#51257]: https://github.com/home-assistant/core/pull/51257 +[#51263]: https://github.com/home-assistant/core/pull/51263 +[#51264]: https://github.com/home-assistant/core/pull/51264 +[#51266]: https://github.com/home-assistant/core/pull/51266 +[#51267]: https://github.com/home-assistant/core/pull/51267 +[#51269]: https://github.com/home-assistant/core/pull/51269 +[#51274]: https://github.com/home-assistant/core/pull/51274 +[#51282]: https://github.com/home-assistant/core/pull/51282 +[#51285]: https://github.com/home-assistant/core/pull/51285 +[#51297]: https://github.com/home-assistant/core/pull/51297 +[#51300]: https://github.com/home-assistant/core/pull/51300 +[#51306]: https://github.com/home-assistant/core/pull/51306 +[#51307]: https://github.com/home-assistant/core/pull/51307 +[#51308]: https://github.com/home-assistant/core/pull/51308 +[#51312]: https://github.com/home-assistant/core/pull/51312 +[#51317]: https://github.com/home-assistant/core/pull/51317 +[#51324]: https://github.com/home-assistant/core/pull/51324 +[#51345]: https://github.com/home-assistant/core/pull/51345 +[#51348]: https://github.com/home-assistant/core/pull/51348 +[#51351]: https://github.com/home-assistant/core/pull/51351 +[#51355]: https://github.com/home-assistant/core/pull/51355 +[#51372]: https://github.com/home-assistant/core/pull/51372 +[#51377]: https://github.com/home-assistant/core/pull/51377 +[#51379]: https://github.com/home-assistant/core/pull/51379 +[#51381]: https://github.com/home-assistant/core/pull/51381 +[#51382]: https://github.com/home-assistant/core/pull/51382 +[#51383]: https://github.com/home-assistant/core/pull/51383 +[#51396]: https://github.com/home-assistant/core/pull/51396 +[#51400]: https://github.com/home-assistant/core/pull/51400 +[#51401]: https://github.com/home-assistant/core/pull/51401 +[#51411]: https://github.com/home-assistant/core/pull/51411 +[#51412]: https://github.com/home-assistant/core/pull/51412 +[#51416]: https://github.com/home-assistant/core/pull/51416 +[#51417]: https://github.com/home-assistant/core/pull/51417 +[#51434]: https://github.com/home-assistant/core/pull/51434 +[#51435]: https://github.com/home-assistant/core/pull/51435 +[#51436]: https://github.com/home-assistant/core/pull/51436 +[#51439]: https://github.com/home-assistant/core/pull/51439 +[#51444]: https://github.com/home-assistant/core/pull/51444 +[#51447]: https://github.com/home-assistant/core/pull/51447 +[#51454]: https://github.com/home-assistant/core/pull/51454 +[#51457]: https://github.com/home-assistant/core/pull/51457 +[#51464]: https://github.com/home-assistant/core/pull/51464 +[#51467]: https://github.com/home-assistant/core/pull/51467 +[#51470]: https://github.com/home-assistant/core/pull/51470 +[#51471]: https://github.com/home-assistant/core/pull/51471 +[#51479]: https://github.com/home-assistant/core/pull/51479 +[#51484]: https://github.com/home-assistant/core/pull/51484 +[#51504]: https://github.com/home-assistant/core/pull/51504 +[#51509]: https://github.com/home-assistant/core/pull/51509 +[#51510]: https://github.com/home-assistant/core/pull/51510 +[#51512]: https://github.com/home-assistant/core/pull/51512 +[#51517]: https://github.com/home-assistant/core/pull/51517 +[#51518]: https://github.com/home-assistant/core/pull/51518 +[#51521]: https://github.com/home-assistant/core/pull/51521 +[#51528]: https://github.com/home-assistant/core/pull/51528 +[#51531]: https://github.com/home-assistant/core/pull/51531 +[#51535]: https://github.com/home-assistant/core/pull/51535 +[#51544]: https://github.com/home-assistant/core/pull/51544 +[#51548]: https://github.com/home-assistant/core/pull/51548 +[#51551]: https://github.com/home-assistant/core/pull/51551 +[#51554]: https://github.com/home-assistant/core/pull/51554 +[#51557]: https://github.com/home-assistant/core/pull/51557 +[#51558]: https://github.com/home-assistant/core/pull/51558 +[#51561]: https://github.com/home-assistant/core/pull/51561 +[#51569]: https://github.com/home-assistant/core/pull/51569 +[#51574]: https://github.com/home-assistant/core/pull/51574 +[#51575]: https://github.com/home-assistant/core/pull/51575 +[#51576]: https://github.com/home-assistant/core/pull/51576 +[#51577]: https://github.com/home-assistant/core/pull/51577 +[#51583]: https://github.com/home-assistant/core/pull/51583 +[#51586]: https://github.com/home-assistant/core/pull/51586 +[#51588]: https://github.com/home-assistant/core/pull/51588 +[#51589]: https://github.com/home-assistant/core/pull/51589 +[#51590]: https://github.com/home-assistant/core/pull/51590 +[#51593]: https://github.com/home-assistant/core/pull/51593 +[#51596]: https://github.com/home-assistant/core/pull/51596 +[#51599]: https://github.com/home-assistant/core/pull/51599 +[#51601]: https://github.com/home-assistant/core/pull/51601 +[#51602]: https://github.com/home-assistant/core/pull/51602 +[#51608]: https://github.com/home-assistant/core/pull/51608 +[#51610]: https://github.com/home-assistant/core/pull/51610 +[#51615]: https://github.com/home-assistant/core/pull/51615 +[#51619]: https://github.com/home-assistant/core/pull/51619 +[#51621]: https://github.com/home-assistant/core/pull/51621 +[#51622]: https://github.com/home-assistant/core/pull/51622 +[#51623]: https://github.com/home-assistant/core/pull/51623 +[#51627]: https://github.com/home-assistant/core/pull/51627 +[#51628]: https://github.com/home-assistant/core/pull/51628 +[#51632]: https://github.com/home-assistant/core/pull/51632 +[#51634]: https://github.com/home-assistant/core/pull/51634 +[#51637]: https://github.com/home-assistant/core/pull/51637 +[#51638]: https://github.com/home-assistant/core/pull/51638 +[#51640]: https://github.com/home-assistant/core/pull/51640 +[#51642]: https://github.com/home-assistant/core/pull/51642 +[#51644]: https://github.com/home-assistant/core/pull/51644 +[#51645]: https://github.com/home-assistant/core/pull/51645 +[#51648]: https://github.com/home-assistant/core/pull/51648 +[#51652]: https://github.com/home-assistant/core/pull/51652 +[#51654]: https://github.com/home-assistant/core/pull/51654 +[#51656]: https://github.com/home-assistant/core/pull/51656 +[#51657]: https://github.com/home-assistant/core/pull/51657 +[#51659]: https://github.com/home-assistant/core/pull/51659 +[#51662]: https://github.com/home-assistant/core/pull/51662 +[#51664]: https://github.com/home-assistant/core/pull/51664 +[#51665]: https://github.com/home-assistant/core/pull/51665 +[#51667]: https://github.com/home-assistant/core/pull/51667 +[#51668]: https://github.com/home-assistant/core/pull/51668 +[#51669]: https://github.com/home-assistant/core/pull/51669 +[#51670]: https://github.com/home-assistant/core/pull/51670 +[#51676]: https://github.com/home-assistant/core/pull/51676 +[#51680]: https://github.com/home-assistant/core/pull/51680 +[#51681]: https://github.com/home-assistant/core/pull/51681 +[#51682]: https://github.com/home-assistant/core/pull/51682 +[#51683]: https://github.com/home-assistant/core/pull/51683 +[#51685]: https://github.com/home-assistant/core/pull/51685 +[#51686]: https://github.com/home-assistant/core/pull/51686 +[#51688]: https://github.com/home-assistant/core/pull/51688 +[#51693]: https://github.com/home-assistant/core/pull/51693 +[#51694]: https://github.com/home-assistant/core/pull/51694 +[#51698]: https://github.com/home-assistant/core/pull/51698 +[#51700]: https://github.com/home-assistant/core/pull/51700 +[#51701]: https://github.com/home-assistant/core/pull/51701 +[#51702]: https://github.com/home-assistant/core/pull/51702 +[#51703]: https://github.com/home-assistant/core/pull/51703 +[#51705]: https://github.com/home-assistant/core/pull/51705 +[#51706]: https://github.com/home-assistant/core/pull/51706 +[#51708]: https://github.com/home-assistant/core/pull/51708 +[#51710]: https://github.com/home-assistant/core/pull/51710 +[#51712]: https://github.com/home-assistant/core/pull/51712 +[#51713]: https://github.com/home-assistant/core/pull/51713 +[#51715]: https://github.com/home-assistant/core/pull/51715 +[#51717]: https://github.com/home-assistant/core/pull/51717 +[#51718]: https://github.com/home-assistant/core/pull/51718 +[#51719]: https://github.com/home-assistant/core/pull/51719 +[#51720]: https://github.com/home-assistant/core/pull/51720 +[#51724]: https://github.com/home-assistant/core/pull/51724 +[#51727]: https://github.com/home-assistant/core/pull/51727 +[#51735]: https://github.com/home-assistant/core/pull/51735 +[#51737]: https://github.com/home-assistant/core/pull/51737 +[#51741]: https://github.com/home-assistant/core/pull/51741 +[#51742]: https://github.com/home-assistant/core/pull/51742 +[#51743]: https://github.com/home-assistant/core/pull/51743 +[#51744]: https://github.com/home-assistant/core/pull/51744 +[#51745]: https://github.com/home-assistant/core/pull/51745 +[#51747]: https://github.com/home-assistant/core/pull/51747 +[#51748]: https://github.com/home-assistant/core/pull/51748 +[#51749]: https://github.com/home-assistant/core/pull/51749 +[#51750]: https://github.com/home-assistant/core/pull/51750 +[#51751]: https://github.com/home-assistant/core/pull/51751 +[#51754]: https://github.com/home-assistant/core/pull/51754 +[#51757]: https://github.com/home-assistant/core/pull/51757 +[#51758]: https://github.com/home-assistant/core/pull/51758 +[#51759]: https://github.com/home-assistant/core/pull/51759 +[#51761]: https://github.com/home-assistant/core/pull/51761 +[#51765]: https://github.com/home-assistant/core/pull/51765 +[#51770]: https://github.com/home-assistant/core/pull/51770 +[#51771]: https://github.com/home-assistant/core/pull/51771 +[#51773]: https://github.com/home-assistant/core/pull/51773 +[#51774]: https://github.com/home-assistant/core/pull/51774 +[#51779]: https://github.com/home-assistant/core/pull/51779 +[#51783]: https://github.com/home-assistant/core/pull/51783 +[#51785]: https://github.com/home-assistant/core/pull/51785 +[#51786]: https://github.com/home-assistant/core/pull/51786 +[#51787]: https://github.com/home-assistant/core/pull/51787 +[#51789]: https://github.com/home-assistant/core/pull/51789 +[#51790]: https://github.com/home-assistant/core/pull/51790 +[#51791]: https://github.com/home-assistant/core/pull/51791 +[#51794]: https://github.com/home-assistant/core/pull/51794 +[#51801]: https://github.com/home-assistant/core/pull/51801 +[#51803]: https://github.com/home-assistant/core/pull/51803 +[#51807]: https://github.com/home-assistant/core/pull/51807 +[#51811]: https://github.com/home-assistant/core/pull/51811 +[#51812]: https://github.com/home-assistant/core/pull/51812 +[#51813]: https://github.com/home-assistant/core/pull/51813 +[#51821]: https://github.com/home-assistant/core/pull/51821 +[#51822]: https://github.com/home-assistant/core/pull/51822 +[#51824]: https://github.com/home-assistant/core/pull/51824 +[#51825]: https://github.com/home-assistant/core/pull/51825 +[#51828]: https://github.com/home-assistant/core/pull/51828 +[#51829]: https://github.com/home-assistant/core/pull/51829 +[#51830]: https://github.com/home-assistant/core/pull/51830 +[#51831]: https://github.com/home-assistant/core/pull/51831 +[#51832]: https://github.com/home-assistant/core/pull/51832 +[#51833]: https://github.com/home-assistant/core/pull/51833 +[#51834]: https://github.com/home-assistant/core/pull/51834 +[#51835]: https://github.com/home-assistant/core/pull/51835 +[#51837]: https://github.com/home-assistant/core/pull/51837 +[#51838]: https://github.com/home-assistant/core/pull/51838 +[#51839]: https://github.com/home-assistant/core/pull/51839 +[#51840]: https://github.com/home-assistant/core/pull/51840 +[#51841]: https://github.com/home-assistant/core/pull/51841 +[#51842]: https://github.com/home-assistant/core/pull/51842 +[#51846]: https://github.com/home-assistant/core/pull/51846 +[#51847]: https://github.com/home-assistant/core/pull/51847 +[#51849]: https://github.com/home-assistant/core/pull/51849 +[#51850]: https://github.com/home-assistant/core/pull/51850 +[#51853]: https://github.com/home-assistant/core/pull/51853 +[#51857]: https://github.com/home-assistant/core/pull/51857 +[#51861]: https://github.com/home-assistant/core/pull/51861 +[#51863]: https://github.com/home-assistant/core/pull/51863 +[#51871]: https://github.com/home-assistant/core/pull/51871 +[#51873]: https://github.com/home-assistant/core/pull/51873 +[#51880]: https://github.com/home-assistant/core/pull/51880 +[#51885]: https://github.com/home-assistant/core/pull/51885 +[#51886]: https://github.com/home-assistant/core/pull/51886 +[#51892]: https://github.com/home-assistant/core/pull/51892 +[#51893]: https://github.com/home-assistant/core/pull/51893 +[#51897]: https://github.com/home-assistant/core/pull/51897 +[#51898]: https://github.com/home-assistant/core/pull/51898 +[#51899]: https://github.com/home-assistant/core/pull/51899 +[#51901]: https://github.com/home-assistant/core/pull/51901 +[#51903]: https://github.com/home-assistant/core/pull/51903 +[#51904]: https://github.com/home-assistant/core/pull/51904 +[#51906]: https://github.com/home-assistant/core/pull/51906 +[#51907]: https://github.com/home-assistant/core/pull/51907 +[#51909]: https://github.com/home-assistant/core/pull/51909 +[#51912]: https://github.com/home-assistant/core/pull/51912 +[#51917]: https://github.com/home-assistant/core/pull/51917 +[#51918]: https://github.com/home-assistant/core/pull/51918 +[#51921]: https://github.com/home-assistant/core/pull/51921 +[#51922]: https://github.com/home-assistant/core/pull/51922 +[#51924]: https://github.com/home-assistant/core/pull/51924 +[#51933]: https://github.com/home-assistant/core/pull/51933 +[#51935]: https://github.com/home-assistant/core/pull/51935 +[#51936]: https://github.com/home-assistant/core/pull/51936 +[#51945]: https://github.com/home-assistant/core/pull/51945 +[#51946]: https://github.com/home-assistant/core/pull/51946 +[#51949]: https://github.com/home-assistant/core/pull/51949 +[#51951]: https://github.com/home-assistant/core/pull/51951 +[#51952]: https://github.com/home-assistant/core/pull/51952 +[#51957]: https://github.com/home-assistant/core/pull/51957 +[#51958]: https://github.com/home-assistant/core/pull/51958 +[#51962]: https://github.com/home-assistant/core/pull/51962 +[#51964]: https://github.com/home-assistant/core/pull/51964 +[#51966]: https://github.com/home-assistant/core/pull/51966 +[#51969]: https://github.com/home-assistant/core/pull/51969 +[#51970]: https://github.com/home-assistant/core/pull/51970 +[#51973]: https://github.com/home-assistant/core/pull/51973 +[#51975]: https://github.com/home-assistant/core/pull/51975 +[#51977]: https://github.com/home-assistant/core/pull/51977 +[#51978]: https://github.com/home-assistant/core/pull/51978 +[#51979]: https://github.com/home-assistant/core/pull/51979 +[#51981]: https://github.com/home-assistant/core/pull/51981 +[#51984]: https://github.com/home-assistant/core/pull/51984 +[#51985]: https://github.com/home-assistant/core/pull/51985 +[#51987]: https://github.com/home-assistant/core/pull/51987 +[#51990]: https://github.com/home-assistant/core/pull/51990 +[#51992]: https://github.com/home-assistant/core/pull/51992 +[#51993]: https://github.com/home-assistant/core/pull/51993 +[#51994]: https://github.com/home-assistant/core/pull/51994 +[#51996]: https://github.com/home-assistant/core/pull/51996 +[#51997]: https://github.com/home-assistant/core/pull/51997 +[#52000]: https://github.com/home-assistant/core/pull/52000 +[#52005]: https://github.com/home-assistant/core/pull/52005 +[#52006]: https://github.com/home-assistant/core/pull/52006 +[#52007]: https://github.com/home-assistant/core/pull/52007 +[#52008]: https://github.com/home-assistant/core/pull/52008 +[#52009]: https://github.com/home-assistant/core/pull/52009 +[#52014]: https://github.com/home-assistant/core/pull/52014 +[#52015]: https://github.com/home-assistant/core/pull/52015 +[#52017]: https://github.com/home-assistant/core/pull/52017 +[#52018]: https://github.com/home-assistant/core/pull/52018 +[#52019]: https://github.com/home-assistant/core/pull/52019 +[#52021]: https://github.com/home-assistant/core/pull/52021 +[#52026]: https://github.com/home-assistant/core/pull/52026 +[#52032]: https://github.com/home-assistant/core/pull/52032 +[#52033]: https://github.com/home-assistant/core/pull/52033 +[#52035]: https://github.com/home-assistant/core/pull/52035 +[#52042]: https://github.com/home-assistant/core/pull/52042 +[#52044]: https://github.com/home-assistant/core/pull/52044 +[#52045]: https://github.com/home-assistant/core/pull/52045 +[#52047]: https://github.com/home-assistant/core/pull/52047 +[#52049]: https://github.com/home-assistant/core/pull/52049 +[#52052]: https://github.com/home-assistant/core/pull/52052 +[#52058]: https://github.com/home-assistant/core/pull/52058 +[#52061]: https://github.com/home-assistant/core/pull/52061 +[#52063]: https://github.com/home-assistant/core/pull/52063 +[#52065]: https://github.com/home-assistant/core/pull/52065 +[#52070]: https://github.com/home-assistant/core/pull/52070 +[#52072]: https://github.com/home-assistant/core/pull/52072 +[#52073]: https://github.com/home-assistant/core/pull/52073 +[#52075]: https://github.com/home-assistant/core/pull/52075 +[#52076]: https://github.com/home-assistant/core/pull/52076 +[#52079]: https://github.com/home-assistant/core/pull/52079 +[#52080]: https://github.com/home-assistant/core/pull/52080 +[#52085]: https://github.com/home-assistant/core/pull/52085 +[#52086]: https://github.com/home-assistant/core/pull/52086 +[#52087]: https://github.com/home-assistant/core/pull/52087 +[#52091]: https://github.com/home-assistant/core/pull/52091 +[#52096]: https://github.com/home-assistant/core/pull/52096 +[#52097]: https://github.com/home-assistant/core/pull/52097 +[#52098]: https://github.com/home-assistant/core/pull/52098 +[#52099]: https://github.com/home-assistant/core/pull/52099 +[#52102]: https://github.com/home-assistant/core/pull/52102 +[#52104]: https://github.com/home-assistant/core/pull/52104 +[#52106]: https://github.com/home-assistant/core/pull/52106 +[#52107]: https://github.com/home-assistant/core/pull/52107 +[#52108]: https://github.com/home-assistant/core/pull/52108 +[#52109]: https://github.com/home-assistant/core/pull/52109 +[#52110]: https://github.com/home-assistant/core/pull/52110 +[#52111]: https://github.com/home-assistant/core/pull/52111 +[#52112]: https://github.com/home-assistant/core/pull/52112 +[#52113]: https://github.com/home-assistant/core/pull/52113 +[#52114]: https://github.com/home-assistant/core/pull/52114 +[#52115]: https://github.com/home-assistant/core/pull/52115 +[#52116]: https://github.com/home-assistant/core/pull/52116 +[#52117]: https://github.com/home-assistant/core/pull/52117 +[#52119]: https://github.com/home-assistant/core/pull/52119 +[#52120]: https://github.com/home-assistant/core/pull/52120 +[#52121]: https://github.com/home-assistant/core/pull/52121 +[#52124]: https://github.com/home-assistant/core/pull/52124 +[#52125]: https://github.com/home-assistant/core/pull/52125 +[#52130]: https://github.com/home-assistant/core/pull/52130 +[#52132]: https://github.com/home-assistant/core/pull/52132 +[#52133]: https://github.com/home-assistant/core/pull/52133 +[#52135]: https://github.com/home-assistant/core/pull/52135 +[#52137]: https://github.com/home-assistant/core/pull/52137 +[#52138]: https://github.com/home-assistant/core/pull/52138 +[#52140]: https://github.com/home-assistant/core/pull/52140 +[#52141]: https://github.com/home-assistant/core/pull/52141 +[#52143]: https://github.com/home-assistant/core/pull/52143 +[#52144]: https://github.com/home-assistant/core/pull/52144 +[#52145]: https://github.com/home-assistant/core/pull/52145 +[#52146]: https://github.com/home-assistant/core/pull/52146 +[#52147]: https://github.com/home-assistant/core/pull/52147 +[#52148]: https://github.com/home-assistant/core/pull/52148 +[#52150]: https://github.com/home-assistant/core/pull/52150 +[#52152]: https://github.com/home-assistant/core/pull/52152 +[#52153]: https://github.com/home-assistant/core/pull/52153 +[#52154]: https://github.com/home-assistant/core/pull/52154 +[#52155]: https://github.com/home-assistant/core/pull/52155 +[#52158]: https://github.com/home-assistant/core/pull/52158 +[#52159]: https://github.com/home-assistant/core/pull/52159 +[#52162]: https://github.com/home-assistant/core/pull/52162 +[#52165]: https://github.com/home-assistant/core/pull/52165 +[#52167]: https://github.com/home-assistant/core/pull/52167 +[#52168]: https://github.com/home-assistant/core/pull/52168 +[#52170]: https://github.com/home-assistant/core/pull/52170 +[#52174]: https://github.com/home-assistant/core/pull/52174 +[#52175]: https://github.com/home-assistant/core/pull/52175 +[#52177]: https://github.com/home-assistant/core/pull/52177 +[#52178]: https://github.com/home-assistant/core/pull/52178 +[#52179]: https://github.com/home-assistant/core/pull/52179 +[#52181]: https://github.com/home-assistant/core/pull/52181 +[#52182]: https://github.com/home-assistant/core/pull/52182 +[#52184]: https://github.com/home-assistant/core/pull/52184 +[#52186]: https://github.com/home-assistant/core/pull/52186 +[#52189]: https://github.com/home-assistant/core/pull/52189 +[#52190]: https://github.com/home-assistant/core/pull/52190 +[#52194]: https://github.com/home-assistant/core/pull/52194 +[#52195]: https://github.com/home-assistant/core/pull/52195 +[#52197]: https://github.com/home-assistant/core/pull/52197 +[#52198]: https://github.com/home-assistant/core/pull/52198 +[#52200]: https://github.com/home-assistant/core/pull/52200 +[#52202]: https://github.com/home-assistant/core/pull/52202 +[#52205]: https://github.com/home-assistant/core/pull/52205 +[#52209]: https://github.com/home-assistant/core/pull/52209 +[#52212]: https://github.com/home-assistant/core/pull/52212 +[#52216]: https://github.com/home-assistant/core/pull/52216 +[#52217]: https://github.com/home-assistant/core/pull/52217 +[#52218]: https://github.com/home-assistant/core/pull/52218 +[#52219]: https://github.com/home-assistant/core/pull/52219 +[#52220]: https://github.com/home-assistant/core/pull/52220 +[#52223]: https://github.com/home-assistant/core/pull/52223 +[#52224]: https://github.com/home-assistant/core/pull/52224 +[#52225]: https://github.com/home-assistant/core/pull/52225 +[#52227]: https://github.com/home-assistant/core/pull/52227 +[#52230]: https://github.com/home-assistant/core/pull/52230 +[#52235]: https://github.com/home-assistant/core/pull/52235 +[#52238]: https://github.com/home-assistant/core/pull/52238 +[#52240]: https://github.com/home-assistant/core/pull/52240 +[#52241]: https://github.com/home-assistant/core/pull/52241 +[#52242]: https://github.com/home-assistant/core/pull/52242 +[#52245]: https://github.com/home-assistant/core/pull/52245 +[#52246]: https://github.com/home-assistant/core/pull/52246 +[#52248]: https://github.com/home-assistant/core/pull/52248 +[#52249]: https://github.com/home-assistant/core/pull/52249 +[#52252]: https://github.com/home-assistant/core/pull/52252 +[#52254]: https://github.com/home-assistant/core/pull/52254 +[#52255]: https://github.com/home-assistant/core/pull/52255 +[#52256]: https://github.com/home-assistant/core/pull/52256 +[#52258]: https://github.com/home-assistant/core/pull/52258 +[#52259]: https://github.com/home-assistant/core/pull/52259 +[#52261]: https://github.com/home-assistant/core/pull/52261 +[#52262]: https://github.com/home-assistant/core/pull/52262 +[#52263]: https://github.com/home-assistant/core/pull/52263 +[#52265]: https://github.com/home-assistant/core/pull/52265 +[#52266]: https://github.com/home-assistant/core/pull/52266 +[#52267]: https://github.com/home-assistant/core/pull/52267 +[#52269]: https://github.com/home-assistant/core/pull/52269 +[#52270]: https://github.com/home-assistant/core/pull/52270 +[#52271]: https://github.com/home-assistant/core/pull/52271 +[#52273]: https://github.com/home-assistant/core/pull/52273 +[#52274]: https://github.com/home-assistant/core/pull/52274 +[#52275]: https://github.com/home-assistant/core/pull/52275 +[#52276]: https://github.com/home-assistant/core/pull/52276 +[#52277]: https://github.com/home-assistant/core/pull/52277 +[#52278]: https://github.com/home-assistant/core/pull/52278 +[#52279]: https://github.com/home-assistant/core/pull/52279 +[#52280]: https://github.com/home-assistant/core/pull/52280 +[#52281]: https://github.com/home-assistant/core/pull/52281 +[#52282]: https://github.com/home-assistant/core/pull/52282 +[#52283]: https://github.com/home-assistant/core/pull/52283 +[#52285]: https://github.com/home-assistant/core/pull/52285 +[#52286]: https://github.com/home-assistant/core/pull/52286 +[#52288]: https://github.com/home-assistant/core/pull/52288 +[#52289]: https://github.com/home-assistant/core/pull/52289 +[#52290]: https://github.com/home-assistant/core/pull/52290 +[#52291]: https://github.com/home-assistant/core/pull/52291 +[#52292]: https://github.com/home-assistant/core/pull/52292 +[#52296]: https://github.com/home-assistant/core/pull/52296 +[#52297]: https://github.com/home-assistant/core/pull/52297 +[#52298]: https://github.com/home-assistant/core/pull/52298 +[#52299]: https://github.com/home-assistant/core/pull/52299 +[#52300]: https://github.com/home-assistant/core/pull/52300 +[#52302]: https://github.com/home-assistant/core/pull/52302 +[#52303]: https://github.com/home-assistant/core/pull/52303 +[#52304]: https://github.com/home-assistant/core/pull/52304 +[#52305]: https://github.com/home-assistant/core/pull/52305 +[#52306]: https://github.com/home-assistant/core/pull/52306 +[#52307]: https://github.com/home-assistant/core/pull/52307 +[#52309]: https://github.com/home-assistant/core/pull/52309 +[#52310]: https://github.com/home-assistant/core/pull/52310 +[#52312]: https://github.com/home-assistant/core/pull/52312 +[#52313]: https://github.com/home-assistant/core/pull/52313 +[#52314]: https://github.com/home-assistant/core/pull/52314 +[#52315]: https://github.com/home-assistant/core/pull/52315 +[#52320]: https://github.com/home-assistant/core/pull/52320 +[#52321]: https://github.com/home-assistant/core/pull/52321 +[#52322]: https://github.com/home-assistant/core/pull/52322 +[#52324]: https://github.com/home-assistant/core/pull/52324 +[#52327]: https://github.com/home-assistant/core/pull/52327 +[#52331]: https://github.com/home-assistant/core/pull/52331 +[#52335]: https://github.com/home-assistant/core/pull/52335 +[#52336]: https://github.com/home-assistant/core/pull/52336 +[#52337]: https://github.com/home-assistant/core/pull/52337 +[#52338]: https://github.com/home-assistant/core/pull/52338 +[#52340]: https://github.com/home-assistant/core/pull/52340 +[#52341]: https://github.com/home-assistant/core/pull/52341 +[@ASMfreaK]: https://github.com/ASMfreaK +[@Adminiuga]: https://github.com/Adminiuga +[@Bre77]: https://github.com/Bre77 +[@ColinRobbins]: https://github.com/ColinRobbins +[@Danielhiversen]: https://github.com/Danielhiversen +[@Drafteed]: https://github.com/Drafteed +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@Koenkk]: https://github.com/Koenkk +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MattWestb]: https://github.com/MattWestb +[@NikoM87]: https://github.com/NikoM87 +[@Noltari]: https://github.com/Noltari +[@Oderik]: https://github.com/Oderik +[@OttoWinter]: https://github.com/OttoWinter +[@PeteBa]: https://github.com/PeteBa +[@RenierM26]: https://github.com/RenierM26 +[@RobBie1221]: https://github.com/RobBie1221 +[@SgtBatten]: https://github.com/SgtBatten +[@Shutgun]: https://github.com/Shutgun +[@StevenLooman]: https://github.com/StevenLooman +[@T0mWz]: https://github.com/T0mWz +[@TomBrien]: https://github.com/TomBrien +[@adamkrol93]: https://github.com/adamkrol93 +[@adrianmo]: https://github.com/adrianmo +[@adrum]: https://github.com/adrum +[@alengwenus]: https://github.com/alengwenus +[@amelchio]: https://github.com/amelchio +[@anaisbetts]: https://github.com/anaisbetts +[@andreas-amlabs]: https://github.com/andreas-amlabs +[@appleguru]: https://github.com/appleguru +[@avee87]: https://github.com/avee87 +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@billsq]: https://github.com/billsq +[@bjpetit]: https://github.com/bjpetit +[@blawford]: https://github.com/blawford +[@bramkragten]: https://github.com/bramkragten +[@cgomesu]: https://github.com/cgomesu +[@cgtobi]: https://github.com/cgtobi +[@chemelli74]: https://github.com/chemelli74 +[@cklagenberg]: https://github.com/cklagenberg +[@climblinne]: https://github.com/climblinne +[@cmroche]: https://github.com/cmroche +[@ctalkington]: https://github.com/ctalkington +[@danielperna84]: https://github.com/danielperna84 +[@danielrheinbay]: https://github.com/danielrheinbay +[@definitio]: https://github.com/definitio +[@depl0y]: https://github.com/depl0y +[@dermotduffy]: https://github.com/dermotduffy +[@devfaz]: https://github.com/devfaz +[@dieselrabbit]: https://github.com/dieselrabbit +[@drinfernoo]: https://github.com/drinfernoo +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@esev]: https://github.com/esev +[@exxamalte]: https://github.com/exxamalte +[@farmio]: https://github.com/farmio +[@felipediel]: https://github.com/felipediel +[@fnoorian]: https://github.com/fnoorian +[@franc6]: https://github.com/franc6 +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@hesselonline]: https://github.com/hesselonline +[@hfurubotten]: https://github.com/hfurubotten +[@hristo-atanasov]: https://github.com/hristo-atanasov +[@janiversen]: https://github.com/janiversen +[@jbouwh]: https://github.com/jbouwh +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@kimfrellsen]: https://github.com/kimfrellsen +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@kmdm]: https://github.com/kmdm +[@ludeeus]: https://github.com/ludeeus +[@masto]: https://github.com/masto +[@maurerle]: https://github.com/maurerle +[@mazzy89]: https://github.com/mazzy89 +[@mdz]: https://github.com/mdz +[@mib1185]: https://github.com/mib1185 +[@micha91]: https://github.com/micha91 +[@michaeldavie]: https://github.com/michaeldavie +[@milanmeu]: https://github.com/milanmeu +[@muppet3000]: https://github.com/muppet3000 +[@myhomeiot]: https://github.com/myhomeiot +[@nickw444]: https://github.com/nickw444 +[@nielstron]: https://github.com/nielstron +[@ollo69]: https://github.com/ollo69 +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rianadon]: https://github.com/rianadon +[@rikroe]: https://github.com/rikroe +[@rklomp]: https://github.com/rklomp +[@rolfberkenbosch]: https://github.com/rolfberkenbosch +[@rsegers]: https://github.com/rsegers +[@ryansun96]: https://github.com/ryansun96 +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@shocklateboy92]: https://github.com/shocklateboy92 +[@starkillerOG]: https://github.com/starkillerOG +[@stefano055415]: https://github.com/stefano055415 +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[@tschamm]: https://github.com/tschamm +[@uchagani]: https://github.com/uchagani +[@uvjustin]: https://github.com/uvjustin +[@vigonotion]: https://github.com/vigonotion +[@vilppuvuorinen]: https://github.com/vilppuvuorinen +[@wonderslug]: https://github.com/wonderslug +[@xuefer]: https://github.com/xuefer +[@yllar]: https://github.com/yllar +[@yury-sannikov]: https://github.com/yury-sannikov +[@yuvalabou]: https://github.com/yuvalabou +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[airly docs]: /integrations/airly/ +[airvisual docs]: /integrations/airvisual/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alexa docs]: /integrations/alexa/ +[ambee docs]: /integrations/ambee/ +[apple_tv docs]: /integrations/apple_tv/ +[arcam_fmj docs]: /integrations/arcam_fmj/ +[asuswrt docs]: /integrations/asuswrt/ +[atome docs]: /integrations/atome/ +[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/ +[auth docs]: /integrations/auth/ +[axis docs]: /integrations/axis/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bosch_shc docs]: /integrations/bosch_shc/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[caldav docs]: /integrations/caldav/ +[cast docs]: /integrations/cast/ +[climacell docs]: /integrations/climacell/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[cloudflare docs]: /integrations/cloudflare/ +[coinbase docs]: /integrations/coinbase/ +[cover docs]: /integrations/cover/ +[daikin docs]: /integrations/daikin/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[device_automation docs]: /integrations/device_automation/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[directv docs]: /integrations/directv/ +[discord docs]: /integrations/discord/ +[discovery docs]: /integrations/discovery/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dnsip docs]: /integrations/dnsip/ +[dsmr docs]: /integrations/dsmr/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[dte_energy_bridge docs]: /integrations/dte_energy_bridge/ +[dunehd docs]: /integrations/dunehd/ +[ecobee docs]: /integrations/ecobee/ +[ee_brightbox docs]: /integrations/ee_brightbox/ +[eliqonline docs]: /integrations/eliqonline/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[entur_public_transport docs]: /integrations/entur_public_transport/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[ezviz docs]: /integrations/ezviz/ +[flo docs]: /integrations/flo/ +[folder_watcher docs]: /integrations/folder_watcher/ +[forecast_solar docs]: /integrations/forecast_solar/ +[fortios docs]: /integrations/fortios/ +[freedompro docs]: /integrations/freedompro/ +[fritz docs]: /integrations/fritz/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[garmin_connect docs]: /integrations/garmin_connect/ +[gdacs docs]: /integrations/gdacs/ +[geo_rss_events docs]: /integrations/geo_rss_events/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[goalzero docs]: /integrations/goalzero/ +[google_assistant docs]: /integrations/google_assistant/ +[google_translate docs]: /integrations/google_translate/ +[gpmdp docs]: /integrations/gpmdp/ +[gree docs]: /integrations/gree/ +[group docs]: /integrations/group/ +[growatt_server docs]: /integrations/growatt_server/ +[gtfs docs]: /integrations/gtfs/ +[habitica docs]: /integrations/habitica/ +[hangouts docs]: /integrations/hangouts/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[heos docs]: /integrations/heos/ +[history docs]: /integrations/history/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[http docs]: /integrations/http/ +[hue docs]: /integrations/hue/ +[huisbaasje docs]: /integrations/huisbaasje/ +[humidifier docs]: /integrations/humidifier/ +[hyperion docs]: /integrations/hyperion/ +[ign_sismologia docs]: /integrations/ign_sismologia/ +[input_boolean docs]: /integrations/input_boolean/ +[ios docs]: /integrations/ios/ +[ipp docs]: /integrations/ipp/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[juicenet docs]: /integrations/juicenet/ +[knx docs]: /integrations/knx/ +[kraken docs]: /integrations/kraken/ +[kulersky docs]: /integrations/kulersky/ +[lacrosse docs]: /integrations/lacrosse/ +[lcn docs]: /integrations/lcn/ +[light docs]: /integrations/light/ +[lightwave docs]: /integrations/lightwave/ +[local_ip docs]: /integrations/local_ip/ +[lock docs]: /integrations/lock/ +[mazda docs]: /integrations/mazda/ +[media_player docs]: /integrations/media_player/ +[melcloud docs]: /integrations/melcloud/ +[meteoalarm docs]: /integrations/meteoalarm/ +[meteoclimatic docs]: /integrations/meteoclimatic/ +[metoffice docs]: /integrations/metoffice/ +[microsoft docs]: /integrations/microsoft/ +[mill docs]: /integrations/mill/ +[min_max docs]: /integrations/min_max/ +[minecraft_server docs]: /integrations/minecraft_server/ +[modbus docs]: /integrations/modbus/ +[modern_forms docs]: /integrations/modern_forms/ +[motion_blinds docs]: /integrations/motion_blinds/ +[mqtt docs]: /integrations/mqtt/ +[mutesync docs]: /integrations/mutesync/ +[mysensors docs]: /integrations/mysensors/ +[nad docs]: /integrations/nad/ +[nam docs]: /integrations/nam/ +[netatmo docs]: /integrations/netatmo/ +[network docs]: /integrations/network/ +[neurio_energy docs]: /integrations/neurio_energy/ +[nmap_tracker docs]: /integrations/nmap_tracker/ +[no_ip docs]: /integrations/no_ip/ +[nsw_fuel_station docs]: /integrations/nsw_fuel_station/ +[nsw_rural_fire_service_feed docs]: /integrations/nsw_rural_fire_service_feed/ +[nuki docs]: /integrations/nuki/ +[number docs]: /integrations/number/ +[onvif docs]: /integrations/onvif/ +[openweathermap docs]: /integrations/openweathermap/ +[ozw docs]: /integrations/ozw/ +[philips_js docs]: /integrations/philips_js/ +[pi_hole docs]: /integrations/pi_hole/ +[ping docs]: /integrations/ping/ +[pjlink docs]: /integrations/pjlink/ +[plex docs]: /integrations/plex/ +[point docs]: /integrations/point/ +[powerwall docs]: /integrations/powerwall/ +[prometheus docs]: /integrations/prometheus/ +[proxmoxve docs]: /integrations/proxmoxve/ +[pvpc_hourly_pricing docs]: /integrations/pvpc_hourly_pricing/ +[qld_bushfire docs]: /integrations/qld_bushfire/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[remote docs]: /integrations/remote/ +[ring docs]: /integrations/ring/ +[risco docs]: /integrations/risco/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[roon docs]: /integrations/roon/ +[ruckus_unleashed docs]: /integrations/ruckus_unleashed/ +[saj docs]: /integrations/saj/ +[samsungtv docs]: /integrations/samsungtv/ +[screenlogic docs]: /integrations/screenlogic/ +[search docs]: /integrations/search/ +[select docs]: /integrations/select/ +[sense docs]: /integrations/sense/ +[sensor docs]: /integrations/sensor/ +[sia docs]: /integrations/sia/ +[simplisafe docs]: /integrations/simplisafe/ +[sma docs]: /integrations/sma/ +[smarttub docs]: /integrations/smarttub/ +[smtp docs]: /integrations/smtp/ +[solaredge docs]: /integrations/solaredge/ +[sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[ssdp docs]: /integrations/ssdp/ +[statistics docs]: /integrations/statistics/ +[stream docs]: /integrations/stream/ +[surepetcare docs]: /integrations/surepetcare/ +[switch docs]: /integrations/switch/ +[switcher_kis docs]: /integrations/switcher_kis/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tasmota docs]: /integrations/tasmota/ +[ted5000 docs]: /integrations/ted5000/ +[telegram_bot docs]: /integrations/telegram_bot/ +[template docs]: /integrations/template/ +[tibber docs]: /integrations/tibber/ +[tile docs]: /integrations/tile/ +[todoist docs]: /integrations/todoist/ +[toon docs]: /integrations/toon/ +[totalconnect docs]: /integrations/totalconnect/ +[tplink docs]: /integrations/tplink/ +[upnp docs]: /integrations/upnp/ +[uptime docs]: /integrations/uptime/ +[verisure docs]: /integrations/verisure/ +[wallbox docs]: /integrations/wallbox/ +[water_heater docs]: /integrations/water_heater/ +[weather docs]: /integrations/weather/ +[wemo docs]: /integrations/wemo/ +[wled docs]: /integrations/wled/ +[wolflink docs]: /integrations/wolflink/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yeelight docs]: /integrations/yeelight/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zodiac docs]: /integrations/zodiac/ +[zwave_js docs]: /integrations/zwave_js/ From 323a0c251ca7b02210f0334920ea70c1ab4c7286 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 30 Jun 2021 17:30:19 +0200 Subject: [PATCH 02/25] Fix broken links to new integrations in beta release notes --- source/_posts/2021-07-07-release-20217.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index be050b97f1a..54773fecc1a 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -237,10 +237,10 @@ Others: We welcome the following new integrations this release: - [Ambee][ambee docs], added by [@frenck] -- [Forecast.Solar], added by [@klaasnicolaas] -- [Freedompro], added by [@stefano055415] +- [Forecast.Solar][forecast_solar docs], added by [@klaasnicolaas] +- [Freedompro][freedompro docs], added by [@stefano055415] - [Modern Forms][modern_forms docs], added by [@wonderslug] -- [Select], added by [@frenck] +- [Select][select docs], added by [@frenck] ## New Platforms From 4c44dd1ca3ba478025a3af5a0ea47125f32bfc06 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 30 Jun 2021 17:42:36 +0200 Subject: [PATCH 03/25] 2021.7 release notes: not -> now --- source/_posts/2021-07-07-release-20217.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 54773fecc1a..225230f9e7c 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -304,7 +304,7 @@ rejected if the request is marked as forwarded. {% details "Python 3.9 / Alpine 3.13" %} -Our Docker images are not based on Alpine 3.13, and run Python 3.9. +Our Docker images are now based on Alpine 3.13, and run Python 3.9. This is mainly interesting if you running custom Docker containers based on our container. From b6d554312d85529d95f70f7f8038770974f58aef Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 30 Jun 2021 17:54:55 +0200 Subject: [PATCH 04/25] 2021.7 release notes: CEC support clarity --- source/_posts/2021-07-07-release-20217.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 225230f9e7c..2a044157658 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -534,8 +534,8 @@ you can use, please look at meteoalarm.org. {% details "CEC Support" %} -our Docker container limited too support CEC drivers that are provided by -the Linux kernel. This applies to the Home Assistant Container, +Our Docker container has limited support for CEC drivers to those provided +by the Linux kernel. This applies to the Home Assistant Container, Home Assistant OS and Home Assistant Supervised installation types. This will cover most CEC drivers out there. From 350420502e0fb65158c1c4294e09516b74cd8a41 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 30 Jun 2021 18:05:26 +0200 Subject: [PATCH 05/25] 2021.7 release notes: KNS -> KNX --- source/_posts/2021-07-07-release-20217.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 2a044157658..423cf6e564d 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -72,7 +72,7 @@ Screenshot of a custom theme supporting both light & dark mode.

--> Some integrations started implementing the first select entities as of this -release. MQTT & KNS made it available for use, WLED uses it to provide +release. MQTT & KNX made it available for use, WLED uses it to provide controls on selecting and activating a user preset, and with Rituals Perfume Genie you can now change the room size for your diffuser. From d0aac4a8abe33f32d93233cd691de8e5fded3040 Mon Sep 17 00:00:00 2001 From: ChaseCares <13863948+ChaseCares@users.noreply.github.com> Date: Wed, 30 Jun 2021 23:03:32 -0700 Subject: [PATCH 06/25] Update climate.mqtt.markdown (#18358) fixed typo --- source/_integrations/climate.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 228a061b090..abb5cc6f07d 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -363,7 +363,7 @@ If a property works in *optimistic mode* (when the corresponding state topic is #### Using Templates -For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topis can be specified as `value_template`. This can be useful if you received payloads are e.g., in JSON format. Since in JSON, a quoted string (e.g., `"foo"`) is just a string, this can also be used for unquoting. +For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topics can be specified as `value_template`. This can be useful if you received payloads are e.g., in JSON format. Since in JSON, a quoted string (e.g., `"foo"`) is just a string, this can also be used for unquoting. Say you receive the operation mode `"auto"` via your `mode_state_topic`, but the mode is actually called just `auto`, here's what you could do: From 0296b08873a17adde77e851871bc3c0639ec4a8e Mon Sep 17 00:00:00 2001 From: Ron Heald Date: Fri, 2 Jul 2021 15:45:11 +1000 Subject: [PATCH 07/25] Update acmeda.markdown (#18360) * Update acmeda.markdown Discuss different hub versions and reference v2 integration * Update source/_integrations/acmeda.markdown Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/acmeda.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_integrations/acmeda.markdown b/source/_integrations/acmeda.markdown index a60f9dcb2f1..d787f59ac66 100644 --- a/source/_integrations/acmeda.markdown +++ b/source/_integrations/acmeda.markdown @@ -15,9 +15,12 @@ ha_platforms: - sensor --- -The Rollease Acmeda Automate integration allows you to control and monitor covers via your Rolelase Acmeda Automate 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. +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 -Devices are represented as a cover for monitoring and control as well as a sensor for monitoring battery condition. {% include integrations/config_flow.md %} From 6d7286653585a827744e018b8e344851c62b0ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20Sep=C3=BAlveda?= Date: Fri, 2 Jul 2021 04:03:37 -0400 Subject: [PATCH 08/25] Adds core.md web interface links (#18367) Co-authored-by: Franck Nijhof --- source/_includes/installation/core.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_includes/installation/core.md b/source/_includes/installation/core.md index a61f904d716..c4fa43e4199 100644 --- a/source/_includes/installation/core.md +++ b/source/_includes/installation/core.md @@ -86,6 +86,8 @@ hass You can now reach your installation via the web interface on `http://homeassistant.local:8123`. +If this address doesn't work you may also try `http://localhost:8123` or `http://X.X.X.X:8123` (replace X.X.X.X with your machines’ IP address). +
When you run the `hass` command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get "site cannot be reached" error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster. From d236086e739d2c0dcf322cca492a054397688d55 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 2 Jul 2021 11:18:59 +0200 Subject: [PATCH 09/25] 2021.7 release notes: Several updates --- .../_posts/2021-07-07-release-20217.markdown | 49 ++++++++++++------ source/images/blog/2021-07/select.png | Bin 0 -> 14285 bytes source/images/blog/2021-07/social.png | Bin 0 -> 130426 bytes 3 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 source/images/blog/2021-07/select.png create mode 100644 source/images/blog/2021-07/social.png diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 423cf6e564d..029406628b6 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -14,7 +14,7 @@ og_image: /images/blog/2021-07/social.png feedback: true --- - + These are the beta release notes for Home Assistant Core 2021.7 (and is thus a work in progress). @@ -48,11 +48,6 @@ Issues introduced in the beta are processed with priority. - [Breaking Changes](#breaking-changes) - [All changes](#all-changes) - - ## New entity: Select This release we welcome the `select` entity to the Home Assistant family. The @@ -66,10 +61,10 @@ This means integrations can now provide provide entities that give a choice. Either in the Lovelace UI, but also via automations using services, and via the Google Assistant. - +

+Screenshot of a select entity, providing a choice from a list of options +Screenshot of a select entity, providing a choice from a list of options. +

Some integrations started implementing the first select entities as of this release. MQTT & KNX made it available for use, WLED uses it to provide @@ -92,9 +87,11 @@ automation: - platform: state id: "normal" entity_id: binary_sensor.gate + state: "on" - platform: state id: "forgotten" entity_id: binary_sensor.gate + state: "on" for: minutes: 10 ... @@ -142,7 +139,7 @@ automation: action: - service: notify.frenck_iphone data: - message: "Close the windows, it is warm outside!" + message: "Close all windows, it is warm outside!" ``` The numeric state conditions supports the same. @@ -154,8 +151,8 @@ added support for that already in a previous release. ## Working with dates in templates If you ever tried to work with dates in templates, you probably know that that -is hard. And honestly, that will never go away, a time and timezones is a -complex little beast. +is hard. And honestly, that will never go away, times, dates and timezones are +a complex little beasts. However, we realized that the hardest part of using date & times with templates, is actually converting the state of a sensor or text to an datetime. This @@ -179,8 +176,8 @@ we recommend to use a specific version tag, however, that means you need to update the version tag each time we release a new patch version of Home Assistant. -As of this release, we also provide a series version tag, that always -points to the latest patch version of that release. +Thanks to [@kmdm], as of this release, we also provide a series version tag +that always points to the latest patch version of that release. ```shell docker pull ghcr.io/home-assistant/home-assistant:2021.7 @@ -246,7 +243,7 @@ We welcome the following new integrations this release: The following integration got support for a new platform: -- [AVM FRITZ!Box Tools][fritz docs] now has switches available, added by [[@chemelli74] +- [AVM FRITZ!Box Tools][fritz docs] now has switches available, added by [@chemelli74] - [Bosch SHC][bosch_shc docs] has now several sensors for their devices, added by [@tschamm] - [Groups][group docs] now support creating Media Player groups, added by [@definitio] - [Hyperion][hyperion docs] can now provide a camera feed with the live image, added by [@dermotduffy] @@ -313,6 +310,11 @@ If you are using Home Assistant Container, Home Assistant OS or the Home Assista Supervised installation method, you will automatically get this update on upgrade and no additional interaction is needed. +Please note, that Alpine 3.13 on an ARM devices running a 32-bits operating +system (armhf/armv7), requires your Docker version to be at least 19.03.9 +(although, we recommend updating to an even higher version). Additionally, +you need to have `libseccomp` 2.42 or newer. + ([@pvizeli] - [#51628]) {% enddetails %} @@ -696,7 +698,7 @@ It's no longer possible to set attributes defined in the the base component via a configured `json_attributes_topic`. For example a light no longer accepts brightness via the `json_attribute_topic`. -This was unintended and undocumented functionality that lead to expected +This was unintended and undocumented functionality that lead to unexpected behavior. This change applies to all supported MQTT platforms. @@ -761,6 +763,19 @@ We have merely listed this to be complete in our breaking changes report. {% enddetails %} +{% details "Recorder" %} + +The underlying library that is used for the database connections, has been +updated. This fixes a bug, that might be a breaking change for you. + +If you use an `@` in your database username or password, you will have to +adjust your database connection string to use `%40` instead. + +Database connection strings are considered URLs, thus special charaters need +to be encoded. `%40` is the URL encoded version of `@`. + +{% enddetails %} + ## All changes {% details "Click to see all changes!" %} diff --git a/source/images/blog/2021-07/select.png b/source/images/blog/2021-07/select.png new file mode 100644 index 0000000000000000000000000000000000000000..223df4b421fdf07a2e484f74385ef8582da81f14 GIT binary patch literal 14285 zcmb`u1yohv_BISiNlP3;S`d&!Hz*}YcO5zoB}hn03y3J)2ue%mA*375k?xXGy1Vn; z;QihI9rqjKd*AmPAA7LRSbNVk=Uj8uv!1o~XH{hxTr3JKBqStUIaw)nB%}v)NJz+j zm?*%Lp+q&{g+QE~l!WFxuI(dN;rCk_mf9{yIMCks8u(pGVP2Pkt!#f=XMS zWqXV1*-|0RP3Vb4WW^n@Rt!Q=HtS08ko=qt6MKgtSE%DPJ8no{Ou;HUsk#&jP>YqO z-KudsB%V>dQ=freeSrk{Fys-;P9NjF#}B(u%K@jwbFKQAZ?MjaWv`#W^D?wK_+P-By^VpxMnOlUg?pX=*IdMAF%1yo}> zH!8eE5=?;pfglNjB9{NT|As^aL6QHt1MiXFLxn&QX#d>*KqAnP0C7RkKldQu{XdHS zL)||r{;K;&5u1oMrL;rZEh4hHP-eGqb-k)RvO3KhzhU4+<~H{Xw$3TbNcf^v#*b3+1PsB3knprAX^Y1qdU8iV3kwxZ7&+r8v_BV zgVe<}p5sY{)zu{I=evC5R!le0y^|CB`6i!IqedxzZil(&-`r;FT!o+1c9?TN{Afz% z26ijDy)A=wc61m_*AEoW5Bi4dXWY0VU>_D7wp?X5?Y0OHS5s44xTV8sFN1R3m1Q9H#f#k~vk7ODo}KGv7G0zB-&tMr zH-vS*Jt;M3=Fp?-3H;^=uea{ISfA5AA=_oZV}p~kqtsK+zLYO$Dz6wJ;?$k1 zH?cpLTdLR1iAVjMtobNgK3=chZ97XQvh4TX-d=^(06q4{eW&H_6fr*|2!_b`hlfNz z^Y-Fj2IIZ(KHEE3?s0Q-tFjquGa1U1j-(W#ze#K1#1R3tM|4JzP*b=ua9TI7vJ6}l zQ+V$OW;UD#Wrk^qhP)Z4d$uKQZSZ~9W1g`v@rd#{SeW0)Tt-zjiVhneAAc<4=*VTb z=v6p{M5mOmDMIo~2=zgxbSS|fp(X8O1^in1_-B))v}AWhorHb4bw+r4ZcS1T@cd}S z&v{ceJLt35N)uwQ-XvJyO{3AQv~d;xpDe!DJ^P3_K_;o6k&#t z5C802={@!_!B7Xaf&4e|u*FWqP+_&5UhVnPf>z`SjW_wthH^&*4>HsC3?)-v^0?RU zsE+RprvCA)Itvqxib>p4-B<=z-XH<{nHGfC=}vqPO7#!B=^w(b8^7y`1Cw~H@a(m% z#rq#!Uha`3e-_iNb9wy(`RnFHDLxtJ`!|6&57p8>d_c`G1)3c$1#kN6vi1_g`ne__ z5q(4e%+wS@tyE&%d;>fypIxqYURCah4I$-F=CPe9+1}U)u`+9f&Nlm{^?RJ{nVR}P zdh*IdG8DwNgqbRoI#zDcLr6rV_LRdR!)B}i1CNq`Vy}9tK&#NPhqu_QGXx3`^SC@I z{&zHnSHojR{Eo>9_|1BId|##}6q+8+;rrxnubH_Qt~4z2t)!7PjQ90T>>hm0TkU#S zoi_X8j~8VCpH)`?e~QQ@1{!t`nM7}UVv zn}?#s@y6JaqGKY^cUyw3pPHkbWC`=c1@wQ;`l-ASx+Gli8`u1kvU;%|-&W7dR>2#} z>7#~*2F-||o~qX)A4`m??F}zLUqpTC3bH2CB?8w}&kvTTt8AHGIKacm$3+qh%7(0o zLE=H6J_$z3a2y&@N*bVIW{Y%rVoa=K8-fBc@C&du^7A4H>w#v*ptuI#D#TNJV1|8O& ztczGLeL4FeC9wv&pndlQ%8(-L8jzKqBZGi#ZEtG@!y~8^)`hxvhVaEYq&I1frsuO{ z@P)W7x{1Tmt>xms);ld@8AkNtW1(5K$pC+*=+xY8ugPReS>mA{o}L9x0WP_-_3nvJ zAo$~-d($}|bn1WdjmFknhh)79Z~Mk>Shv#zb5&>*14V%HTwk6dzWH8Xtl!qFGX^a|@5#XZDhZ>)PMXox`<%R7-lwqP!)9O$mi~UYN(4t z&W$?qOs7Oq=8y26P}0*8)6MbXFCWWBq;Xlbi(2TUDx6%3Fz~4d+0uy(T`@(l=$x7J za$VKwh%;4zCaERwx;d_7g_rrU@>v{WT?BOSg_lT4pm&1P?pI|f1+ANlEGG^yQUP}`IG!-(}^2@bOs-I(dC9&J_2V>SwM0k4sUw@`mz z&l~4n3m7Fsak_{I^5jSkqh}I&x6(^ay!E)e-4h}C=lO~Weoj9nYWA8FLDq92kW)(D zh`?F~TbJ2CO{lJhzFn~O%*kk_FhA#K{=+{i5p^^dP3jeCtO6T+Z`J161234OMOwc?(QB=>_;@CS4MF8%t|_74rqwxh8ki`EY#jL=<#X0YuFr3{6F<|~CnH>ng7 zqSq%ci1wVg{Myb0p0LR8V+$_)ol=#I3aaUC6s3I;w-i!>nQU z4fh}lXYbLs;NA{<3A+I%l!@7D2O7@~jVugW|Y#Yr1`@FZAC(7Y2PNqLGQ9WC4H;!t4&(IH`E*bmO8T$SBG)q(*sPsKy};fH^#J2rgfv2Wf7A0 z3VhDvMY^NyvHgLMbLTMDe$%e1^058d`pBC}DJA0+R%t)0r~lB10lTA)88s+O|HrFO zGU1G^Qhij|#?RfhzPJ@qxvH!34?{%+@mZQ;=| zDiC8S-h-FA0`UR)7f{pdy!tkw{3x1L9lkH(IG+s&*cPM7I)z}*ywQfZlRxu8b|E$H zqYBXvi;bJ9PZa{oUQMO>^dvp3=ZMEg9=p`V2%}hV&9ll}Nba-A2M-lSSD``HzKACW zZML=3V(?;^@}D0uo_k))*z)IOz4=xyfJCb_=#l>L0rm`9X`FwK zDzYH*5Uir&<(bSh4fbo6E$t_E^pE_lek)f=aEHtjlz}=l^FnieJQRVO(wXZa4Zo-Q zR8#kZ7uRP_u9%q{^~ndhpGm_oVfUS|%eJ2QYz|3`A#(*U$vE$5zF~B67k|W!=uvs% zE&U;t3iR zFf2-RX*khuj>vE?8Oczb7tPG1lVc$kvX=66agjK-eHRs^xU_!c5u8H19Yl-Olugst z+Jm8H%;6F(B>yd{@)Zp)hctsCyyVCM3nmQK^3y?filC#T6Lzp?XWkPpI|#<7iHQe+ zqi_5AsjPpHe0)pUl!6>+*jg4k#faJ%l3Cce1cPRlhoKHLW^% z)muvA=XLOV^Tzjv$(|pC1aK2?IUa91rG(%+^oyk$c$3ecjY#j`Or5W)2m$m>co0B5 zxXVG2t--u^oCUz}0FU(86Pa|9Y2+}(p|8OJ*+PL05EuXf^f#dZ&42-X4wScY#NTje~omTd$0KW7~@u^zFA@6y#v4XG_N->Y7z`)1@4Udx7dsnlx!Yr z2N+h)h1fbk3;T-LAKw*7+=S0HUOi+?Q|tJFo8gRyftP$fOEG_i@LxZEwbkwJb*?;ZbD7rWH+>DO{!Ugh|b_gaooo}$TD{&dQj|DZ%jKxBCr758179w#NH>Py& zx^+=qNnwE=7*tzIyCbGepuhH4jkg+^!sn#k)x#Mbf>RpSPi&ROq;7wMN>K>z$z*mi zmYDG?`deg|8A#!n4gc5Wd*%M{3sxY+T3TZ+!c>t6_oFGHBt<-Y{6povLR^Z_beR1u z8peG@b8~aOyu1(y1b}S=TTKKhS4zTPWd#NXdf&b-ii?5MTNh0R0JYvcCG;S&^ABgl z?SP$Kk6Cmbt#;>GCxJ8zx{I`AdAgaN?E^IwKIrRy$J3fxq0@1XR_sgP55DuMX85V1 z)NDwI3mTU$O2qc*<N!)B;Tq^d35-HL}zF zWBaIZv>c#}-0KY+jjX~R2B2i7tHUHhDxguBNn;Fny~|ERkh+*&(-rs*Ij-? z9KlGKcN$t@+#N2$@eHqdDXx7gCf({8>kpoDL@aiiNgPP2Fz0f^Cl~i?X6=`q&Rv8X zv2oi6dAEI=HFO?_qf=r73>Y#3#Stv1{lk$`X2LafRlj)r*i(tJP`fZ2EhMw1L?KHm zVY$!J`L@qd@SEaOj+dSaReDum>}Es&6nT&0uLtEX2~Y!D-+y2U$@HTP<>LR^=RH5L z>=ZA*JWb=-IM)*;EJxRf3gobOgaq7MVMvrcuCw;lU;8m_PzDZ(eP^IT5kv?s#9PE- zbWB{LX*oie63?-S^gdF^f*?v(?0QxSf|bMb!*d3GphKQ}&z<@>f#qWQS9!uC0gw4c z=?f-Y4M%vNrO)sxP5+n=`e@1tUpvfV23m?^QRxGqsCVW44f%73u<_gQozKA+zPSQa zg%%WKGIy8vk}2FE{3#XG;@s*}X4q=I$f0t>!EKNj z26#*d#0-4aHE45_lU2PVhI>}s8|b=o(fH~b)IbEUbNtg5fQH?GFBwCo0EhzjFpKwS z&n0x;(tmye+R3CyW#fprvnOW;2JUc_0?bDgLeifZD1w9TGyJtsB+A2IOJJ(LB;{B( zo5rHMBjZ!;b5L-d%5d*33F}?nfI>>4=s*%C!8Mf+R#^|g+Oy?StL^IfGs;z9UT)=cZ9Hn_0osMS==ffc$cr>^_N=cawx$W`^vy2| zP$<4wvk}||U=|BB^J`#pUirEemOjU0I>x@|7E|RG6_$P7RLpvnYhQmdCyX1to8;&O=F9;gSGZ0+2L?C5fV%e_IVe z8w#4V#G{GrH_?eXhTs&dVnR>xLt*cZ_FlZ+Z5#z+fn2oE87k&`HQ6+9c06I+uFqY$ z8v+}gzc~?5-roq*YVd<}|B#{CHJ!La47Sf&lnyCxAMx^)gSTDuHP zDC^vDNQ2cpChG(iuagNHxyp8vWvz#wQH$0`a!UVzD-@Z}@7{vT0o2c4wGlh11TG+UUCu21K!`oGlz_!ABR!oZ|$&9^#`wp)-b8y#Sn z&b10diiFq=rX%}B^JGHucbhKp5b7Us$R{D$@+7IMYRMlycZx`(CAS(=l=)n`alG16 zW>F=n!6!2zodK(5qPqR66=*tNc|2i4oli`+JGKQYH-nbss5u;}VYMHgavBZ`)BH)kDs~M4GlyiV!hcm*;eRX!nD>6!`r8it z$Nary*oz^LoIV9UK(ZYL2uD(znJQaS%Y2|$0}&AFU{4kGNnQrJ#Cz)`ZVN0Qu3~`5 zrwp!e^gfJD;;f7VR{W{s!wiaig|SR3ZrNhjM?`E4N~t~mB~GjTxCV8B--Mi>dK@e% zCG*w-+&I5i%X{Rl8t-$b5J&g7bdwGk%v)dh?ew^`nW5xO&I3X$?lGbNB#<$vO`5r^WxlR0?~JFv>D#%B<4vA9`W3`J(7T-}+i*Cy)7*C|cq0!5Ru+RQh-2tLO6ZT;BQ zr1XQ*GmRXaIXq{zEnr+}`|$ASjrE2Ku=VrJmd@*B3!;QM;9$KUJoT(Hn5DD2m3v=? zlBxOTqA)&!`bBbJ4U%;tyJ6WinW2|e>{rzaOC^O?oDnNeU`@F1c1|hWeWaq`0&ilh!OsHSLoHcr{;Ir=;s~>UzCCp1b_aFelqVfq40Ma zk!1KG6Lzf@-VJU@3)4y$_YVO^pp^y$H|Qyr2NyS-UeH><%u%aQ``Eh;Dn&)8OUVCO z7`&*}CijtswYzE&yOqF<>NVRp^N*m3Ppd>q^x)1mfUhz5_IB`A`T-76S2E(A{-ZVq z=q{DWFh6zoL!z`!2*Y#Tvw@DD_i=!wX-qnQ4tgjZd$6|zVa2CSNeo z3~D7r9}V3sCmI_yZ8H9yqkS4YJ>c|&GRlg?aI*|x@OeZY+Ku~|-@G+#OgV)M3TJpj zNPkUUo#Z7%V*oYg2*5mwGUzmV&h--4E>}54kT$SG7XieK#LLKBTx1s;@sL=E(1IJg zS11z7r7a0x@Ifiyx^4Rk1rt5TpoWP!ICSiK!ebPgv5z?RI}&#Di_({jPIp1ZlxtX;wdIDf;xlDLDK=i^y$!2+WMUCo0Ix z-cX#I2D$!I7|>GKoVMELMTA^_I(84tykU@I^__T2ELwLU)#gkY6@P$|^y@!(JZPDS71cf9R@$Zg(^&x*^|Vp-Hrymg**LbTLVS zn7%ox@P%zoH_98A zbr=-kK2YcfhnOrKN;b^Jfrm6o^xb4w+jL@Lqa9P=Bmxxlvhn9 zcCr^-BMO4;88~?@b{wyXUL=|>eq;}}NMtsQ1SZoCq#R7xdzGE|x|@->zfFQHBR7)B#t=^lLZQmoA>^<&4Ww6P+$HaZPJM6)#u_ zJkG>Ub|9qX{1J<1RW%r=QkP9bHrB;@GIXlenuOu31P>n)e9T7ql&YUOSQb!+D` z6&P66urrw41#2zTV2p?OR>ACf5a>yN#iwld4Y<^9!GIn!5BHf>PwaA9& z6Jb)~RrUPnejQx^nw99W;?quj8jtIzgk<5t|Mk`hI+5Xkf4@WpR`&7JgSE2>#v)&o zoThdXTDlEQf~oJ>fvf3*wUeEvWdjRFraQ!|r}&oB2EN+7_34zJ_q>8XJizEL!9an1 z&n@`FQSLLQ!~XIHcfXC{04s2fUwSwn`&>&*Wsin};u+gts-nde{Fkf%vfon$|H=*= zRk`==F8dwhU=4@?eri1!gxnp`xRd@%5rm`tWk!JCJ03(F>JKcY@1)aVHg}xIe<=W@ z|F`b`WABbb0mQX&fr53*GyipI%>kN{mS(j~EDn_rqhK{o>QZ+FJS@kdrlu|_DKY3q z2}irODe8?=Oz2I#iuaT$0{n@LjI6G%4h{|$5D);E#fC_DH*c3>mwA_WejV&id(e#c z=uhccfZ4vjzBc&9=74c$_^IrQY>u3z{8NRMP(Ta!CZhkexVU(1Y%DuFyR)-1XruM& z>S|_YW@~G!x3_n6R5PDs>1yEFPraWZKkFdx=ro>GJRxFm{yw$MUd9V*HXlDeb{&UL zO-;Q%{=FHyxVV^=mDSkTczk@U&ieB_O)IJ@iev~JK0?YZ!Y#oqgPH)}kg!~y^C;P| z^gud2J*^dTa(7ScWAylFaFQ6OC((af6i^gY^r@=1zU~c zarGdi#r>pT915ciS=?2RFDSsurngXF7Dvg)kPT9mdQU6vpo+qX@<>iPnh==)sqtma zWkq|86DVqiRApKv7W$T2_!p zMGveVljFB0&I=(Vms-izUUF&Yj%Tj2caWXF2X6Y48$fZv%BsqgPX_ia=yg`6d#^Hr;a2~ z!}aTDDZ=44*zRd_R)N zk?s+eWJq;L6iUG}G%OS~O?A~Ec`X{+_s{6XA3c&lLYAP(ymS_rp5Yl0L0qEb9@ExO zS)KIGWi(f%Rw>H?XLH3&&rdaO7NZ8@`075+6%dYR#vIl2n6tf)1a*K)aGE6BQM88tv14 zC{HfZg8nY$%NGK|3a4(Io$c*q7CHETx)T$4xhm$5Lm8!{j2kvKJgm6Naq+0Otyj(@I|lY8 z^C=V4S5xp%`pJn~V6!P$EIeaCN8-TcN~LNuDpp8H$X@~?W3F7M8os2HvLs$Rdngh| zt}s48V%QPJsO3@Ydu`0gn-WGaQ5v&X7=q0D^Bp=A4Y-0NGX_;m!L5&7-M;-A=inLN z+bdI~SI@U70>82JIXmy_nC3sPvyiLdjIBZt(&BH?tEt4Db6Sh{;#raZa7Z+4e zg+{joi$a_LSfA^hwK_w_mf&%AjAbff^b4&A*czWvma)#;k9J~4Dw{aJ zmQu?j@`}{;H1>LvX6ELE34G6qj|g>QTYdjCnv}0 zW?x`)$*@I&c~R>RUc$x2t6r^x$UQDLM#0>Sm#~tkQU!@@{M%LWc2U0q}szdo~H2DKt6#FN;mMZ9$hZU z<8UR-I$sPTGaV$wUnQv=0W&q8ibNx@z-hjmd*!~)x<6a)nE--;dyEI0ZY&1yIEg=@ z2;!wJqh&;JVyt5!OCTlFMxoG)tCtzljv`A^pkxI!I9Ec=+>veF1+tp(ujWNs2fPFT z^nx-7DP75e*#m$K^mm&n98Gl=Zq{gY>e+ZnN_U5&{^B>_r1ITf)ZfG%R0H;+?h+K( z|4Q7Wv-gmRRb9wD6oZ?nLtDMV|r07;} z=v_2sLn1G2DScPy)X#96>S?+UmKEpK;e6DQp@xNH<>1hG-n4-6Mq(Wi4wrkZFCQ;esGhNvODeI$LZE{NU4c~ zdbaIhL@d4P5khXO3mTt0Ra!lK?rOLw$Br5BI(ZJyLbq-F^t!GDVmF;|;cEDnGRq^u zVqtxlH>mkF#jwwO?V~GAlUEswf|J%{AH`I{e|!VgYqTP1zL`dsrt>s2F_(FsYgSgW z>5Gt8h7hBP%3KyjEUsOO+K35woV|=;cxzZ)P;mPNW)6=bSC9n$EPIknKTMr5&uM!ath#PhNEoJ)j5Au)u$t2RP+mF7k)!{7%H}Y67FGseWg+AKnK$b$0 zr6-gIe-bB*{$N5ERBrmDJK>FasM&FKSwhh}meUcRjU(vCDdT~P8Xv3v^FD8@os|)x z0ZIU@Gcq!Qfk9J94i_vYCUyW|QE||6;cs3Mk;3-SQ0(PT{;6qc@w941dJqWGZX9JD zaI`TX%-UaeH0r!Miz{|ls+)%YPwaS{BFQM&6H^x# zGzli!6=tEEU;(EfCpQhZyE;DB>Z{r%+gx9lvmMLJd-gfjB;BNFcv#)j>N%Pki9Y}@ z(6nHovsjI2;Y3AnaVF9P+C$FN2&h0xUf*6dF(OL`?>jfXL9U!nFrs;ncnBU z!04)~u4YYA&cuuf&ORrrACnE;*s#IV(bg9HAfr{eC^uGq)d5K$2SRk`jCv5d0jBe? zdsxt+p)I=bhYu{A=aO3^+eS^sj1b&g9E__Y!=+(z*%R_TsL=jSA^!nwvy6P z1RU-nbG@;+_=F6bA;kQ}Zc7W&WXGo2?8r!a!r;|agRif5Dukbp@2#b^ z_1f|>qi4i=s{6mIC|?NE$ecT&`#Gj@L(EG#cpF}+x$wv6EOi2nB5v|fJJk+#Ta^W5 zA-OdSm>heacXE7w7@wdZGv)&V-S1etVkf1e1mlJ8c#XDpExnvlI#C+lr z0~@tooL7WrYJcZbddbMMeRy+2y&}sEx|YyQ(bmy%{dkiyvy6d(LAg+67B2HF9=5;) z$>Ee`Ax=0XXjl8gRKw)HBs>P@(tQSvPfT?Fh{xgzCNC?~zrNLN_|Vw+g1qO9l3M^Z zS3PsY*INDt3(gJIwFLK+_d?3GmO~QAt)(%M6)9e&tK4=#0G#FI9H@$Ho*&j}JP}>{ zl>(o*EvdU(zN$ASENHFuZB9wa&i;P1cd~sQaV&AAsr194EvUQ~CrG38=CY8}B!3dF z?Mk-bEP1`LwuXryao`9$nVz0D1HYKv-eza zcM1;`vVZkTyFh{=pxNL7WW_cg-dL#vD&9H2gc=mp@w|zY!CHQ37Ukb*irpRe{ zVrb@N3+kT2W4gP$D`}M?UrH!vgQa{FR8Ym%{Y>rcmFfBq=PJihJz&Z9&u%Xr%>P|s zXeli!W++%Z7pcl&LH73cn#`Gr!L0_$`I_*|$v|=g3r==4o!6hNV_*#O+F|dIB0FB_ z>+2s8Wa0lrcX_+h)ZCob1Br`c#)DbylP4)6D~VQdzm@^I%c9Ce$rqyiy}jTR9zlQF zkESLWEG*K7wgQ~#h;zs->H1@i*7L2XpBLsOs(A}LeJFK{J|kMI%=?$Yqys`Y&sO~W zcH?`k{lB2M$sW=vjAG{qju~}9EQ$)kfFX(8mQ+QLfs|q6+JUkGsj_=Pa8O5Wed`bL z35yYWnm~6_QN2mR1xo}?56b!L5V+7c@`Kdr^4Eu?m}{HU{ZyNjglHyYO|K^^k4jAW zu&N|262yp~ikMM7JPGZ3168>B*?VZv?!M6XN7ns@0_*Qotpd#I03rbJ!g2oJ***-h zIAndas{*=Xf5f4#|25+R)9*e1b3eh~O}}?!(ElygsJdgA{tKDR24nG#2M_%}k;cEF zfVhV>0J#N=CN?isB~H>b2Klug0;Lee`v+^pmr5Vhs!zCTX;n{ei$0H9wz?HU6T%jH zM6t=o3;NBZn>&(Uve{=@F}+w;-JxGN2SS-2jRJa6y$G8z^+$ zML0>(_lU}TRo9C@?Oqi}QwI>MlJZ}Ix{`wY0tJmdqN zxo=Ss!Z);uGCE#B!^Ryp8&%{hO86IE61@Nk|G2=x15A@`dj zs&68UbEJ34gQXc6)l`Efpk~r>9vJ-Vt1cj9|L32J{l9$)_W$Vvw*Rz#Yxn=lH*xQq ZAJuXN`!(-l03UrJ$w@0ql}MTd{4Y(Zr^EmN literal 0 HcmV?d00001 diff --git a/source/images/blog/2021-07/social.png b/source/images/blog/2021-07/social.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa21147066933ba9529fd9682b03609080e5c9d GIT binary patch literal 130426 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 Date: Fri, 2 Jul 2021 16:45:02 +0200 Subject: [PATCH 10/25] Add Smappee Connect series (#18370) --- source/_integrations/smappee.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/smappee.markdown b/source/_integrations/smappee.markdown index b612bb39fb6..85d44ac4a1e 100644 --- a/source/_integrations/smappee.markdown +++ b/source/_integrations/smappee.markdown @@ -78,11 +78,11 @@ total consumption during the current hour, total consumption during the last 5 m and the always-on (slumber) consumption from today. In case of solar production, entities for the active power production, today's total solar production and the solar production during the current hour are added as well. -Smappee Pro, Plus and Genius devices will create current active powers for each configured load (submeter). +Smappee Pro, Plus, Genius and Connect devices will create current active powers for each configured load (submeter). In case a Smappee Gas and/or Water meter is installed as well, an entity showing today's consumption is provided. -Additionally, Smappee Genius devices will also provide entities for the line voltages and phase voltages (for each phase). +Additionally, Smappee, Genius and Connect devices will also provide entities for the line voltages and phase voltages (for each phase). ### Switch From 07300f65650e66e599b86c5a36ccb4d622fbdb5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jul 2021 08:53:59 +0200 Subject: [PATCH 11/25] Bump addressable from 2.7.0 to 2.8.0 (#18391) Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 10155b0de21..23223f14783 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) + addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) chunky_png (1.4.0) colorator (1.1.0) From 909bf1b47ce235b9fd2a2db663640a74971df5a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20L=C3=B6vdahl?= Date: Mon, 5 Jul 2021 10:20:39 +0300 Subject: [PATCH 12/25] Fix two HVAC mode typos (#18389) --- source/_integrations/knx.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 3e38c14bd3e..a10b777a1b3 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -569,8 +569,8 @@ The following values are valid for the Home Assistant [Climate](/integrations/cl - `Off` (maps internally to `HVAC_MODE_OFF` within Home Assistant) - `Auto` (maps internally to `HVAC_MODE_AUTO` within Home Assistant) -- `Heat` (maps internally to `HVAC_MDOE_HEAT` within Home Assistant) -- `Cool` (maps internally to `HVAC_MDOE_COOL` within Home Assistant) +- `Heat` (maps internally to `HVAC_MODE_HEAT` within Home Assistant) +- `Cool` (maps internally to `HVAC_MODE_COOL` within Home Assistant) - `Fan only` (maps internally to `HVAC_MODE_FAN_ONLY` within Home Assistant) - `Dry` (maps internally to `HVAC_MODE_DRY` within Home Assistant) From c3027f25620910b2de7fc8cfa870078ecd09932a Mon Sep 17 00:00:00 2001 From: Jason Swails Date: Mon, 5 Jul 2021 04:48:50 -0400 Subject: [PATCH 13/25] Fix typo in documentation (#18381) --- source/_integrations/alexa.smart_home.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 11ebf323301..921b52cf036 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -79,7 +79,7 @@ Amazon also provided a [step-by-step guide](https://developer.amazon.com/docs/sm
-OK, let's go. You first need to sign in to your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tire benefit. You don't need worry the cost if your account already pass the first 12 months, AWS provides up to 1 million Lambda request, 1GB outbound data and all inbound data for free, every month, all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. +OK, let's go. You first need to sign in to your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tier benefit. You don't need worry the cost if your account already pass the first 12 months, AWS provides up to 1 million Lambda request, 1GB outbound data and all inbound data for free, every month, all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. ### Create an IAM Role for Lambda From 27832b0adec7a72ccea888840656e0594de233ca Mon Sep 17 00:00:00 2001 From: drfinn15 <81082169+drfinn15@users.noreply.github.com> Date: Mon, 5 Jul 2021 11:13:02 +0200 Subject: [PATCH 14/25] Typo in automation.turn_off part (#18378) Changed "on" to "off", because the service automation.turn_off turns automations off, not on. --- source/_docs/automation/services.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/services.markdown b/source/_docs/automation/services.markdown index 40e9ceaf90d..74e3f923de8 100644 --- a/source/_docs/automation/services.markdown +++ b/source/_docs/automation/services.markdown @@ -19,7 +19,7 @@ This service disables the automation's triggers, and optionally stops any curren Service data attribute | Optional | Description -|-|- -`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted. +`entity_id` | no | Entity ID of automation to turn off. Can be a list. `none` or `all` are also accepted. `stop_actions` | yes | Stop any currently active actions (defaults to true). ## Service {% my developer_call_service service="automation.toggle" %} From dca907aca0d1efb44f197ab03b706eac45e6e002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20S=C3=A1nchez=20Villaf=C3=A1n?= Date: Mon, 5 Jul 2021 04:24:15 -0500 Subject: [PATCH 15/25] Update API Key cURL to reflect correct URL (#18376) --- source/_integrations/avion.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index 9f005d3b920..7dc66f506a1 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -19,7 +19,7 @@ If you want to add your devices manually (like in the example below) then you ne ```bash $ curl -X POST -H "Content-Type: application/json" \ -d '{"email": "fakename@example.com", "password": "password"}' \ - https://admin.avi-on.com/api/sessions | jq + https://api.avi-on.com/sessions | jq ``` with the email and password fields replaced with those used when registering the device via the mobile app. The pass phrase field of the output should be used as the API key in the configuration. From b7bb1593cc12a217737ab181a0780b2ee14440de Mon Sep 17 00:00:00 2001 From: pkininja Date: Tue, 6 Jul 2021 07:40:56 -0400 Subject: [PATCH 16/25] Corrected Synology Docker update instruction (#18401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The procedure for updating Home Assistant on Synology Docker has changed. Synology Docker 20.10.3-0554 (June 2021 update) changed the relevant Action menu item from "Clear" to "Reset". Old Documentation: Right-click on it and select “Action”->“Clear” Proposed New Documentation: Right-click on it and select “Action”->“Reset” Found solution here: https://www.reddit.com/r/synology/comments/ocwj2e/docker_action_clear_now_action_reset/ --- source/_includes/installation/container/alternative.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_includes/installation/container/alternative.md b/source/_includes/installation/container/alternative.md index 1c64f54da5f..549f72836b4 100644 --- a/source/_includes/installation/container/alternative.md +++ b/source/_includes/installation/container/alternative.md @@ -54,7 +54,7 @@ Remark: to update your Home Assistant on your Docker within Synology NAS, you ju - Wait until the system-message/-notification comes up, that the download is finished (there is no progress bar) - Move to "Container"-section - Stop your container if it's running -- Right-click on it and select "Action"->"Clear". You won't lose any data, as all files are stored in your configuration-directory +- Right-click on it and select "Action"->"Reset". You won't lose any data, as all files are stored in your configuration-directory - Start the container again - it will then boot up with the new Home Assistant image Remark: to restart your Home Assistant within Synology NAS, you just have to do the following: @@ -136,4 +136,4 @@ That will tell Home Assistant where to look for our Z-Wave radio. ```yaml device_tracker: - platform: bluetooth_tracker -``` \ No newline at end of file +``` From efc64669148dac8a6608316cdd87cedbd2dce1c5 Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Tue, 6 Jul 2021 17:36:13 +0200 Subject: [PATCH 17/25] Add Rituals breaking change and number platform to release notes (#18409) --- source/_posts/2021-07-07-release-20217.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 029406628b6..c4e68026776 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -250,7 +250,7 @@ The following integration got support for a new platform: - [KNX][knx docs] added support for number and the new select entities, added by [@farmio] - [Meteoclimatic][meteoclimatic docs] now provides sensors with weather information, added by [@adrianmo] - [MQTT][mqtt docs] got support for the new select entities, added by [@emontnemery] -- [Rituals Perfume Genie][rituals_perfume_genie docs] added a select entity for room size, added by [@milanmeu] +- [Rituals Perfume Genie][rituals_perfume_genie docs] added a number and select entity to adjust your diffuser, added by [@milanmeu] - [SIA Alarm Systems][sia docs] now provides various binary sensors, added by [@eavanvalkenburg] - [Sony Bravia TV][braviatv docs] now offers a remote entity, added by [@Drafteed] - [Switcher][switcher_kis docs] now provides sensors, added by [@thecode] @@ -776,6 +776,13 @@ to be encoded. `%40` is the URL encoded version of `@`. {% enddetails %} +{% details "Rituals Perfume Genie" %} + +The switch extra state attributes `fan_speed` and `room_size` will be removed in the next release. +As of this release, both attributes are available as entities, making it possible to change the value with Home Assistant. + +{% enddetails %} + ## All changes {% details "Click to see all changes!" %} From a56e917892b6f1e87809e5a514eb1f8087d2e4b2 Mon Sep 17 00:00:00 2001 From: tomlut <10679300+tomlut@users.noreply.github.com> Date: Wed, 7 Jul 2021 01:37:56 +1000 Subject: [PATCH 18/25] Update TH-P60ST50A supported model note (#18408) When adding this model to supported models a while ago I did not realise it was HDMI-CEC from my Kodi box that was turning on the TV. The integration can not turn on the TV as there is no network interface when off. --- source/_integrations/panasonic_viera.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown index e9e545a2b5b..aa4ce2b22f1 100644 --- a/source/_integrations/panasonic_viera.markdown +++ b/source/_integrations/panasonic_viera.markdown @@ -127,7 +127,7 @@ The list with all known valid keys can be found [here](https://github.com/floria - TC-P60ST50 (can't power on) - TC-P65VT30 - TH-32ES500 -- TH-P60ST50A +- TH-P60ST50A (can't power on) - TX-32AS520E - TX-32DSX609 - TX-40CXE720 From 25e34eea3c914a13f81552b1d74ee965ca22e41b Mon Sep 17 00:00:00 2001 From: mlemainque Date: Thu, 1 Jul 2021 11:52:37 +0200 Subject: [PATCH 19/25] Update daikin.markdown (#18241) * Update daikin.markdown * Update daikin.markdown * Update daikin.markdown --- source/_integrations/daikin.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index 2593c8a646a..0e38242d21c 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -100,12 +100,23 @@ The `daikin` sensor platform integrates Daikin air conditioning systems into Hom - Total instant power consumption - Hourly energy consumption in cool mode - Hourly energy consumption in heat mode +- Outside compressor frequency
- Some models only report outside temperature when they are turned on. - Some models does not have humidity sensor. - Some models does not report the power/energy consumption. +- Some models does not report the compressor frequency. + +
+ +
+ +- The 'total' power sensor is updated every time 100 Wh are consumed by all the AC summed together. +- The 'cool/heat' energy sensors are updated hourly with the previous hour energy consumption + of a given mode and a given AC. +- The 'cool' mode also includes the 'fan' and 'dehumidifier' modes' power consumption.
From 29821ba06c438b4e12a8d71cf143b8b90716d870 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 6 Jul 2021 11:28:56 -0500 Subject: [PATCH 20/25] Revert nmap_tracker to 2021.6 version (#18403) --- source/_integrations/nmap_tracker.markdown | 70 +++++++++++++++++++++- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index 37993b3422c..b1467e622fe 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_domain: nmap_tracker ha_platforms: - device_tracker -ha_config_flow: true --- As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`). @@ -25,7 +24,66 @@ On a Fedora host run `sudo dnf -y install nmap`. -{% include integrations/config_flow.md %} +Host detection is done via Nmap's "fast scan" (`-F`) of the most frequently used 100 ports, with a host timeout of 5 seconds. + +To use this device tracker in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: nmap_tracker + hosts: 192.168.1.0/24 +``` + +{% configuration %} +hosts: + description: The network address to scan (in any supported Nmap format). Mixing subnets and IPs is possible. + required: true + type: string +home_interval: + description: The number of minutes Nmap will not scan this device, assuming it is home, in order to preserve the device battery. + required: false + type: integer +exclude: + description: Hosts not to include in Nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error and authentication failures), so excluding that host is a good idea. + required: false + type: list +scan_options: + description: Configurable scan options for Nmap. + required: false + default: -F --host-timeout 5s + type: string +{% endconfiguration %} + +## Examples + +A full example for the `nmap` tracker could look like the following sample: + +```yaml +# Example configuration.yaml entry for Nmap +# One whole subnet, and skipping two specific IPs. +device_tracker: + - platform: nmap_tracker + hosts: 192.168.1.0/24 + home_interval: 10 + exclude: + - 192.168.1.12 + - 192.168.1.13 +``` + +```yaml +# Example configuration.yaml for Nmap +# One subnet, and two specific IPs in another subnet. +device_tracker: + - platform: nmap_tracker + hosts: + - 192.168.1.0/24 + - 10.0.0.2 + - 10.0.0.15 +``` + +In the above example, Nmap will be call with the process: +`nmap -oX - 192.168.1.1/24 10.0.0.2 10.0.0.15 -F --host-timeout 5s` An example of how the Nmap scanner can be customized: @@ -37,6 +95,12 @@ On Linux systems (such as Hass.io) you can extend the functionality of Nmap, wit sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap ``` -And you can set up the device tracker scan options with `--privileged -sn` +And you can set up the device tracker as + +```yaml +- platform: nmap_tracker + hosts: 192.168.1.1-25 + scan_options: " --privileged -sn " +``` See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. From b1a0c1ec4526c2f2c1f94f7d28657ac7b735b6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Tue, 6 Jul 2021 19:40:41 +0200 Subject: [PATCH 21/25] Adjust check config documentation (#18411) --- .../splitting_configuration.markdown | 13 +++-- .../configuration/troubleshooting.markdown | 9 ++-- source/_faq/component.markdown | 7 ++- .../common-tasks/configuration_check.md | 54 ++++++++++++++++++- 4 files changed, 71 insertions(+), 12 deletions(-) diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 76cfefbcf7b..1582b8dabac 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -189,15 +189,14 @@ That about wraps it up. If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away. -## Debugging multiple configuration files +## Debugging configuration files -If you have many configuration files, the `check_config` script allows you to see how Home Assistant interprets them: +If you have many configuration files, Home Assistant provides a CLI that allows you to see how it interprets them, each installation type has it's own section in the common-tasks about this: -- Listing all loaded files: `hass --script check_config --files` -- Viewing a component's configuration: `hass --script check_config --info light` -- Or all components' configuration: `hass --script check_config --info all` - -You can get help from the command line using: `hass --script check_config --help` +- [Operating System](/common-tasks/os/#configuration-check) +- [Container](/common-tasks/container/#configuration-check) +- [Core](/common-tasks/core/#configuration-check) +- [Supervised](/common-tasks/supervised/#configuration-check) ## Advanced Usage diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 399853c9148..b6880bde4a3 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -19,9 +19,12 @@ If you have incorrect entries in your configuration files you can use the config One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. -- With Home Assistant OS and Supervised you can use the [`ha` command](/hassio/commandline/#home-assistant): `ha core check`. - - You can test your configuration with Home Assistant Core using the command line with: `hass --script check_config`. If you need to provide the path for your configuration you can do this using the `-c` argument like this: `hass --script check_config -c /path/to/your/config/dir`. - - On Docker you can use `docker exec home-assistant python -m homeassistant --script check_config --config /config` - where `home-assistant` is the name of the container. +- Home Assistant provides a CLI that allows you to see how it interprets them, each installation type has it's own section in the common-tasks about this: + - [Operating System](/common-tasks/os/#configuration-check) + - [Container](/common-tasks/container/#configuration-check) + - [Core](/common-tasks/core/#configuration-check) + - [Supervised](/common-tasks/supervised/#configuration-check) + - The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. - You can verify your configuration's YAML structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). diff --git a/source/_faq/component.markdown b/source/_faq/component.markdown index 4acaa816335..950d2472e22 100644 --- a/source/_faq/component.markdown +++ b/source/_faq/component.markdown @@ -6,4 +6,9 @@ ha_category: Configuration When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. -If you have incorrect entries in your configuration files you can use the `check_config` script to assist in identifying them: `hass --script check_config`. +If you have incorrect entries in your configuration files you can use the CLI script to check your configuration, each installation type has it's own section in the common-tasks about this: + +- [Operating System](/common-tasks/os/#configuration-check) +- [Container](/common-tasks/container/#configuration-check) +- [Core](/common-tasks/core/#configuration-check) +- [Supervised](/common-tasks/supervised/#configuration-check) \ No newline at end of file diff --git a/source/_includes/common-tasks/configuration_check.md b/source/_includes/common-tasks/configuration_check.md index 2a5b598083e..4f39fdce11e 100644 --- a/source/_includes/common-tasks/configuration_check.md +++ b/source/_includes/common-tasks/configuration_check.md @@ -8,11 +8,37 @@ ha core check {% elsif page.installation == "container" %} +_If your container name is something other than `homeassistant`, change that part in the examples below._ + +Run the full check: + ```bash docker exec homeassistant python -m homeassistant --script check_config --config /config ``` -_If your container name is something other than `homeassistant`, change that part._ +Listing all loaded files: + +```bash +docker exec homeassistant python -m homeassistant --script check_config --files +``` + +Viewing a component’s configuration ([`light`](/integrations/light) in this example): + +```bash +docker exec homeassistant python -m homeassistant --script check_config --info light +``` + +Or all components’ configuration + +```bash +docker exec homeassistant python -m homeassistant --script check_config --info all +``` + +You can get help from the command line using: + +```bash +docker exec homeassistant python -m homeassistant --script check_config --help +``` {% elsif page.installation == "core" %} @@ -30,10 +56,36 @@ _If your container name is something other than `homeassistant`, change that par 3. Run the configuration check + Run the full check: + ```bash hass --script check_config ``` + Listing all loaded files: + + ```bash + hass --script check_config --files + ``` + + Viewing a component’s configuration ([`light`](/integrations/light) in this example): + + ```bash + hass --script check_config --info light + ``` + + Or all components’ configuration + + ```bash + hass --script check_config --info all + ``` + + You can get help from the command line using: + + ```bash + hass --script check_config --help + ``` + 4. When that is complete restart the service for it to use the new files. {% endif %} From 84792d3063c551d1b919e2b75f1ac44498481767 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 6 Jul 2021 21:22:52 +0200 Subject: [PATCH 22/25] 2021.7 release notes: Several updated --- .../_posts/2021-07-07-release-20217.markdown | 40 ++++++++++++------ source/images/blog/2021-07/script-tracing.png | Bin 0 -> 47639 bytes .../images/blog/2021-07/trigger-condition.png | Bin 0 -> 7207 bytes 3 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 source/images/blog/2021-07/script-tracing.png create mode 100644 source/images/blog/2021-07/trigger-condition.png diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index c4e68026776..59efc074b3b 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -57,7 +57,7 @@ select entity is relative of the dropdown helper (also known as The difference is that while the input select is configured and managed by you, the select entities are provided by integrations. -This means integrations can now provide provide entities that give a choice. +This means integrations can now provide entities that give a choice. Either in the Lovelace UI, but also via automations using services, and via the Google Assistant. @@ -120,6 +120,33 @@ automation: You can use the trigger condition in all places all other conditions work as well, including things like [choose from a group of actions](/docs/scripts/#choose-a-group-of-actions). +Rather use the UI to create and manage your automations? No problem! These new +features have been added to the automation editor as well! + +

+Screenshot of using a trigger condition in the automation editor +Screenshot of using a trigger condition in the automation editor. +

+ +## Script debugging + +In [Home Assistant Core 2021.4](/blog/2021/04/07/release-20214/#automation-debugging), +we added the ability to debug automations. This release, we've made these +same powerful tools available for scripts! + +So, this helps for the next time you are wondering: Why didn't that script work? +Or why did it behave like it did? What the script is going on here? + +

+Screenshot of using the new script debugger on the my office announce script +Screenshot of using the new script debugger on the my office announce script. +

+ +The above screenshot shows a previous run of an script, using an interactive +graph for each step in this script with the path it took highlighted. +Each node in the graph can be clicked to view the details on what happened +on each step in the script sequence. + ## Referencing other entities in triggers and conditions A small, but possibly helpful, change to our script and automations. @@ -262,7 +289,6 @@ The following integrations are now available via the Home Assistant UI: - [Coinbase][coinbase docs], done by [@TomBrien] - [DSMR Slimme Meter][dsmr docs], done by [@RobBie1221] -- [Nmap Tracker][nmap_tracker docs], done by [@bdraco] - [Yamaha MusicCast][yamaha_musiccast docs], done by [@vigonotion] ## If you need help... @@ -682,16 +708,6 @@ of Airly. {% enddetails %} -{% details "Nmap Tracker" %} - -The Nmap Tracker has fully transitioned to configuration via UI. -Existing YAML configuration will be imported automatically and can now safely -be removed from your configuration files. - -([@bdraco] - [#50429]) ([nmap_tracker docs]) - -{% enddetails %} - {% details "MQTT" %} It's no longer possible to set attributes defined in the the base component diff --git a/source/images/blog/2021-07/script-tracing.png b/source/images/blog/2021-07/script-tracing.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef531c5506c4e9c7b550645ad0b501842ee1a9a GIT binary patch literal 47639 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
%X?e#2?*SU7z!F&?0!nj)w_>wy84J@#>K%Y zs+0E{){KtQ?)hoX;yY3a%(DH(Kts*|3i7lYMapnf%dBlxAFaH8V;CQSv-!GuyRR?M zWuR2RaYGBMy;0hU&(7U;)6350_Gn1-rdtv5GeRPEu10uAC8=-MUSgL%zM~wYMxqvn$a4 zV2K&@jpy2dRldA*%i_<8cX=joUvPV!YwqlKwzx61>D*!%$jFExc&Wg#a~{VNyFkCx z)r2_U^!;-Z#PSktcoK@7DQnNEb<*)lvhsZFsxDt&_S9A7k_39@#C(TG)$-N+ds3DB zu}i8Xta<9Hp0(>%1q=m6S_0qL$+euIl)@QglXABRJk%9q6hL2H$sXFDnO@l5qYP12=Hy_R=*}+{ZzIIa67 zdN)E0P({IA8S>n5X5(PTg+#27l8~;E7Rv@{nl zWqkGMr<8`z-YuPS_R%DNez)cOWgE;+PyJpPJtbN<8oGN`RUQBGe1qbK+F@bZxT^r}&Y1exHcW5z?IfdZ; z{%IioOFl}<@&RMkzKwmdeHk$+$s_X>%fc1XR$Xcvd>czrCElaawmrp!uWh}S-ezHj zv)psP0ys(zK0AxQlBtzrv$U^0Tg~qJb5U!B`j3Pi4Zp&;a{rp!^&$86%JdqW`-4g7 z6jPQO9$u7U&{fk4k>pX>h_|V{o!*Gh`1BZeaklR@ z-&$6EIO}F^b_ehMBac&I_|Mx-mJ5V7?)h_^pW&qk9J}o#OPRhg$~l%9t@>4L$opA2 zT(>TdcgGfIh6T5&M#gS{AMUPYrMpM26s6L#``*e3687ZrDfLBUa(YLy0^Y0ogJy93Z*E|?AxVzfJ3pj{dxE1AQ)vK=Z84c)La(mF5_VeEZ zCkDBkb!5DPp}a!*dbhe7mz?@cOpJt*l8Tnb&&J|MUiLhqW4(7|qi1XbF*H?B@jWoA zAuzf>r+lGhV6}Z@712FgRgv?~TS9;vO8u0ahDuC9B`vRbX?^YF?DXPtcMcxAVvF+g zZ&OA-0Zd*fW3SS{Y$g*ZIy?BjsGX?YMf|R9(bN6jv3SkmlijDhbMU{)bD;FA zy;z6&-j(k@(XF;_-B zyO-QjPFzi-rDgelU!PN*fZc32F5K=t;V*5f^pN%+uZUWZkHD$Mx>sUdYFfwqY0*va zo`hL7w&>kO9r5-=mdM)&FF(UY8^M&KxH{kEz+n(*rnD*OMnlLw2wm-`(M@y{#bjuLEhnpR7Z!jxvIKTl5=K)*YnG zi08gompbCBF6c==PRYFKWHc((U--!O?ti1L@6Fjr(+@5>BSy14&nj(Ibg9DS*kb9r zO%3ZODe{E3QtP#`eJj*4bNAN6^$c6fmXbIkqzx%$ zDnRq`SAV2&W3JhSF*J0(A4RYHl~tIbd@H^2i^KA#%T6-b_2Fb#6eIf85sfT1jh&~? z8%9Yt85gckCYrcu?Jt4JCf_W{9kN~ys*4_Fo+ep6CQde z!c!%}MmN6DrKmN)X19zM$E5cfgMEfsJ;ywP!N<~ttP17dYueg_pp}jKS-8qo%1F3ld=svUe4OoD#So5Tvqx@gs?HGgRdgf zhRunemmw%eaDM5}`XP2rHw&#zxP1{leRc7Q2R03MHf$F;n-tC45oe;g77>Xd^3nZO zg^k|WsfZ(2wDL&TLeGoYvmD+I*;h=}Kg}z7K2RjY5+tPzZSIAa@>bn^^IVW65xblF z2L-)mIsjWjW0XuM&cG0h%o{aFy;Mw}?V?jo2YP;vxAZaRDe9xXwC9N2jnL_jSUTvX zbLi=;AOfv zvC=QR+)Wz=0t@X6cz7+osK*K0HTFXA*NG7o0gDm<+&UR>*2E68Zx zhLyLzd9zS|w@7V{dVGVN!o{cNs5l>xzo7_X{sTf_Fa5VcMZ^Cs`6w$?#>gice2iR+ a-lg$r1oM+BNIwOip~y?CNR>$#fB1h4>xAC` literal 0 HcmV?d00001 diff --git a/source/images/blog/2021-07/trigger-condition.png b/source/images/blog/2021-07/trigger-condition.png new file mode 100644 index 0000000000000000000000000000000000000000..b994ed53261e8ed0e8fffdbc8a8931d0a701d2cf GIT binary patch literal 7207 zcmaJ`2UJtb(+`1ALWd|w??$>(M0x^J9xb3qk!k@#7XcCJ67W6g2vVeksvtq7N-t_u zilG@PQUvJ%H1zu2p#T2PckVeid-v|n%+AjIesec}qD=Lfp*&C!2*hk?plbmFf$M?x z96cDg2Y-Kc8wBEAG1Ns|4x(EA{F1p-n~CPdvR0X|Z}V5u z%55t)j95CTtr3@`3uAd!Mh9{zF4IN8fO){=zi&*26#zyEK>>UIw^7Fl0Ti19Hn9Cq zL&fNCgoZ5-N5)`KY_yYHWs-S07d>Hc((Gf8^nf)NHGiAfQ;3^tg!el-3PN=xl8aAUmi!a&!^1X-)J7>ipv$txL@O}3#isT@5o|q|L6*f$}6TwaK3y*xd z({!5((Bu2~Z46XX{S`7<6N8NOqQ7V|5cJXS^?Hzc)i9Hhw!}6=i=8YM^#BWLU}K5R zixQ%bs+f+h3||gZW5=+bfJCJicN+E0k)N?dH&3jduKKVM)>=u+Ap7{?!{BC3K9-)L z`)8oxR;+)(q?JP)H703{8M!6%A!AYS8S>r5hzIh`+==*1m%viNNCM1KTgG z&CSJ5jOMACvzfpD?pN6NUcD#vK$6H1miEm64q0Xh$q$ThZaJE(huBi^Oqxq!{xbW zzG)CoryADSif{YWWsj1SFCsQ(-uV0#^)^Q0yWd^SymF6Cn87>u8jAw9c)isvwE>K- z$jgb@{mr z@%U|i1%uLoCaTjxnQ-5GLTvLJ!4#h;wsRygbjsK3u>)=q{R3wG$Svz#I(FF8!rZS@ z)LL79%Bk{4b>h)*Bjcod94^0&wESfLs9&=za#-rPa2p!(XnXjE)T$H1E zE~&WC-_I1U8eHDX%RQgPeMv1r#^#d`w9&&RezW7Q|E3!Rw6?WH1Y;s1K UWP2K; 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 Date: Wed, 7 Jul 2021 08:34:02 +0200 Subject: [PATCH 23/25] Bump rake from 13.0.3 to 13.0.4 (#18412) Bumps [rake](https://github.com/ruby/rake) from 13.0.3 to 13.0.4. - [Release notes](https://github.com/ruby/rake/releases) - [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rake/compare/v13.0.3...v13.0.4) --- updated-dependencies: - dependency-name: rake dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index b29288f0477..3a04804fc3e 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source 'https://rubygems.org' ruby '> 2.5.0' group :development do - gem 'rake', '13.0.3' + gem 'rake', '13.0.4' gem 'jekyll', '4.2.0' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' diff --git a/Gemfile.lock b/Gemfile.lock index 23223f14783..ef1288421b4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -86,7 +86,7 @@ GEM rack (2.2.3) rack-protection (2.1.0) rack - rake (13.0.3) + rake (13.0.4) rb-fsevent (0.11.0) rb-inotify (0.10.1) ffi (~> 1.0) @@ -131,7 +131,7 @@ DEPENDENCIES jekyll-time-to-read (= 0.1.2) jekyll-toc (= 0.17.1) nokogiri (= 1.11.7) - rake (= 13.0.3) + rake (= 13.0.4) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 2.1.0) From 17f1bd1496c17c47b2062d2705d79546c6b28b8b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 7 Jul 2021 13:05:24 +0200 Subject: [PATCH 24/25] 2021.7 release notes: Final touches --- .../_posts/2021-07-07-release-20217.markdown | 704 +++++++++++------- 1 file changed, 418 insertions(+), 286 deletions(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 59efc074b3b..e2e60bcb637 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "2021.7: Beta release notes" -description: "Beta release notes for Home Assistant Core 2021.7" -date: 2021-06-30 00:00:00 +title: "2021.7: A new entity, trigger IDs and script debugging" +description: "Presenting the select entity, identify the automation trigger by an ID, debugging and tracing for scripts and easily parse dates in templates." +date: 2021-07-07 00:00:00 date_formatted: "July 7, 2021" author: Franck Nijhof author_twitter: frenck @@ -16,27 +16,33 @@ feedback: true -These are the beta release notes for Home Assistant Core 2021.7 (and is thus a -work in progress). +Happy July, which means Home Assistant Core 2021.7! -If you encounter any issues with the beta release, please report them on GitHub: +An interesting release, with a bunch of little goodies to make things easier in +creating automations, scripts and doing templating. Those are things that in +general, make me very happy. Mainly because, well, I use Home Assistant to +automate 😁 -- Issues with integrations, automations and such (Core related):
- -- Issues with the frontend/Lovelace:
- -- Issues with the Supervisor:
- -- Issues with the documentation:
- +Also, we are saying "hi!" 👋 to a new type of entity, which is really exciting +and I can't wait to see how that is being put the use in the future. -Please be sure to include the beta version you are running in the issue -description (not title), so we can classify your issue correctly. +Lastly, I want to give a shout-out to [@klaasnicolaas]! He has been an intern +with Nabu Casa for the last months. Besides doing the community highlights, he +has been working on some awesome stuff that will land in upcoming Home Assistant +releases. -Issues introduced in the beta are processed with priority. +His internship is now over, and he passed with a nice grade. Yet, he could not +leave without a little present as it seems. He contributed the +[Forecast.Solar][forecast_solar docs] integration, bringing in energy production +forecasting for your solar panels. Really cool! + +Alright, that's it! Enjoy the release! + +../Frenck - [New entity: Select](#new-entity-select) - [Trigger conditions and trigger IDs](#trigger-conditions-and-trigger-ids) +- [Script debugging](#script-debugging) - [Referencing other entities in triggers and conditions](#referencing-other-entities-in-triggers-and-conditions) - [Working with dates in templates](#working-with-dates-in-templates) - [Series version tags for Docker containers](#series-version-tags-for-docker-containers) @@ -50,8 +56,8 @@ Issues introduced in the beta are processed with priority. ## New entity: Select -This release we welcome the `select` entity to the Home Assistant family. The -select entity is relative of the dropdown helper (also known as +In this release we welcome the `select` entity to the Home Assistant family. The +select entity is family of the dropdown helper (also known as `input_select`). The difference is that while the input select is configured and managed by you, @@ -77,8 +83,8 @@ If you are creating some complex automations in YAML, you might be familiar with this. Consider an big automation, with a whole bunch of triggers. But how would you know which of those triggers actually triggered the automation? -You can now assign an `id` to your triggers that is passed into automation -when it is triggered, allowing you to make decision on it. +You can now assign an `id` to your triggers that is passed into automation when +triggered, allowing you to make decisions on it. ```yaml automation: @@ -97,8 +103,8 @@ automation: ... ``` -The above example triggers the same automation twice, once when the gate opens -and once when the gate is left open for 10 minutes (probably forgotten). Each +The above example triggers the same automation twice, when the gate opens +and when the gate is left open for 10 minutes (probably forgotten). Each trigger has its own ID. Now introducing the new trigger condition! So you can add a condition on which @@ -117,8 +123,9 @@ automation: message: "Someone left the gate open..." ``` -You can use the trigger condition in all places all other conditions work -as well, including things like [choose from a group of actions](/docs/scripts/#choose-a-group-of-actions). +You can use the trigger condition in all places where all the other conditions +work as well, including things like +[choose from a group of actions](/docs/scripts/#choose-a-group-of-actions). Rather use the UI to create and manage your automations? No problem! These new features have been added to the automation editor as well! @@ -135,16 +142,16 @@ we added the ability to debug automations. This release, we've made these same powerful tools available for scripts! So, this helps for the next time you are wondering: Why didn't that script work? -Or why did it behave like it did? What the script is going on here? +Or why did it behave as it did? What the script is going on here?

-Screenshot of using the new script debugger on the my office announce script -Screenshot of using the new script debugger on the my office announce script. +Screenshot of using the new script debugger on my office announce script +Screenshot of using the new script debugger on my office announce script.

-The above screenshot shows a previous run of an script, using an interactive -graph for each step in this script with the path it took highlighted. -Each node in the graph can be clicked to view the details on what happened +The above screenshot shows a previous run of a script, using an interactive +graph for each step in this script; with the path it took highlighted. +Each node in the graph can be clicked to view the details of what happened on each step in the script sequence. ## Referencing other entities in triggers and conditions @@ -179,14 +186,14 @@ added support for that already in a previous release. If you ever tried to work with dates in templates, you probably know that that is hard. And honestly, that will never go away, times, dates and timezones are -a complex little beasts. +complex little beasts. -However, we realized that the hardest part of using date & times with templates, -is actually converting the state of a sensor or text to an datetime. This +However, we realized that the hardest part of using date & times with templates +is converting the state of a sensor or text to a datetime. This release we added a small template method to help with that: `as_datetime`. -It can be used as a filter or as a method. Here is an example to -calculate the number of days until my drivers license expires: +It can be used as a filter or as a method. Here is an example of +calculating the number of days until my drivers' license expires: {% raw %} @@ -199,12 +206,13 @@ calculate the number of days until my drivers license expires: ## Series version tags for Docker containers If you are using the Home Assistant Container installation method, -we recommend to use a specific version tag, however, that means +we recommend using a specific version tag; however, that means you need to update the version tag each time we release a new patch version of Home Assistant. Thanks to [@kmdm], as of this release, we also provide a series version tag -that always points to the latest patch version of that release. +that always points to the latest patch version of that release, in addition +to all existing tags we already provide. ```shell docker pull ghcr.io/home-assistant/home-assistant:2021.7 @@ -218,43 +226,45 @@ actually version `2021.7.2`. There is much more juice in this release; here are some of the other noteworthy changes this release: -Z-Wave JS Updates, probably make it a chapter in the release blog: +- Z-Wave JS got quite a few updates this release: + - A new `zwave_js.multicast_set_value` is available, allowing to issue + a set value command via multicast. Thanks, [@raman325]! + - Each node now has a status sensor available and can be pinged using the + new `zwave_js.ping` service. Added by [@raman325]. + - The Z-Wave JS configuration panel now has a "Heal Network" button, + thanks [@cgarwood]! + - Z-Wave JS Server connection can now be re-configured from the Z-Wave JS + configuration panel, added by [@MartinHjelmare]. + - Z-Wave JS logs can now be downloaded, thanks [@raman325]! +- The Google Assistant integration now has support for fan speed percentages and + preset modes. Thanks, [@jbouwh]! +- [@jbouwh] didn't stop there and added fan preset mode support to Alexa too! +- The Philips TV integration now supports Ambilights, added by [@elupus]. +- Yamaha MusicCast integration now supports grouping services, thanks [@micha91]! +- [@raman325] added a whole bunch of sensors to the ClimaCell integration! +- WLED now supports local push. Updates are now instantly both ways. Also, + the master light can be kept and added support for controlling user presets. +- Setting up Xiaomi devices has gotten way easier! There is no need to do + difficult things to get the tokens. Instead, Home Assistant can now extract + the tokens from a Xiaomi Cloud account. Thanks, [@starkillerOG]! +- More Xiaomi updates, [@jbouwh] added support for fan percentage-based speeds + and preset modes. +- [@RenierM26] added a lot of new services to the Ezviz integration, thanks! +- Tibber had quite a few improvements and now provides a power factor sensor, + added by [@Danielhiversen]! +- Google Translate TTS now supports the Bulgarian language, + thanks [@hristo-atanasov]! +- If you have a SmartTube, you can now reset your reminders, thanks [@mdz]! +- KNX had quite a lot of updates and added support for XY-color lights, + thanks [@farmio]. +- [@OttoWinter] added support for presets, custom presets and custom fan modes + for climate controls in ESPHome. Awesome! +- Nuki now has a service to enable/disable continuous mode, thanks [@anaisbetts]! +- [@cgomesu] added quantiles to Statistics integration, thanks! +- The Home Assistant login page now better support password manager, + thanks, [@rianadon]! -- Add zwave_js.multicast_set_value service ([@raman325] - [#51115]) ([zwave_js docs]) -- Add zwave_js node status sensor ([@raman325] - [#51181]) ([zwave_js docs]) -- Add zwave_js ping node service ([@raman325] - [#51435]) ([zwave_js docs]) -- Add ZWave JS heal network UI (#9449) @cgarwood (frontend) -- Add button for zwave_js options flow (#9001) @MartinHjelmare (frontend) -- Add button to download logs from zwave_js logs page (#9395) @raman325 (frontend) - -Others: - -- Add support for fan speed percentage and preset modes to google_assistant integration ([@jbouwh] - [#50283]) ([google_assistant docs]) -- Alexa fan preset_mode support ([@jbouwh] - [#50466]) ([alexa docs]) -- Philips TV ambilight support ([@elupus] - [#44867]) ([philips_js docs]) -- Yamaha musiccast grouping-services ([@micha91] - [#51952]) ([yamaha_musiccast docs]) -- Add separate ozone sensor for climacell ([@raman325] - [#51182]) ([climacell docs]) -- Add device trigger support for Philips Hue Wall Switch Module ([@cklagenberg] - [#51574]) ([hue docs]) -- WLED WebSocket support - local push updates ([@frenck] - [#51683]) ([wled docs]) -- Add preset support to WLED ([@frenck] - [#52170]) ([wled docs]) -- Allow keeping master light in WLED ([@frenck] - [#51759]) ([wled docs]) -- Add Xiaomi add using cloud support ([@starkillerOG] - [#47955]) ([xiaomi_miio docs]) -- Add services to ezviz integration ([@RenierM26] - [#48984]) ([ezviz docs]) (new-platform) -- Xiaomi_miio fan percentage based speeds and preset_modes ([@jbouwh] - [#51791]) ([xiaomi_miio docs]) -- Add config flow step user to dsmr ([@RobBie1221] - [#50318]) ([dsmr docs]) -- Add sensor platform to Meteoclimatic integration ([@adrianmo] - [#51467]) ([meteoclimatic docs]) (new-platform) -- Tibber power factor ([@Danielhiversen] - [#52223]) ([tibber docs]) -- Bulgarian language added in Google Translate TTS ([@hristo-atanasov] - [#51985]) ([google_translate docs]) -- Add new climacell sensors ([@raman325] - [#52079]) ([climacell docs]) -- Add service to reset SmartTub reminders ([@mdz] - [#51824]) ([smarttub docs]) -- ESPHome Climate add preset, custom preset, custom fan mode ([@OttoWinter] - [#52133]) ([esphome docs]) -- Change DiffuserRoomSize number entity to select entity ([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) -- KNX: Support for XY-color lights ([@farmio] - [#51306]) ([knx docs]) -- Add quantiles to Statistics integration ([@cgomesu] - [#52189]) ([statistics docs]) -- Create service to enable Continuous Mode on Nuki Opener ([@anaisbetts] - [#51861]) ([nuki docs]) - -- Add input elements to login page for password managers (#9369) @rianadon (frontend) -- Add hardware dialog (#9348) @ludeeus (frontend) +[@cgarwood]: https://github.com/cgarwood ## New Integrations @@ -321,7 +331,7 @@ For more information, see the Additionally, access to Home Assistant from same IP as a trusted proxy will be rejected if the request is marked as forwarded. -([@frenck] - [#51839]) ([@elupus] - [#52073]) ([http docs]) +([@frenck] - [#51839]) ([http docs]) {% enddetails %} @@ -345,6 +355,145 @@ you need to have `libseccomp` 2.42 or newer. {% enddetails %} +{% details "Airly" %} + +The AirQuality platform has been marked as deprecated. The `air_quality` entitiy +is removed and replaced with sensor entities. You will need to update their +automations and dashboards if you have been using the `air_quality` entity +of Airly. + +([@bieniu] - [#52225]) ([airly docs]) + +{% enddetails %} + +{% details "Azure Event Hub" %} + +When using this integration with with IoTHub, the `event_hub_name` is now +a required field, can be filled by the DeviceID when using IoTHub. + +([@eavanvalkenburg] - [#52049]) ([azure_event_hub docs]) + +{% enddetails %} + +{% details "CEC Support" %} + +Our Docker container has limited support for CEC drivers to those provided +by the Linux kernel. This applies to the Home Assistant Container, +Home Assistant OS and Home Assistant Supervised installation types. + +This will cover most CEC drivers out there. + +([@pvizeli] - [#51637]) + +{% enddetails %} + +{% details "Coinbase" %} + +The Coinbase integration migrated to configuration via the UI. Configuring +Coinbase 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. + +([@TomBrien] - [#45354]) ([coinbase docs]) + +---- + +Only accounts explicitly included in `account_balance_currencies` will be +loaded. Excluding the option will no longer load all provided accounts as +Coinbase's API now provides at least 29 accounts even if they are not +configured in your API settings on Coinbase. + +([@TomBrien] - [#51981]) ([coinbase docs]) + +{% enddetails %} + +{% details "Database (statistics table)" %} + +The statistics table is Home Assistant data table that is not exposed +or used by Home Assistant yet and is part of an alpha / feature that is in +development. However, it does exist and it might be you found it already +interesting or found a use for it. + +This release, the contents of this table is reset. This does not impact +any state history, and this data isn't used by Home Assistant as of yet. + +If you have no idea what this message is about, you can safely ignore it. +We have merely listed this to be complete in our breaking changes report. + +([@emontnemery] - [#52331]) ([history docs]) + +{% enddetails %} + +{% details "DSMR Slimme Meter" %} + +Configuring the DSMR integration via YAML has been deprecated and will +be removed in Home Assistant 2021.9. If you have an existing YAML +configuration for the DSMR platform is will be imported into the UI +automatically on upgrade. You can safely remove the DSMR YAML configuration +after upgrading Home Assistant. + +([@frenck] - [#52179]) ([dsmr docs]) + +---- + +The Hourly Gas Consumption sensor has been removed from the DSMR integration. +This sensor was calculated and it is not an actual datapoint from the energy +meter. + +If you are looking for a replacement, you can use the +[Derivative integration](/integrations/derivative/) to re-create the hourly +(or any other timeframe) sensor based on the total Gas consumption sensor. + +([@frenck] - [#52147]) ([dsmr docs]) + +{% enddetails %} + +{% details "Google Play Music Desktop Player (GPMDP)" %} + +- The integration has been disabled since it requires an old version of the + `websocket-client` library which is incompatible with the requirements of + other integrations that are actively maintained. + +- It's not clear if this integration still works with the gpmdp app that now + only supports YouTube Music. If there's someone that uses the integration + successfully and wants to take on the maintenance task that is required to get + the integration in a compatible state, please create an issue to discus + the future of this integration. + +([@MartinHjelmare] - [#51509]) ([gpmdp docs]) + +{% enddetails %} + +{% details "Growatt" %} + +The Growatt API has changed individual PV array units from Watts to Kilowatts. +This change is to update the units used for these values in Home Assistant, +therefore the units for these values will change. + +([@muppet3000] - [#52021]) ([growatt_server docs]) + +{% enddetails %} + +{% details "Kuler Sky" %} + +Kuler Sky lights no longer supports deprecated `white_value` attribute for +its lights, use the `rgbw_color` attribute instead. + +([@emontnemery] - [#52080]) ([kulersky docs]) + +{% enddetails %} + +{% details "MeteoAlarm" %} + +You now cannot use the 2 letters of your country code, but must know use the +complete country name in your configuration. To find out which country names +you can use, please look at meteoalarm.org. + +([@rolfberkenbosch] - [#51383]) ([meteoalarm docs]) + +{% enddetails %} + {% details "Modbus" %} As announced in 2021.4, the “old style” YAML was deprecated and now removed: @@ -534,136 +683,18 @@ modbus: {% enddetails %} -{% details "Google Play Music Desktop Player (GPMDP)" %} +{% details "MQTT" %} -- The integration has been disabled since it requires an old version of the - `websocket-client` library which is incompatible with the requirements of - other integrations that are actively maintained. +It's no longer possible to set attributes defined in the the base component +via a configured `json_attributes_topic`. -- It's not clear if this integration still works with the gpmdp app that now - only supports YouTube Music. If there's someone that uses the integration - successfully and wants to take on the maintenance task that is required to get - the integration in a compatible state, please create an issue to discus - the future of this integration. +For example a light no longer accepts brightness via the `json_attribute_topic`. +This was unintended and undocumented functionality that lead to unexpected +behavior. -([@MartinHjelmare] - [#51509]) ([gpmdp docs]) +This change applies to all supported MQTT platforms. -{% enddetails %} - -{% details "MeteoAlarm" %} - -You now cannot use the 2 letters of your country code, but must know use the -complete country name in your configuration. To find out which country names -you can use, please look at meteoalarm.org. - -([@rolfberkenbosch] - [#51383]) ([meteoalarm docs]) - -{% enddetails %} - -{% details "CEC Support" %} - -Our Docker container has limited support for CEC drivers to those provided -by the Linux kernel. This applies to the Home Assistant Container, -Home Assistant OS and Home Assistant Supervised installation types. - -This will cover most CEC drivers out there. - - ([@pvizeli] - [#51637]) - -{% enddetails %} - -{% details "Yamaha MusicCast" %} - -The integration has been rewritten from the ground up and is now configurable -via the user interface only. Existing platform YAML config will automatically -imported into the user interface on upgrade; and can be safely removed -from the YAML configuration after upgrade has been completed. - -([@vigonotion] - [#51561]) ([yamaha_musiccast docs]) - -{% enddetails %} - -{% details "Spain electricity hourly pricing (PVPC)" %} - -With the change to the new, and unique, electric tariff 2.0TD, if you -previously had configured multiple PVPC sensors monitoring prices for more -than one of the old tariffs, only the first one will survive, so if you -have any automations or scripts that depend on these removed sensors, -you might need to adjust them. - -([@azogue] - [#51789]) ([pvpc_hourly_pricing docs]) - -{% enddetails %} - -{% details "Growatt" %} - -The Growatt API has changed individual PV array units from Watts to Kilowatts. -This change is to update the units used for these values in Home Assistant, -therefore the units for these values will change. - -([@muppet3000] - [#52021]) ([growatt_server docs]) - -{% enddetails %} - -{% details "Switcher" %} - -In preparation for multi device support, configuration via the UI and support -for discovery; this integration is migrating entity attributes into sensors -to be later added as device entities. The following switch entity attributes -migrated to sensors: - -| Attribute | Sensor Name | -| ------------- | ------------- | -| `power_consumption` | Power Consumption | -| `electric_current` | Electric Current | -| `remaining_time` | Remaining Time | -| `auto_off_set` | Auto Shutdown | - -([@thecode] - [#51964]) ([switcher_kis docs]) - -{% enddetails %} - -{% details "Sony Bravia TV " %} - -From April 2020, the Sony Bravia TV integration has been automatically importing -your import of existing YAML configurations. Now we have removed this option for -migration. Your existing configuration has been imported to the UI already -and can now be safely removed from your YAML configuration files. - -([@bieniu] - [#52141]) ([braviatv docs]) - -{% enddetails %} - -{% details "Azure Event Hub" %} - -When using this integration with with IoTHub, the `event_hub_name` is now -a required field, can be filled by the DeviceID when using IoTHub. - -([@eavanvalkenburg] - [#52049]) ([azure_event_hub docs]) - -{% enddetails %} - -{% details "DSMR Slimme Meter" %} - -Configuring the DSMR integration via YAML has been deprecated and will -be removed in Home Assistant 2021.9. If you have an existing YAML -configuration for the DSMR platform is will be imported into the UI -automatically on upgrade. You can safely remove the DSMR YAML configuration -after upgrading Home Assistant. - -([@frenck] - [#52179]) ([dsmr docs]) - ----- - -The Hourly Gas Consumption sensor has been removed from the DSMR integration. -This sensor was calculated and it is not an actual datapoint from the energy -meter. - -If you are looking for a replacement, you can use the -[Derivative integration](/integrations/derivative/) to re-create the hourly -(or any other timeframe) sensor based on the total Gas consumption sensor. - -([@frenck] - [#52147]) ([dsmr docs]) +([@emontnemery] - [#52242] [#52278] [#52280] [#52285] [#52286] [#52283] [#52289] [#52291] [#52290] [#52288] [#52282] [#52279]) ([mqtt docs]) {% enddetails %} @@ -697,88 +728,6 @@ for example by doing a unit conversion in a PromQL query. {% enddetails %} -{% details "Airly" %} - -The AirQuality platform has been marked as deprecated. The `air_quality` entitiy -is removed and replaced with sensor entities. You will need to update their -automations and dashboards if you have been using the `air_quality` entity -of Airly. - -([@bieniu] - [#52225]) ([airly docs]) - -{% enddetails %} - -{% details "MQTT" %} - -It's no longer possible to set attributes defined in the the base component -via a configured `json_attributes_topic`. - -For example a light no longer accepts brightness via the `json_attribute_topic`. -This was unintended and undocumented functionality that lead to unexpected -behavior. - -This change applies to all supported MQTT platforms. - -([@emontnemery] - [#52242] [#52278] [#52280] [#52285] [#52286] [#52283] [#52289] [#52291] [#52290] [#52288] [#52282] [#52279]) ([mqtt docs]) - -{% enddetails %} - -{% details "Coinbase" %} - -The Coinbase integration migrated to configuration via the UI. Configuring -Coinbase 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. - -([@TomBrien] - [#45354]) ([coinbase docs]) - ----- - -Only accounts explicitly included in `account_balance_currencies` will be -loaded. Excluding the option will no longer load all provided accounts as -Coinbase's API now provides at least 29 accounts even if they are not -configured in your API settings on Coinbase. - -([@TomBrien] - [#51981]) ([coinbase docs]) - -{% enddetails %} - -{% details "Kuler Sky" %} - -Kuler Sky lights no longer supports deprecated `white_value` attribute for -its lights, use the `rgbw_color` attribute instead. - -([@emontnemery] - [#52080]) ([kulersky docs]) - -{% enddetails %} - -{% details "Zero-configuration networking (zeroconf)" %} - -The IPv6 configuration option has been deprecated in favor of the settings -provided by the network integration. - -([@bdraco] - [#51173]) ([zeroconf docs]) - -{% enddetails %} - -{% details "Database (statistics table)" %} - -The statistics table is Home Assistant data table that is not exposed -or used by Home Assistant yet and is part of an alpha / feature that is in -development. However, it does exist and it might be you found it already -interesting or found a use for it. - -This release, the contents of this table is reset. This does not impact -any state history, and this data isn't used by Home Assistant as of yet. - -If you have no idea what this message is about, you can safely ignore it. -We have merely listed this to be complete in our breaking changes report. - -([@emontnemery] - [#52331]) ([history docs]) - -{% enddetails %} - {% details "Recorder" %} The underlying library that is used for the database connections, has been @@ -794,8 +743,72 @@ to be encoded. `%40` is the URL encoded version of `@`. {% details "Rituals Perfume Genie" %} -The switch extra state attributes `fan_speed` and `room_size` will be removed in the next release. -As of this release, both attributes are available as entities, making it possible to change the value with Home Assistant. +The switch extra state attributes `fan_speed` and `room_size` will be removed in +the next release. As of this release, both attributes are available as entities, +making it possible to change the value with Home Assistant. + +([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) + +{% enddetails %} + +{% details "Sony Bravia TV " %} + +From April 2020, the Sony Bravia TV integration has been automatically importing +your import of existing YAML configurations. Now we have removed this option for +migration. Your existing configuration has been imported to the UI already +and can now be safely removed from your YAML configuration files. + +([@bieniu] - [#52141]) ([braviatv docs]) + +{% enddetails %} + +{% details "Spain electricity hourly pricing (PVPC)" %} + +With the change to the new, and unique, electric tariff 2.0TD, if you +previously had configured multiple PVPC sensors monitoring prices for more +than one of the old tariffs, only the first one will survive, so if you +have any automations or scripts that depend on these removed sensors, +you might need to adjust them. + +([@azogue] - [#51789]) ([pvpc_hourly_pricing docs]) + +{% enddetails %} + +{% details "Switcher" %} + +In preparation for multi device support, configuration via the UI and support +for discovery; this integration is migrating entity attributes into sensors +to be later added as device entities. The following switch entity attributes +migrated to sensors: + +| Attribute | Sensor Name | +| ------------- | ------------- | +| `power_consumption` | Power Consumption | +| `electric_current` | Electric Current | +| `remaining_time` | Remaining Time | +| `auto_off_set` | Auto Shutdown | + +([@thecode] - [#51964]) ([switcher_kis docs]) + +{% enddetails %} + +{% details "Yamaha MusicCast" %} + +The integration has been rewritten from the ground up and is now configurable +via the user interface only. Existing platform YAML config will automatically +imported into the user interface on upgrade; and can be safely removed +from the YAML configuration after upgrade has been completed. + +([@vigonotion] - [#51561]) ([yamaha_musiccast docs]) + +{% enddetails %} + +{% details "Zero-configuration networking (zeroconf)" %} + +The IPv6 configuration option has been deprecated in favor of the settings +provided by the network integration. + +([@bdraco] - [#51173]) ([zeroconf docs]) {% enddetails %} @@ -1268,7 +1281,7 @@ As of this release, both attributes are available as entities, making it possibl - Use pysma exceptions ([@rklomp] - [#52252]) ([sma docs]) - Add tests for LCN integration setup ([@alengwenus] - [#48070]) ([lcn docs]) - Provide correct defaults for CoinBase options flow ([@TomBrien] - [#52255]) ([coinbase docs]) -- Change DiffuserRoomSize number entity to select entity ([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) +- Change DiffuserRoomSize number entity to select entity ([@milanmeu] - [#51993]) ([rituals_perfume_genie docs]) (breaking-change) - Only load requested coinbase accounts ([@TomBrien] - [#51981]) ([coinbase docs]) (breaking-change) - Cleanup KNX supported_features for climate, cover and fan ([@farmio] - [#52218]) ([knx docs]) - Add OAuth 2.0 Bearer Token authentication to send_file for telegram_bot ([@fnoorian] - [#46567]) ([telegram_bot docs]) @@ -1349,6 +1362,59 @@ As of this release, both attributes are available as entities, making it possibl - Convert units when fetching statistics ([@emontnemery] - [#52338]) ([recorder docs]) - xknx 0.18.8 ([@farmio] - [#52340]) ([knx docs]) - Report target unit in statistics meta data ([@emontnemery] - [#52341]) ([history docs]) ([recorder docs]) +- Add screenlogic reconnect ([@bshep] - [#52022]) ([screenlogic docs]) (beta fix) +- Update homekit_controller to use async zeroconf ([@bdraco] - [#52330]) ([homekit_controller docs]) (beta fix) +- Bump bt_proximity ([@FrederikBolding] - [#52364]) ([bluetooth_tracker docs]) (beta fix) +- Bump pyatmo to v5.2.0 ([@cgtobi] - [#52365]) ([netatmo docs]) (beta fix) +- Bump up ZHA dependencies ([@Adminiuga] - [#52374]) ([zha docs]) (beta fix) +- Fix missing default latitude/longitude/elevation in OpenUV config flow ([@bachya] - [#52380]) ([openuv docs]) (beta fix) +- Improve sensor statistics tests ([@emontnemery] - [#52386]) ([recorder docs]) ([sensor docs]) (beta fix) +- Reject trusted network access from proxies ([@elupus] - [#52388]) ([http docs]) (beta fix) +- Fix MQTT cover optimistic mode ([@emontnemery] - [#52392]) ([mqtt docs]) (beta fix) +- Fix sensor statistics collection with empty states ([@emontnemery] - [#52393]) ([sensor docs]) (beta fix) +- Bump pysma to 0.6.1 ([@rklomp] - [#52401]) ([sma docs]) (beta fix) +- Add update listener to Coinbase ([@TomBrien] - [#52404]) ([coinbase docs]) (beta fix) +- Upgrade wled to 0.7.1 ([@frenck] - [#52405]) ([wled docs]) (beta fix) +- Bump eight sleep dependency to fix bug ([@raman325] - [#52408]) ([eight_sleep docs]) (beta fix) +- Import track_new_devices and scan_interval from yaml for nmap_tracker ([@bdraco] - [#52409]) ([nmap_tracker docs]) (beta fix) +- Drop statistic_id and source columns from statistics table ([@emontnemery] - [#52417]) ([recorder docs]) ([sensor docs]) (beta fix) +- Upgrade aioimaplib to 0.9.0 ([@frenck] - [#52422]) ([imap docs]) (beta fix) +- Fix typo in forecast_solar strings ([@milanmeu] - [#52430]) ([forecast_solar docs]) (beta fix) +- Avoid duplicated database queries when fetching statistics ([@emontnemery] - [#52433]) ([recorder docs]) (beta fix) +- Correct recorder table arguments ([@emontnemery] - [#52436]) ([recorder docs]) (beta fix) +- Abort existing reauth flow on entry removal ([@frenck] - [#52407]) (beta fix) +- Fix Fritz call deflection list ([@chemelli74] - [#52443]) ([fritz docs]) (beta fix) +- Fix Statistics recorder migration order ([@frenck] - [#52449]) ([recorder docs]) (beta fix) +- Bump gios library to version 1.0.2 ([@bieniu] - [#52527]) ([gios docs]) (beta fix) +- Fix Statistics recorder migration path by dropping in pairs ([@frenck] - [#52453]) ([recorder docs]) (beta fix) +- Bump aiohomekit to 0.4.1 ([@bdraco] - [#52472]) ([homekit_controller docs]) (beta fix) +- Revert "Force SimpliSafe to reauthenticate with a password (#51528)" ([@bachya] - [#52484]) ([simplisafe docs]) (beta fix) +- Remove empty hosts and excludes from nmap configuration ([@bdraco] - [#52489]) ([nmap_tracker docs]) (beta fix) +- Fix MODBUS connection type rtuovertcp does not connect ([@janiversen] - [#52505]) ([modbus docs]) (beta fix) +- Bump HAP-python to 3.5.1 ([@bdraco] - [#52508]) ([homekit docs]) (beta fix) +- Remove problematic/redudant db migration happning schema 15 ([@frenck] - [#52541]) ([recorder docs]) (beta fix) +- Update list of supported Coinbase wallet currencies ([@TomBrien] - [#52545]) ([coinbase docs]) (beta fix) +- Bump zeroconf to 0.32.1 ([@bdraco] - [#52547]) ([zeroconf docs]) (beta fix) +- Bump pysma version to 0.6.2 ([@rklomp] - [#52553]) ([sma docs]) (beta fix) +- Update the ip/port in the homekit_controller config entry when it changes ([@bdraco] - [#52554]) ([homekit_controller docs]) (beta fix) +- Bump up zha dependencies ([@Adminiuga] - [#52555]) ([zha docs]) (beta fix) +- Bump aiohomekit to 0.4.2 ([@bdraco] - [#52560]) ([homekit_controller docs]) (beta fix) +- Fix unavailable entity capable of triggering non-numerical warning in Threshold sensor ([@frenck] - [#52563]) ([threshold docs]) (beta fix) +- Bump pyeight version to 0.1.9 ([@raman325] - [#52568]) ([eight_sleep docs]) (beta fix) +- Update frontend to 20210706.0 ([@bramkragten] - [#52577]) ([frontend docs]) (beta fix) +- Update Somfy to reduce calls to /site entrypoint ([@tetienne] - [#51572]) ([somfy docs]) (beta fix) +- Don't raise when setting HVAC mode without a mode ZwaveValue ([@raman325] - [#52444]) ([zwave_js docs]) (beta fix) +- Fix Sensibo timeout exceptions ([@thecode] - [#52513]) ([sensibo docs]) (beta fix) +- Fix update of Xiaomi Miio vacuum taking too long ([@ondras12345] - [#52539]) ([xiaomi_miio docs]) (beta fix) +- Fresh attempt at SimpliSafe auto-relogin ([@bachya] - [#52567]) ([simplisafe docs]) (beta fix) +- Revert nmap_tracker to 2021.6 version ([@bdraco] - [#52573]) ([nmap_tracker docs]) (beta fix) +- Make use of entry id rather than unique id when storing deconz entry in hass.data ([@Kane610] - [#52584]) ([deconz docs]) (beta fix) +- Fix Fritz Wi-Fi 6 networks with same name as other Wi-Fi ([@chemelli74] - [#52588]) ([fritz docs]) (beta fix) +- Fix mysensors rgb light ([@firstof9] - [#52604]) ([mysensors docs]) (beta fix) +- Bump up ZHA dependencies ([@Adminiuga] - [#52611]) ([zha docs]) (beta fix) +- Fix deadlock at shutdown with python 3.9 ([@bdraco] - [#52613]) (beta fix) +- Fix broadlink creating duplicate unique IDs ([@frenck] - [#52621]) ([broadlink docs]) (beta fix) +- Update frontend to 20210707.0 ([@bramkragten] - [#52624]) ([frontend docs]) (beta fix) {% enddetails %} @@ -1524,6 +1590,7 @@ As of this release, both attributes are available as entities, making it possibl [#51558]: https://github.com/home-assistant/core/pull/51558 [#51561]: https://github.com/home-assistant/core/pull/51561 [#51569]: https://github.com/home-assistant/core/pull/51569 +[#51572]: https://github.com/home-assistant/core/pull/51572 [#51574]: https://github.com/home-assistant/core/pull/51574 [#51575]: https://github.com/home-assistant/core/pull/51575 [#51576]: https://github.com/home-assistant/core/pull/51576 @@ -1723,6 +1790,7 @@ As of this release, both attributes are available as entities, making it possibl [#52018]: https://github.com/home-assistant/core/pull/52018 [#52019]: https://github.com/home-assistant/core/pull/52019 [#52021]: https://github.com/home-assistant/core/pull/52021 +[#52022]: https://github.com/home-assistant/core/pull/52022 [#52026]: https://github.com/home-assistant/core/pull/52026 [#52032]: https://github.com/home-assistant/core/pull/52032 [#52033]: https://github.com/home-assistant/core/pull/52033 @@ -1891,6 +1959,7 @@ As of this release, both attributes are available as entities, making it possibl [#52322]: https://github.com/home-assistant/core/pull/52322 [#52324]: https://github.com/home-assistant/core/pull/52324 [#52327]: https://github.com/home-assistant/core/pull/52327 +[#52330]: https://github.com/home-assistant/core/pull/52330 [#52331]: https://github.com/home-assistant/core/pull/52331 [#52335]: https://github.com/home-assistant/core/pull/52335 [#52336]: https://github.com/home-assistant/core/pull/52336 @@ -1898,12 +1967,63 @@ As of this release, both attributes are available as entities, making it possibl [#52338]: https://github.com/home-assistant/core/pull/52338 [#52340]: https://github.com/home-assistant/core/pull/52340 [#52341]: https://github.com/home-assistant/core/pull/52341 +[#52364]: https://github.com/home-assistant/core/pull/52364 +[#52365]: https://github.com/home-assistant/core/pull/52365 +[#52374]: https://github.com/home-assistant/core/pull/52374 +[#52380]: https://github.com/home-assistant/core/pull/52380 +[#52386]: https://github.com/home-assistant/core/pull/52386 +[#52388]: https://github.com/home-assistant/core/pull/52388 +[#52392]: https://github.com/home-assistant/core/pull/52392 +[#52393]: https://github.com/home-assistant/core/pull/52393 +[#52401]: https://github.com/home-assistant/core/pull/52401 +[#52404]: https://github.com/home-assistant/core/pull/52404 +[#52405]: https://github.com/home-assistant/core/pull/52405 +[#52407]: https://github.com/home-assistant/core/pull/52407 +[#52408]: https://github.com/home-assistant/core/pull/52408 +[#52409]: https://github.com/home-assistant/core/pull/52409 +[#52417]: https://github.com/home-assistant/core/pull/52417 +[#52422]: https://github.com/home-assistant/core/pull/52422 +[#52430]: https://github.com/home-assistant/core/pull/52430 +[#52433]: https://github.com/home-assistant/core/pull/52433 +[#52436]: https://github.com/home-assistant/core/pull/52436 +[#52443]: https://github.com/home-assistant/core/pull/52443 +[#52444]: https://github.com/home-assistant/core/pull/52444 +[#52449]: https://github.com/home-assistant/core/pull/52449 +[#52453]: https://github.com/home-assistant/core/pull/52453 +[#52472]: https://github.com/home-assistant/core/pull/52472 +[#52484]: https://github.com/home-assistant/core/pull/52484 +[#52489]: https://github.com/home-assistant/core/pull/52489 +[#52505]: https://github.com/home-assistant/core/pull/52505 +[#52508]: https://github.com/home-assistant/core/pull/52508 +[#52513]: https://github.com/home-assistant/core/pull/52513 +[#52527]: https://github.com/home-assistant/core/pull/52527 +[#52539]: https://github.com/home-assistant/core/pull/52539 +[#52541]: https://github.com/home-assistant/core/pull/52541 +[#52545]: https://github.com/home-assistant/core/pull/52545 +[#52547]: https://github.com/home-assistant/core/pull/52547 +[#52553]: https://github.com/home-assistant/core/pull/52553 +[#52554]: https://github.com/home-assistant/core/pull/52554 +[#52555]: https://github.com/home-assistant/core/pull/52555 +[#52560]: https://github.com/home-assistant/core/pull/52560 +[#52563]: https://github.com/home-assistant/core/pull/52563 +[#52567]: https://github.com/home-assistant/core/pull/52567 +[#52568]: https://github.com/home-assistant/core/pull/52568 +[#52573]: https://github.com/home-assistant/core/pull/52573 +[#52577]: https://github.com/home-assistant/core/pull/52577 +[#52584]: https://github.com/home-assistant/core/pull/52584 +[#52588]: https://github.com/home-assistant/core/pull/52588 +[#52604]: https://github.com/home-assistant/core/pull/52604 +[#52611]: https://github.com/home-assistant/core/pull/52611 +[#52613]: https://github.com/home-assistant/core/pull/52613 +[#52621]: https://github.com/home-assistant/core/pull/52621 +[#52624]: https://github.com/home-assistant/core/pull/52624 [@ASMfreaK]: https://github.com/ASMfreaK [@Adminiuga]: https://github.com/Adminiuga [@Bre77]: https://github.com/Bre77 [@ColinRobbins]: https://github.com/ColinRobbins [@Danielhiversen]: https://github.com/Danielhiversen [@Drafteed]: https://github.com/Drafteed +[@FrederikBolding]: https://github.com/FrederikBolding [@Jc2k]: https://github.com/Jc2k [@JeffLIrion]: https://github.com/JeffLIrion [@Kane610]: https://github.com/Kane610 @@ -1942,6 +2062,7 @@ As of this release, both attributes are available as entities, making it possibl [@bjpetit]: https://github.com/bjpetit [@blawford]: https://github.com/blawford [@bramkragten]: https://github.com/bramkragten +[@bshep]: https://github.com/bshep [@cgomesu]: https://github.com/cgomesu [@cgtobi]: https://github.com/cgtobi [@chemelli74]: https://github.com/chemelli74 @@ -1964,6 +2085,7 @@ As of this release, both attributes are available as entities, making it possibl [@exxamalte]: https://github.com/exxamalte [@farmio]: https://github.com/farmio [@felipediel]: https://github.com/felipediel +[@firstof9]: https://github.com/firstof9 [@fnoorian]: https://github.com/fnoorian [@franc6]: https://github.com/franc6 [@fredrike]: https://github.com/fredrike @@ -1992,6 +2114,7 @@ As of this release, both attributes are available as entities, making it possibl [@nickw444]: https://github.com/nickw444 [@nielstron]: https://github.com/nielstron [@ollo69]: https://github.com/ollo69 +[@ondras12345]: https://github.com/ondras12345 [@puddly]: https://github.com/puddly [@pvizeli]: https://github.com/pvizeli [@raman325]: https://github.com/raman325 @@ -2006,6 +2129,7 @@ As of this release, both attributes are available as entities, making it possibl [@shocklateboy92]: https://github.com/shocklateboy92 [@starkillerOG]: https://github.com/starkillerOG [@stefano055415]: https://github.com/stefano055415 +[@tetienne]: https://github.com/tetienne [@thecode]: https://github.com/thecode [@tkdrob]: https://github.com/tkdrob [@tschamm]: https://github.com/tschamm @@ -2034,6 +2158,7 @@ As of this release, both attributes are available as entities, making it possibl [axis docs]: /integrations/axis/ [azure_event_hub docs]: /integrations/azure_event_hub/ [binary_sensor docs]: /integrations/binary_sensor/ +[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ [bmw_connected_drive docs]: /integrations/bmw_connected_drive/ [bosch_shc docs]: /integrations/bosch_shc/ [braviatv docs]: /integrations/braviatv/ @@ -2064,6 +2189,7 @@ As of this release, both attributes are available as entities, making it possibl [dunehd docs]: /integrations/dunehd/ [ecobee docs]: /integrations/ecobee/ [ee_brightbox docs]: /integrations/ee_brightbox/ +[eight_sleep docs]: /integrations/eight_sleep/ [eliqonline docs]: /integrations/eliqonline/ [enphase_envoy docs]: /integrations/enphase_envoy/ [entur_public_transport docs]: /integrations/entur_public_transport/ @@ -2083,6 +2209,7 @@ As of this release, both attributes are available as entities, making it possibl [geo_rss_events docs]: /integrations/geo_rss_events/ [geonetnz_quakes docs]: /integrations/geonetnz_quakes/ [geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[gios docs]: /integrations/gios/ [goalzero docs]: /integrations/goalzero/ [google_assistant docs]: /integrations/google_assistant/ [google_translate docs]: /integrations/google_translate/ @@ -2107,6 +2234,7 @@ As of this release, both attributes are available as entities, making it possibl [humidifier docs]: /integrations/humidifier/ [hyperion docs]: /integrations/hyperion/ [ign_sismologia docs]: /integrations/ign_sismologia/ +[imap docs]: /integrations/imap/ [input_boolean docs]: /integrations/input_boolean/ [ios docs]: /integrations/ios/ [ipp docs]: /integrations/ipp/ @@ -2150,6 +2278,7 @@ As of this release, both attributes are available as entities, making it possibl [nuki docs]: /integrations/nuki/ [number docs]: /integrations/number/ [onvif docs]: /integrations/onvif/ +[openuv docs]: /integrations/openuv/ [openweathermap docs]: /integrations/openweathermap/ [ozw docs]: /integrations/ozw/ [philips_js docs]: /integrations/philips_js/ @@ -2179,6 +2308,7 @@ As of this release, both attributes are available as entities, making it possibl [search docs]: /integrations/search/ [select docs]: /integrations/select/ [sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ [sensor docs]: /integrations/sensor/ [sia docs]: /integrations/sia/ [simplisafe docs]: /integrations/simplisafe/ @@ -2186,6 +2316,7 @@ As of this release, both attributes are available as entities, making it possibl [smarttub docs]: /integrations/smarttub/ [smtp docs]: /integrations/smtp/ [solaredge docs]: /integrations/solaredge/ +[somfy docs]: /integrations/somfy/ [sonarr docs]: /integrations/sonarr/ [sonos docs]: /integrations/sonos/ [speedtestdotnet docs]: /integrations/speedtestdotnet/ @@ -2205,6 +2336,7 @@ As of this release, both attributes are available as entities, making it possibl [ted5000 docs]: /integrations/ted5000/ [telegram_bot docs]: /integrations/telegram_bot/ [template docs]: /integrations/template/ +[threshold docs]: /integrations/threshold/ [tibber docs]: /integrations/tibber/ [tile docs]: /integrations/tile/ [todoist docs]: /integrations/todoist/ From 100cfa585c59df9d71063c274b8a179336fd7dca Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 7 Jul 2021 14:38:19 +0200 Subject: [PATCH 25/25] Sync codebase with docs for 2021.7 --- CODEOWNERS | 21 ++++++++++++------- source/_integrations/ambee.markdown | 3 ++- source/_integrations/blebox.markdown | 3 ++- source/_integrations/bosch_shc.markdown | 1 + source/_integrations/braviatv.markdown | 1 + source/_integrations/coinbase.markdown | 4 +++- source/_integrations/dsmr.markdown | 1 + source/_integrations/esphome.markdown | 2 ++ source/_integrations/forecast_solar.markdown | 5 +++-- source/_integrations/freedompro.markdown | 5 ++++- source/_integrations/group.markdown | 1 + source/_integrations/hyperion.markdown | 1 + source/_integrations/knx.markdown | 1 - source/_integrations/meteoalarm.markdown | 2 +- source/_integrations/min_max.markdown | 2 +- source/_integrations/modern_forms.markdown | 3 +-- source/_integrations/philips_js.markdown | 1 + .../rituals_perfume_genie.markdown | 1 - source/_integrations/seventeentrack.markdown | 2 -- source/_integrations/sia.markdown | 1 + source/_integrations/sma.markdown | 4 ++-- source/_integrations/surepetcare.markdown | 1 + source/_integrations/wled.markdown | 3 +-- .../_integrations/yamaha_musiccast.markdown | 4 ++-- 24 files changed, 45 insertions(+), 28 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index adca0b69a83..7583e9b4247 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -23,6 +23,7 @@ source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy source/_integrations/almond.markdown @gcampax @balloob source/_integrations/alpha_vantage.markdown @fabaff +source/_integrations/ambee.markdown @frenck source/_integrations/ambiclimate.markdown @danielhiversen source/_integrations/ambient_station.markdown @bachya source/_integrations/analytics.markdown @home-assistant/core @ludeeus @@ -54,14 +55,14 @@ source/_integrations/azure_service_bus.markdown @hfurubotten source/_integrations/beewi_smartclim.markdown @alemuro source/_integrations/bitcoin.markdown @fabaff source/_integrations/bizkaibus.markdown @UgaitzEtxebarria -source/_integrations/blebox.markdown @gadgetmobile +source/_integrations/blebox.markdown @bbx-a @bbx-jp source/_integrations/blink.markdown @fronzbot source/_integrations/blueprint.markdown @home-assistant/core source/_integrations/bmp280.markdown @belidzs source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe source/_integrations/bond.markdown @prystupa source/_integrations/bosch_shc.markdown @tschamm -source/_integrations/braviatv.markdown @bieniu +source/_integrations/braviatv.markdown @bieniu @Drafteed source/_integrations/broadlink.markdown @danielhiversen @felipediel source/_integrations/brother.markdown @bieniu source/_integrations/brunt.markdown @eavanvalkenburg @@ -77,6 +78,7 @@ source/_integrations/cisco_webex_teams.markdown @fbradyirl source/_integrations/climacell.markdown @raman325 source/_integrations/cloud.markdown @home-assistant/cloud source/_integrations/cloudflare.markdown @ludeeus @ctalkington +source/_integrations/coinbase.markdown @tombrien source/_integrations/color_extractor.markdown @GenericStudent source/_integrations/comfoconnect.markdown @michaelarnauts source/_integrations/compensation.markdown @Petro31 @@ -107,7 +109,7 @@ source/_integrations/digital_ocean.markdown @fabaff source/_integrations/directv.markdown @ctalkington source/_integrations/discogs.markdown @thibmaek source/_integrations/doorbird.markdown @oblogic7 @bdraco -source/_integrations/dsmr.markdown @Robbie1221 +source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr_reader.markdown @depl0y source/_integrations/dunehd.markdown @bieniu source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @Hummel95 @@ -135,7 +137,7 @@ source/_integrations/ephember.markdown @ttroy50 source/_integrations/epson.markdown @pszafer source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/eq3btsmart.markdown @rytilahti -source/_integrations/esphome.markdown @OttoWinter +source/_integrations/esphome.markdown @OttoWinter @jesserockz source/_integrations/essent.markdown @TheLastProject source/_integrations/evohome.markdown @zxdavb source/_integrations/ezviz.markdown @RenierM26 @baqs @@ -151,10 +153,12 @@ source/_integrations/flo.markdown @dmulcahey source/_integrations/flock.markdown @fabaff source/_integrations/flume.markdown @ChrisMandich @bdraco source/_integrations/flunearyou.markdown @bachya +source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck source/_integrations/forked_daapd.markdown @uvjustin source/_integrations/fortios.markdown @kimfrellsen source/_integrations/foscam.markdown @skgsergio source/_integrations/freebox.markdown @hacf-fr @Quentame +source/_integrations/freedompro.markdown @stefano055415 source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 source/_integrations/fritzbox.markdown @mib1185 source/_integrations/fronius.markdown @nielstron @@ -285,6 +289,7 @@ source/_integrations/minecraft_server.markdown @elmurato source/_integrations/minio.markdown @tkislan source/_integrations/mobile_app.markdown @robbiet480 source/_integrations/modbus.markdown @adamchengtkc @janiversen @vzahradnik +source/_integrations/modern_forms.markdown @wonderslug source/_integrations/monoprice.markdown @etsinko @OnFreund source/_integrations/moon.markdown @fabaff source/_integrations/motion_blinds.markdown @starkillerOG @@ -406,12 +411,12 @@ source/_integrations/scrape.markdown @fabaff source/_integrations/screenlogic.markdown @dieselrabbit source/_integrations/script.markdown @home-assistant/core source/_integrations/search.markdown @home-assistant/core +source/_integrations/select.markdown @home-assistant/core source/_integrations/sense.markdown @kbickar source/_integrations/sensibo.markdown @andrey-git source/_integrations/sentry.markdown @dcramer @frenck source/_integrations/serial.markdown @fabaff source/_integrations/seven_segments.markdown @fabaff -source/_integrations/seventeentrack.markdown @bachya source/_integrations/sharkiq.markdown @ajmarks source/_integrations/shell_command.markdown @home-assistant/core source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @@ -462,11 +467,11 @@ source/_integrations/subaru.markdown @G-Two source/_integrations/suez_water.markdown @ooii source/_integrations/sun.markdown @Swamp-Ig source/_integrations/supla.markdown @mwegrzynek -source/_integrations/surepetcare.markdown @benleb +source/_integrations/surepetcare.markdown @benleb @danielhiversen source/_integrations/swiss_hydrological_data.markdown @fabaff source/_integrations/swiss_public_transport.markdown @fabaff source/_integrations/switchbot.markdown @danielhiversen -source/_integrations/switcher_kis.markdown @tomerfi +source/_integrations/switcher_kis.markdown @tomerfi @thecode source/_integrations/switchmate.markdown @danielhiversen source/_integrations/syncthing.markdown @zhulik source/_integrations/syncthru.markdown @nielstron @@ -550,7 +555,7 @@ source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG source/_integrations/xiaomi_tv.markdown @simse source/_integrations/xmpp.markdown @fabaff @flowolf source/_integrations/yale_smart_alarm.markdown @gjohansson-ST -source/_integrations/yamaha_musiccast.markdown @jalmeroth +source/_integrations/yamaha_musiccast.markdown @vigonotion @micha91 source/_integrations/yandex_transport.markdown @rishatik92 @devbis source/_integrations/yeelight.markdown @rytilahti @zewelor @shenxn source/_integrations/yeelightsunflower.markdown @lindsaymarkward diff --git a/source/_integrations/ambee.markdown b/source/_integrations/ambee.markdown index 0d3a96accda..b49a3efb67b 100644 --- a/source/_integrations/ambee.markdown +++ b/source/_integrations/ambee.markdown @@ -8,10 +8,11 @@ ha_release: 2021.7 ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - - "@frenck" + - '@frenck' ha_domain: ambee ha_platforms: - sensor +ha_quality_scale: platinum --- The Ambee integration integrations the [Ambee](https://www.getambee.com/) API diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index cf259fe49fb..bddded9ca45 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -7,7 +7,8 @@ ha_release: '0.110' ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - - '@gadgetmobile' + - '@bbx-a' + - '@bbx-jp' ha_domain: blebox ha_platforms: - air_quality diff --git a/source/_integrations/bosch_shc.markdown b/source/_integrations/bosch_shc.markdown index 29410ed8883..2948a2add76 100644 --- a/source/_integrations/bosch_shc.markdown +++ b/source/_integrations/bosch_shc.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_domain: bosch_shc ha_platforms: - binary_sensor + - sensor ha_zeroconf: true --- diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index eb4c88986cd..c6748992c01 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -8,6 +8,7 @@ ha_release: 0.23 ha_iot_class: Local Polling ha_codeowners: - '@bieniu' + - '@Drafteed' ha_domain: braviatv ha_config_flow: true ha_platforms: diff --git a/source/_integrations/coinbase.markdown b/source/_integrations/coinbase.markdown index 36b1f1afb80..7be62387798 100644 --- a/source/_integrations/coinbase.markdown +++ b/source/_integrations/coinbase.markdown @@ -9,6 +9,9 @@ ha_iot_class: Cloud Polling ha_domain: coinbase ha_platforms: - sensor +ha_codeowners: + - '@tombrien' +ha_config_flow: true --- The `coinbase` integration lets you access account balances and exchange rates from [Coinbase](https://coinbase.com). @@ -32,4 +35,3 @@ Wallet balances to report: Exchange rates to report: description: Optional list of currencies to create exchange rate sensors for. {% endconfiguration_basic %} - diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index a0a20536114..a286047c2ef 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_domain: dsmr ha_codeowners: - '@Robbie1221' + - '@frenck' ha_platforms: - sensor --- diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 54d58a8a515..aeef0935d96 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -9,6 +9,7 @@ ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - '@OttoWinter' + - '@jesserockz' ha_domain: esphome ha_zeroconf: true ha_platforms: @@ -18,6 +19,7 @@ ha_platforms: - cover - fan - light + - number - sensor - switch --- diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index 0d2265449c3..c627f7ca986 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -7,11 +7,12 @@ ha_release: 2021.7 ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - - "@klaasnicolaas" - - "@frenck" + - '@klaasnicolaas' + - '@frenck' ha_domain: forecast_solar ha_platforms: - sensor +ha_quality_scale: platinum --- The [Forecast.Solar](https://forecast.solar/) service provides solar production diff --git a/source/_integrations/freedompro.markdown b/source/_integrations/freedompro.markdown index 72748a4b703..37f1e97ff0c 100644 --- a/source/_integrations/freedompro.markdown +++ b/source/_integrations/freedompro.markdown @@ -4,12 +4,15 @@ description: Instructions for how to integrate Freedompro accessories within Hom ha_category: - Light ha_release: 2021.7 -ha_iot_class: Cloud Poll +ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@stefano055415' ha_domain: freedompro +ha_platforms: + - light --- + [Freedompro](https://freedompro.eu/), a company specialized in home automation, designs and manufactures products to make domotics affordable for everyone, installers and enthusiasts. [Freedompro Products](https://freedompro.eu/collections/easykon) are designed to be easy to use and practical and fast to install. This integration lets you control all [Freedompro](https://freedompro.eu/) accessories. diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index d60ec07c027..b7765ee2d4d 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -12,6 +12,7 @@ ha_domain: group ha_platforms: - cover - light + - media_player - notify --- diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index aa93c3e7158..0aa7376ef31 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -12,6 +12,7 @@ ha_quality_scale: platinum ha_config_flow: true ha_ssdp: true ha_platforms: + - camera - light - switch --- diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index b46492519a1..3da4e94f075 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -32,7 +32,6 @@ ha_platforms: - notify - number - scene - - select - sensor - switch - weather diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index 007bf1b7c30..7c89906436f 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -4,7 +4,7 @@ description: Instructions on how to set up MeteoAlarm binary sensors within Home logo: meteoalarm.png ha_category: Binary Sensor ha_release: 0.93 -ha_iot_class: Local Polling +ha_iot_class: Cloud Polling ha_codeowners: - '@rolfberkenbosch' ha_domain: meteoalarm diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index dc400344db4..fbc96d4ee0f 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -4,7 +4,7 @@ description: Instructions on how to integrate min/max sensors into Home Assistan ha_category: - Utility - Sensor -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_release: 0.31 ha_quality_scale: internal ha_codeowners: diff --git a/source/_integrations/modern_forms.markdown b/source/_integrations/modern_forms.markdown index 3d43c8d899b..467db7b17b6 100644 --- a/source/_integrations/modern_forms.markdown +++ b/source/_integrations/modern_forms.markdown @@ -7,10 +7,9 @@ ha_category: - Light - Sensor - Switch -ha_release: 2021.7 +ha_release: 2021.7 ha_iot_class: Local Polling ha_config_flow: true -ha_quality_scale: none ha_codeowners: - '@wonderslug' ha_domain: modern_forms diff --git a/source/_integrations/philips_js.markdown b/source/_integrations/philips_js.markdown index 979b477d082..cabd61f997a 100644 --- a/source/_integrations/philips_js.markdown +++ b/source/_integrations/philips_js.markdown @@ -12,6 +12,7 @@ ha_codeowners: ha_domain: philips_js ha_config_flow: true ha_platforms: + - light - media_player - remote --- diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown index e750e7cfc45..8c09ff58b22 100644 --- a/source/_integrations/rituals_perfume_genie.markdown +++ b/source/_integrations/rituals_perfume_genie.markdown @@ -16,7 +16,6 @@ ha_domain: rituals_perfume_genie ha_platforms: - binary_sensor - number - - select - sensor - switch --- diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index 4df39170ed5..d2f0e6913a6 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -5,8 +5,6 @@ ha_category: - Postal Service ha_release: 0.83 ha_iot_class: Cloud Polling -ha_codeowners: - - '@bachya' ha_domain: seventeentrack ha_platforms: - sensor diff --git a/source/_integrations/sia.markdown b/source/_integrations/sia.markdown index 990a73b3e62..0c1988fbd84 100644 --- a/source/_integrations/sia.markdown +++ b/source/_integrations/sia.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_domain: sia ha_platforms: - alarm_control_panel + - binary_sensor --- The SIA Alarm Systems integration provides integration with several alarm systems that implement the SIA Protocol, including [Ajax Systems](https://ajax.systems/). This protocol is listen-only, so does not allow you to turn on/off your alarm system, it just updates the state to reflect your alarm and allows you to act on that state, for instance turning on all lights and opening the curtains when the alarm triggers. The underlying package has support for different variants of SIA, including DC-09, DC-04 and a limited set of ADM-CID. If your alarm system uses the ADM-CID standard and it isn't working, please log an issue [here](https://github.com/eavanvalkenburg/pysiaalarm/issues/new). diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index 77c501247c1..bfb347e83d5 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -7,8 +7,8 @@ ha_iot_class: Local Polling ha_config_flow: true ha_release: 0.36 ha_codeowners: - - "@kellerza" - - "@rklomp" + - '@kellerza' + - '@rklomp' ha_domain: sma ha_platforms: - sensor diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown index 1f218f42007..e562dbffa1f 100644 --- a/source/_integrations/surepetcare.markdown +++ b/source/_integrations/surepetcare.markdown @@ -8,6 +8,7 @@ ha_release: 0.104 ha_iot_class: Cloud Polling ha_codeowners: - '@benleb' + - '@danielhiversen' ha_domain: surepetcare ha_platforms: - binary_sensor diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 85fe896d927..ad0bbc5cf70 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -6,7 +6,7 @@ ha_category: - Sensor - Switch ha_release: 0.102 -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_config_flow: true ha_quality_scale: platinum ha_codeowners: @@ -15,7 +15,6 @@ ha_domain: wled ha_zeroconf: true ha_platforms: - light - - select - sensor - switch --- diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index 3d0372c1c99..67355b698d1 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -1,12 +1,12 @@ --- -title: Yamaha MusicCast +title: MusicCast description: Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant. ha_category: - Media Player ha_release: 0.53 ha_codeowners: - - '@micha91' - '@vigonotion' + - '@micha91' ha_iot_class: Local Push ha_ssdp: true ha_config_flow: true