diff --git a/CODEOWNERS b/CODEOWNERS index 2d33b749660..25a89ba7f2d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -18,6 +18,7 @@ source/_integrations/aemet.markdown @noltari source/_integrations/agent_dvr.markdown @ispysoftware source/_integrations/airly.markdown @bieniu source/_integrations/airnow.markdown @asymworks +source/_integrations/airtouch4.markdown @LonePurpleWolf source/_integrations/airvisual.markdown @bachya source/_integrations/alarmdecoder.markdown @ajschmidt8 source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @@ -27,6 +28,7 @@ source/_integrations/alpha_vantage.markdown @fabaff source/_integrations/ambee.markdown @frenck source/_integrations/ambiclimate.markdown @danielhiversen source/_integrations/ambient_station.markdown @bachya +source/_integrations/amcrest.markdown @flacjacket source/_integrations/analytics.markdown @home-assistant/core @ludeeus source/_integrations/androidtv.markdown @JeffLIrion source/_integrations/apache_kafka.markdown @bachya @@ -107,7 +109,6 @@ source/_integrations/dexcom.markdown @gagebenne source/_integrations/dhcp.markdown @bdraco source/_integrations/dht.markdown @thegardenmonkey 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 @frenck @@ -149,6 +150,7 @@ source/_integrations/filter.markdown @dgomes source/_integrations/fireservicerota.markdown @cyberjunky source/_integrations/firmata.markdown @DaAwesomeP source/_integrations/fixer.markdown @fabaff +source/_integrations/fjaraskupan.markdown @elupus source/_integrations/flick_electric.markdown @ZephireNZ source/_integrations/flipr.markdown @cnico source/_integrations/flo.markdown @dmulcahey @@ -174,6 +176,7 @@ source/_integrations/geo_rss_events.markdown @exxamalte source/_integrations/geonetnz_quakes.markdown @exxamalte source/_integrations/geonetnz_volcano.markdown @exxamalte source/_integrations/gios.markdown @bieniu +source/_integrations/github.markdown @timmo001 @ludeeus source/_integrations/gitter.markdown @fabaff source/_integrations/glances.markdown @fabaff @engrbm87 source/_integrations/goalzero.markdown @tkdrob @@ -184,7 +187,7 @@ source/_integrations/gpsd.markdown @fabaff source/_integrations/gree.markdown @cmroche source/_integrations/greeneye_monitor.markdown @jkeljo source/_integrations/group.markdown @home-assistant/core -source/_integrations/growatt_server.markdown @indykoning @muppet3000 +source/_integrations/growatt_server.markdown @indykoning @muppet3000 @JasperPlant source/_integrations/guardian.markdown @bachya source/_integrations/habitica.markdown @ASMfreaK @leikoilja source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @@ -303,10 +306,11 @@ source/_integrations/msteams.markdown @peroyvind source/_integrations/mullvad.markdown @meichthys source/_integrations/mutesync.markdown @currentoor source/_integrations/my.markdown @home-assistant/core -source/_integrations/myq.markdown @bdraco +source/_integrations/myq.markdown @bdraco @ehendrix23 source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer source/_integrations/mystrom.markdown @fabaff source/_integrations/nam.markdown @bieniu +source/_integrations/nanoleaf.markdown @milanmeu source/_integrations/neato.markdown @dshokouhi @Santobert source/_integrations/nederlandse_spoorwegen.markdown @YarmoM source/_integrations/nello.markdown @pschmitt @@ -321,6 +325,7 @@ source/_integrations/nfandroidtv.markdown @tkdrob source/_integrations/nightscout.markdown @marciogranzotto source/_integrations/nilu.markdown @hfurubotten source/_integrations/nissan_leaf.markdown @filcole +source/_integrations/nmap_tracker.markdown @bdraco source/_integrations/nmbs.markdown @thibmaek source/_integrations/no_ip.markdown @fabaff source/_integrations/noaa_tides.markdown @jdelaney72 @@ -354,6 +359,7 @@ source/_integrations/orangepi_gpio.markdown @pascallj source/_integrations/oru.markdown @bvlaicu source/_integrations/ovo_energy.markdown @timmo001 source/_integrations/ozw.markdown @cgarwood @marcelveldt @MartinHjelmare +source/_integrations/p1_monitor.markdown @klaasnicolaas source/_integrations/panel_custom.markdown @home-assistant/frontend source/_integrations/panel_iframe.markdown @home-assistant/frontend source/_integrations/pcal9535a.markdown @Shulyaka @@ -394,6 +400,7 @@ source/_integrations/rainmachine.markdown @bachya source/_integrations/random.markdown @fabaff source/_integrations/recollect_waste.markdown @bachya source/_integrations/rejseplanen.markdown @DarkFox +source/_integrations/renault.markdown @epenet source/_integrations/repetier.markdown @MTrab source/_integrations/rflink.markdown @javicalle source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221 @@ -485,7 +492,7 @@ source/_integrations/synology_dsm.markdown @hacf-fr @Quentame @mib1185 source/_integrations/synology_srm.markdown @aerialls source/_integrations/syslog.markdown @fabaff source/_integrations/system_bridge.markdown @timmo001 -source/_integrations/tado.markdown @michaelarnauts @bdraco @noltari +source/_integrations/tado.markdown @michaelarnauts @noltari source/_integrations/tag.markdown @balloob @dmulcahey source/_integrations/tahoma.markdown @philklei source/_integrations/tankerkoenig.markdown @guillempages @@ -507,6 +514,8 @@ source/_integrations/toon.markdown @frenck source/_integrations/totalconnect.markdown @austinmroczek source/_integrations/tplink.markdown @rytilahti @thegardenmonkey source/_integrations/traccar.markdown @ludeeus +source/_integrations/tractive.markdown @Danielhiversen @zhulik @bieniu +source/_integrations/tradfri.markdown @janiversen source/_integrations/trafikverket_train.markdown @endor-force source/_integrations/trafikverket_weatherstation.markdown @endor-force source/_integrations/transmission.markdown @engrbm87 @JPHutchins @@ -521,8 +530,9 @@ source/_integrations/upb.markdown @gwww source/_integrations/upc_connect.markdown @pvizeli @fabaff source/_integrations/upcloud.markdown @scop source/_integrations/updater.markdown @home-assistant/core -source/_integrations/upnp.markdown @StevenLooman +source/_integrations/upnp.markdown @StevenLooman @ehendrix23 source/_integrations/uptimerobot.markdown @ludeeus +source/_integrations/usb.markdown @bdraco source/_integrations/usgs_earthquakes_feed.markdown @exxamalte source/_integrations/utility_meter.markdown @dgomes source/_integrations/velbus.markdown @Cereal2nd @brefra @@ -558,13 +568,13 @@ source/_integrations/worldclock.markdown @fabaff source/_integrations/xbox.markdown @hunterjm source/_integrations/xbox_live.markdown @MartinHjelmare source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi -source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG +source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG @bieniu 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 @vigonotion @micha91 source/_integrations/yandex_transport.markdown @rishatik92 @devbis -source/_integrations/yeelight.markdown @rytilahti @zewelor @shenxn +source/_integrations/yeelight.markdown @rytilahti @zewelor @shenxn @starkillerOG source/_integrations/yeelightsunflower.markdown @lindsaymarkward source/_integrations/yi.markdown @bachya source/_integrations/youless.markdown @gjong diff --git a/_config.yml b/_config.yml index 2ed288f5ae7..3365ff3ecea 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2021 -current_minor_version: 8 -current_patch_version: 8 -date_released: 2021-08-18 +current_minor_version: 9 +current_patch_version: 0 +date_released: 2021-09-01 # 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/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index d19bd022e79..a1a55acb75c 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -232,6 +232,41 @@ The same thing can also be expressed as a filter: {% endraw %} +### Areas + +- `area_id(lookup_value)` returns the area ID for a given device ID, entity ID, or area name. Can also be used as a filter. +- `area_name(lookup_value)` returns the area name for a given device ID, entity ID, or area ID. Can also be used as a filter. + +#### Areas examples + +{% raw %} + +```text +{{ area_id('Living Room') }} # deadbeefdeadbeefdeadbeefdeadbeef +``` + +```text +{{ area_id('my_device_id') }} # deadbeefdeadbeefdeadbeefdeadbeef +``` + +```text +{{ area_id('sensor.sony') }} # deadbeefdeadbeefdeadbeefdeadbeef +``` + +```text +{{ area_name('deadbeefdeadbeefdeadbeefdeadbeef') }} # Living Room +``` + +```text +{{ area_name('my_device_id') }} # Living Room +``` + +```text +{{ area_name('sensor.sony') }} # Living Room +``` + +{% endraw %} + ### Time `now()` and `utcnow()` are not supported in [limited templates](#limited-templates). diff --git a/source/_docs/energy.markdown b/source/_docs/energy.markdown index c794713ea27..8002317c25e 100644 --- a/source/_docs/energy.markdown +++ b/source/_docs/energy.markdown @@ -13,6 +13,8 @@ Home Assistant is an open platform and so home energy management is not restrict - [Integrate your energy use from the electricity grid](/docs/energy/electricity-grid/) - [Integrate your solar panels](/docs/energy/solar-panels/) +- [Integrate your home batteries](/docs/energy/battery/) +- [Integrate your gas consumption](/docs/energy/gas/) - [Integrate individual devices](/docs/energy/individual-devices/) Visual representation of how all different energy forms relate. diff --git a/source/_docs/energy/battery.markdown b/source/_docs/energy/battery.markdown new file mode 100644 index 00000000000..8453cfa48a0 --- /dev/null +++ b/source/_docs/energy/battery.markdown @@ -0,0 +1,28 @@ +--- +title: "Integrating your home batteries" +description: "Learn how to add information about your home batteries to Home Assistant home energy management." +--- + +A home battery allows homes to store energy when you are either producing more solar power than you're using, or store energy from the grid if the current price is low. + +Home Assistant allows you to track how much energy flows from/to your battery. + +## Hardware + +Home Assistant will need to know the amount of energy flowing from/to your batteries. This data can be tracked in various ways. + +### Provided by the battery + +Some battery vendors have an API to integrate the data into your Home Assistant instance. An example is [Tesla Powerwall](/integrations/powerwall/). + +### Using a CT clamp sensor + +CT clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own. + +The off-the-shelf solution that we advise is the [Shelly EM](https://shop.shelly.cloud/shelly-em-2-x-120a-clamp-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality integration. + +You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started. + +_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring. Your qualified installer will know how to do this._ + +_Disclaimer: Some links on this page are affiliate links._ diff --git a/source/_docs/energy/gas.markdown b/source/_docs/energy/gas.markdown new file mode 100644 index 00000000000..fd9898bb9d7 --- /dev/null +++ b/source/_docs/energy/gas.markdown @@ -0,0 +1,25 @@ +--- +title: "Integrating your gas usage" +description: "Learn how to add information about your gas usage to Home Assistant home energy management." +--- + +Some homes are connected to gas. Gas is being used to heat water, cook and heat up the home. + +Home Assistant allows you to track your gas usage and easily compare it against your energy usage for the same period of time. + +## Hardware + +Home Assistant will need to know the amount of gas that is being consumed. + +### Connect to your meter + +The best way to get this data is directly from your gas meter that sits between your house and the grid. In certain countries these meters contain standardized ways of reading out the information locally or provide this information via the electricity meter. + +#### Connect using a P1 port + +The P1 port is a standardized port on electricity meters in the Netherlands, Belgium and Luxembourg which also provides gas consumption information. A P1 reader can connect to this port and receive real-time information. + +We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to develop [SlimmeLezer](https://www.slimmelezer.nl). It's an affordable P1 reader powered by [ESPHome](https://esphome.io) that will seamlessly integrate this information in Home Assistant. It is being sold on [his website](https://www.slimmelezer.nl) and the firmware is open source [on GitHub](https://github.com/zuidwijk/dsmr). + +![Photo of SlimmeLezer attached to a smart electricity meter](/images/docs/energy/slimmelezer.jpg) + diff --git a/source/_integrations/airtouch4.markdown b/source/_integrations/airtouch4.markdown new file mode 100644 index 00000000000..8a07e129825 --- /dev/null +++ b/source/_integrations/airtouch4.markdown @@ -0,0 +1,23 @@ +--- +title: AirTouch 4 +description: Instructions on how to integrate the AirTouch 4 A/C controller into Home Assistant. +ha_category: Climate +ha_release: 2021.9 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@LonePurpleWolf' +ha_domain: airtouch4 +ha_platforms: + - climate +--- + +The AirTouch 4 integration allows you to control Ducted Air Conditioning Systems that are using the [AirTouch 4](https://www.airtouch.net.au/airtouch/airtouch-4/) Controller. Currently, this integration only supports AirTouch 4 controllers with the Individual Temperature Control (ITC) modules. + +{% include integrations/config_flow.md %} + +## Entities + +### Climate + +The integration will create a climate entity for each zone that is temperature-controlled. diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index b0f9dd35e99..cd48b341306 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -13,6 +13,8 @@ ha_platforms: - binary_sensor - camera - sensor +ha_codeowners: + - '@flacjacket' --- The `amcrest` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) or Dahua IP camera or doorbell in Home Assistant. diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index ecc25da24fd..24416256067 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -66,6 +66,7 @@ The full list of supported binary sensor device classes is below - **safety**: `on` means unsafe, `off` means safe - **smoke**: `on` means smoke detected, `off` means no smoke (clear) - **sound**: `on` means sound detected, `off` means no sound (clear) +- **update**: `on` means update available, `off` means up-to-date - **vibration**: `on` means vibration detected, `off` means no vibration (clear) - **window**: `on` means open, `off` means closed diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown index f6beaf1180f..c77ae6ff944 100644 --- a/source/_integrations/calendar.google.markdown +++ b/source/_integrations/calendar.google.markdown @@ -87,7 +87,7 @@ The next time you run or restart Home Assistant, you should find a new notificat ## Calendar Configuration -With every restart all calendars of the configured Google account will get pulled and added to the `google_calendars.yaml` and preconfigured as a single entity. By setting the 'track' variable to `true` the calendar will get monitored for new events which can be used for automations and its content is shown on the 'Calendar' dashboard (mind 'max_results' is set to 5 by default). +With every restart all calendars of the configured Google account will get pulled and added to the `google_calendars.yaml` and preconfigured as a single entity. By setting the 'track' variable to `true` the calendar will get monitored for new events which can be used for automations and its content is shown on the 'Calendar' dashboard. A basic entry for a single calendar looks like: @@ -97,7 +97,6 @@ A basic entry for a single calendar looks like: - device_id: test_everything name: Give me everything track: true - max_results: 10 ``` From this, we will get a binary sensor `calendar.test_everything` triggered by any event on the calendar and will show the next 10 events on the 'Calendar' dashboard. @@ -172,11 +171,6 @@ entities: required: false type: boolean default: true - max_results: - description: "Max number of entries to retrieve" - required: false - type: integer - default: 5 {% endconfiguration %} diff --git a/source/_integrations/climacell.markdown b/source/_integrations/climacell.markdown index 4ce37ba52d5..162dbdbac54 100644 --- a/source/_integrations/climacell.markdown +++ b/source/_integrations/climacell.markdown @@ -23,7 +23,7 @@ The ClimaCell integration allows you to obtain weather, air quality, pollen, and You can obtain a free API key by signing up with [ClimaCell](https://developer.climacell.co/sign-up?_ga=2.137889264.1908484805.1591592950-510691096.1591288729). -The integration will automatically set the refresh interval based on the number of ClimaCell integrations that are using the same API key for a given Home Assistant instance. The integration currently assumes you are using a free account so the max requests per day is 500 (the refresh interval is calculated such that you should only use up around 90% of the quota). If you want to use a paid account to increase the number of max requests and increase the update frequency, please open a Home Assistant issue for the integration. +The integration will automatically set the refresh interval based on the number of ClimaCell integrations that are using the same API key for a given Home Assistant instance. The integration currently assumes you are using a free account so the max requests per day is 100 (the refresh interval is calculated such that you should only use up around 90% of the quota). If you want to use a paid account to increase the number of max requests and increase the update frequency, please open a Home Assistant issue for the integration. ## Supported Forecast Types diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index 8b6c946491e..5e44990dda3 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -39,6 +39,7 @@ This integration is a meta-component and configures a default set of integration - [Tag](/integrations/tag/) (`tag`) - [Timer](/integrations/timer/) (`timer`) - [Updater](/integrations/updater/) (`updater`) +- [USB](/integrations/usb/) (`usb`) - [Webhooks](/integrations/webhook) (`webhook`) - [Zero-configuration networking (zeroconf)](/integrations/zeroconf/) (`zeroconf`) - [Zone](/integrations/zone/) (`zone`) diff --git a/source/_integrations/directv.markdown b/source/_integrations/directv.markdown index 71d59f0a71f..94ef556683b 100644 --- a/source/_integrations/directv.markdown +++ b/source/_integrations/directv.markdown @@ -8,8 +8,6 @@ ha_release: 0.25 ha_iot_class: Local Polling ha_domain: directv ha_config_flow: true -ha_codeowners: - - '@ctalkington' ha_quality_scale: gold ha_ssdp: true ha_platforms: diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index 2500d735dc9..ae848acf55a 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -21,7 +21,6 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [Linn / Openhome](/integrations/openhome) * [Logitech Harmony Hub](/integrations/harmony) * [Logitech Media Server (Squeezebox)](/integrations/squeezebox) - * [Nanoleaf](/integrations/nanoleaf) * [NETGEAR routers](/integrations/netgear) * [Philips Hue](/integrations/hue) * [SABnzbd downloader](/integrations/sabnzbd) @@ -76,7 +75,6 @@ Valid values for ignore are: * `frontier_silicon`: Frontier Silicon internet radios * `harmony`: Logitech Harmony Hub * `logitech_mediaserver`: Logitech Media Server (Squeezebox) - * `nanoleaf_aurora`: Nanoleaf * `netgear_router`: NETGEAR routers * `octoprint`: Octoprint * `openhome`: Linn / Openhome diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index d2bfb0e359e..3fe12c9df30 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -15,17 +15,39 @@ ha_platforms: - sensor --- -A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. +A sensor platform for Belgian, Dutch, Luxembourg and Swedish Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. Swedish meters with a 'HAN port' are not supported by this integration. -- Currently support DSMR V2.2, V3, V4, V5, V5 Belgian and V5 Smarty through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. +- Currently support DSMR V2.2, V3, V4, V5, Belgian V5 variant, Luxembourg V5 variant (Smarty) and the Swedish V5 variant through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. - For official information about DSMR refer to: [DSMR Document](https://www.netbeheernederland.nl/dossiers/slimme-meter-15) - For official information about the P1 port refer to: [P1 Companion Standard](https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf) - For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/) +- For official information about the Swedish variant refer to: [Swedish specification](https://www.energiforetagen.se/globalassets/energiforetagen/det-erbjuder-vi/kurser-och-konferenser/elnat/branschrekommendation-lokalt-granssnitt-v2_0-201912.pdf).

+### Configuration + +- For Belgian meters, choose DSMR version `5B` +- For Dutch meters, choose DSMR version `2.2`, `4`, or `5` +- For Luxembourg meters, choose DSMR version `5L` +- For Swedish meters, choose DSMR version `5S` + +### Options + +To configure options for DSMR integration go to **Configuration** >> **Integrations** and press **Options** on the DSMR card. + +#### Time between updates + +Typically the smart meter sends new data every 5-10 seconds. This value defines the minimum time between entity updates in seconds. Setting this value to 0 will update entities each time data is received from the smart meter. + +
+Reducing the default time between updates will increase the amount of events generated and can potentially flood the system with events. +
+ +### Supported meters + This integration is known to work for: - Iskra ME382 / MT382 (DSMR 2.2) @@ -37,14 +59,24 @@ This integration is known to work for: - Sagemcom XS210 ESMR5 - Ziv E0058 ESMR5 -USB serial converters: +### Connecting to the meter + +Connection can be done directly to the meter via a USB to serial connector, or through a serial to network proxy + +#### USB serial converters: - Cheap (Banggood/ebay) Generic PL2303 - [Smartmeter Webshop](https://sites.google.com/site/nta8130p1smartmeter/webshop) - [SOS Solutions](https://www.sossolutions.nl/slimme-meter-kabel) - [AliExpress](https://nl.aliexpress.com/item/32945187155.html) -Serial to network proxies: +Docker users have to allow Docker access to the USB to seriacl converter by adding `--device /dev/ttyUSB21:/dev/ttyUSB21` to the run command: + +```hass +$ docker run --device /dev/ttyUSB0:/dev/ttyUSB0 -d --name="home-assistant" -v /home/USERNAME/hass:/config -v /etc/localtime:/etc/localtime:ro --net=host {{ site.installation.container.base }} +``` + +#### Serial to network proxies: - [ser2net](http://ser2net.sourceforge.net) @@ -66,30 +98,14 @@ or 2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS ``` -Docker users have to allow Docker access to the device by adding `--device /dev/ttyUSB21:/dev/ttyUSB21` to the run command: - -```hass -$ docker run --device /dev/ttyUSB0:/dev/ttyUSB0 -d --name="home-assistant" -v /home/USERNAME/hass:/config -v /etc/localtime:/etc/localtime:ro --net=host {{ site.installation.container.base }} -``` - -### Options - -To configure options for DSMR integration go to **Configuration** >> **Integrations** and press **Options** on the DSMR card. - -#### Time between updates - -Typically the smart meter sends new data every 5-10 seconds. This value defines the minimum time between entity updates in seconds. Setting this value to 0 will update entities each time data is received from the smart meter. - -
-Reducing the default time between updates will increase the amount of events generated and can potentially flood the system with events. -
- ### Technical overview DSMR is a standard to which Dutch smartmeters must comply. It specifies that the smartmeter must send out a 'telegram' every 10 seconds (every second for DSMR 5.0 devices) over a serial port. The contents of this telegram differ between version but they generally consist of lines with 'obis' (Object Identification System, a numerical ID for a value) followed with the value and unit. +Smart meters in Belgium, Luxembourg and Sweden provided telegrams with largely the same contents. + This module sets up an asynchronous reading loop using the `dsmr_parser` module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of `obis`/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the `obis` are know for each DSMR version the Entities for this integration are create during bootstrap. Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated. diff --git a/source/_integrations/fjaraskupan.markdown b/source/_integrations/fjaraskupan.markdown new file mode 100644 index 00000000000..725e52f23f2 --- /dev/null +++ b/source/_integrations/fjaraskupan.markdown @@ -0,0 +1,42 @@ +--- +title: Fjäråskupan +description: Instructions on how to configure fjäråskupan integration. +ha_category: + - Binary Sensor + - Fan + - Light +ha_release: 2021.9 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@elupus' +ha_domain: fjaraskupan +ha_platforms: + - binary_sensor + - fan + - light + - sensor +--- + +[Fjäråskupan](https://fjaraskupan.se/) allows you to control your Bluetooth equipped kitchen fan. + +There is currently support for the following device types within Home Assistant: + +- Binary Sensor +- Fan +- Light + +The integration allow control of fan speeds, lights and after cooking timer for kitchen fans. + +{% include integrations/config_flow.md %} + +## Debugging integration + +If you have problems with the integration you can add debug prints to the log. + +```yaml +logger: + default: info + logs: + homeassistant.components.fjaraskupan: debug +``` diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index 6becfe49b8d..f115d5af5f3 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -24,7 +24,11 @@ sensor: - platform: fronius resource: FRONIUS_URL monitored_conditions: + - sensor_type: logger_info - sensor_type: inverter + scope: system + - sensor_type: meter + device: 1 ``` {% configuration %} @@ -56,6 +60,14 @@ monitored_conditions: Each sensor type chosen as monitored condition adds a set of sensors to Home Assistant. +- `logger_info` + + General information about the Fronius Datalogger. Not available on "Gen24" devices. + + - The serial number and software and hardware platforms + - The current price of energy consumed from the grid ("cash factor") + - The current price of energy returned to the grid ("delivery factor") + - `power_flow` Cumulative data such as the energy produced in the current day or year and overall produced energy. @@ -100,10 +112,11 @@ sensor: - platform: fronius resource: FRONIUS_URL monitored_conditions: + - sensor_type: logger_info - sensor_type: inverter - device: 1 + scope: system - sensor_type: meter - device: 3 + device: 1 - sensor_type: storage device: 0 - sensor_type: power_flow diff --git a/source/_integrations/github.markdown b/source/_integrations/github.markdown index fbece44bc6c..cd6be014e41 100644 --- a/source/_integrations/github.markdown +++ b/source/_integrations/github.markdown @@ -8,6 +8,9 @@ ha_iot_class: Cloud Polling ha_domain: github ha_platforms: - sensor +ha_codeowners: + - '@timmo001' + - '@ludeeus' --- The GitHub sensor allows you to monitor your favorite [GitHub](https://github.com/) repositories. Monitored information includes the amount of stargazers, forks, open issues and pull requests, the latest commit message, and more. diff --git a/source/_integrations/goalzero.markdown b/source/_integrations/goalzero.markdown index 86507be9c4d..bfe23201ebf 100644 --- a/source/_integrations/goalzero.markdown +++ b/source/_integrations/goalzero.markdown @@ -8,6 +8,7 @@ ha_release: 0.116 ha_config_flow: true ha_dhcp: true ha_domain: goalzero +ha_quality_scale: silver ha_platforms: - binary_sensor - sensor diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 09fe4c1d6cd..6b1625050fb 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -9,6 +9,7 @@ ha_iot_class: Cloud Polling ha_codeowners: - '@indykoning' - '@muppet3000' + - '@JasperPlant' ha_domain: growatt_server ha_platforms: - sensor diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index fccd2f0e54b..abac28c09cf 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -149,3 +149,10 @@ action: - light.living_room - switch.coffe_pot ``` + +### Service `homeassistant.save_persistent_states` + +Save the persistent states (for entities derived from RestoreEntity) immediately. +Maintain the normal periodic saving interval. + +Normally these states are saved at startup, every 15 minutes and at shutdown. diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 401b8269cea..f773333158d 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -256,6 +256,10 @@ homekit: type: string default: libopus available options: copy, libopus + devices: + description: Include device triggers for all matching device ids. Configuration in the UI via Options is recommended instead. + required: false + type: list {% endconfiguration %} ## Setup @@ -415,6 +419,13 @@ The following integrations are currently supported: | sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | | switch | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. | | water_heater | WaterHeater | All `water_heater` devices. | +| device_automation | DeviceTriggerAccessory | All devices that support triggers. | + +# Device Triggers + +Devices that support triggers can be added to the bridge by accessing options for the bridge in **{% my integrations title="Configuration >> Integrations" %}**. + +Bridged device triggers are represented as a single press button on stateless programmable switches. This allows a HomeKit automation to run when a device trigger fires. Because the iOS Home app currently only shows the number of the button and not the name, users may find it easier to identify the name of the button in the `Eve for HomeKit` app. ## iOS Remote Widget diff --git a/source/_integrations/iotawatt.markdown b/source/_integrations/iotawatt.markdown new file mode 100644 index 00000000000..bbf2dda38cc --- /dev/null +++ b/source/_integrations/iotawatt.markdown @@ -0,0 +1,19 @@ +--- +title: IoTaWatt +description: Instructions on how to integrate IoTaWatt into Home Assistant. +ha_release: 2021.9 +ha_category: + - Energy +ha_iot_class: Local Polling +ha_config_flow: true +ha_domain: iotawatt +ha_codeowners: + - '@gtdiehl' +ha_platforms: + - sensor +--- +A sensor platform for the [IoTaWatt](https://www.iotawatt.com/) Open WiFi Electricity Monitor. It +will collect data from the Current Transformer Clamps (Input CTs) and any Outputs that are defined on the IoTaWatt +and create them as sensors in Home Assistant. + +{% include integrations/config_flow.md %} diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 16416c0d4b3..5c48ecda8b1 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -698,6 +698,11 @@ controller_modes: description: Overrides the supported controller modes. Provide the supported `hvac_mode` values for your device. required: false type: list +default_controller_mode: + description: Overrides the default controller mode. Any Home Assistant `hvac_mode` can be configured. This can, for example, be set to "cool" for cooling-only devices. + required: false + default: "heat" + type: string on_off_address: description: KNX address for switching the climate device on/off. *DPT 1* required: false @@ -1335,6 +1340,10 @@ always_callback: required: false type: boolean default: false +state_class: + description: Sets the [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor. + required: false + type: string {% endconfiguration %} ### Value Types @@ -1505,6 +1514,7 @@ knx: state_address: "6/2/1" sync_state: every 60 type: temperature + state_class: measurement ``` ## Switch diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index 3a2c0c05587..fbf2e480dc0 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -20,6 +20,7 @@ The integration will accept the following commands from your Alarm Panel via the - `ARM_HOME` - `ARM_AWAY` - `ARM_NIGHT` +- `ARM_VACATION` When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`: @@ -27,6 +28,7 @@ When the state of the manual alarm changes, Home Assistant will publish one of t - 'armed_home' - 'armed_away' - 'armed_night' +- 'armed_vacation' - 'pending' - 'triggered' @@ -90,7 +92,7 @@ disarm_after_trigger: required: false type: boolean default: false -armed_home/armed_away/armed_night/disarmed/triggered: +armed_home/armed_away/armed_night/armed_vacation/disarmed/triggered: description: State specific settings required: false type: list @@ -147,6 +149,11 @@ payload_arm_night: required: false type: string default: ARM_NIGHT +payload_arm_vacation: + description: The payload to set armed-vacation mode on this Alarm Panel. + required: false + type: string + default: ARM_VACATION {% endconfiguration %} ## Examples @@ -188,6 +195,7 @@ To change the state of the alarm, publish one of the following messages to the ` - `ARM_HOME` - `ARM_AWAY` - `ARM_NIGHT` + - `ARM_VACATION` To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes: @@ -195,5 +203,6 @@ To receive state updates from HA, subscribe to the `state_topic`. Home Assistant - `armed_home` - `armed_away` - `armed_night` + - `armed_vacation` - `pending` - `triggered` diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 47ab15c813e..f8a1b7d6da0 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -177,5 +177,3 @@ The way media players are displayed in the frontend can be modified in the [cust - `tv`: Device is a television type device. - `speaker`: Device is speaker or stereo type device. - `receiver`: Device is audio video receiver type device taking audio and outputting to speakers and video to some display. - - diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index c381f7c63d7..75228afade1 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -18,7 +18,7 @@ ha_platforms: - light - sensor - switch -ha_quality_scale: silver +ha_quality_scale: gold --- [Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable Logic Controller) and RTUs (Remote Terminal Unit). The integration adheres strictly to the [protocol specification](https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf). @@ -52,6 +52,11 @@ delay: required: false default: 0 type: integer +message_wait_milliseconds: + description: Time to wait in milliseconds between requests. + required: false + default: 30 for serial connection, 0 for everything else. + type: integer name: description: Name for this hub. Must be unique, so it is required when setting up multiple instances. required: false @@ -215,6 +220,11 @@ modbus: ``` {% configuration %} +lazy_error_count: + description: Number of messages with error received before setting entity to unavailable. This parameter can be used to prevent spontaneous errors to ruin statistic graphs. + required: false + type: integer + default: 0 name: description: Name for the platform entity which must be unique within the platform. required: true @@ -842,6 +852,10 @@ sensors: description: Unit to attach to value. required: false type: integer + state_class: + description: The [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor. + required: false + type: string {% endconfiguration %}
@@ -866,6 +880,7 @@ modbus: address: 0 input_type: holding unit_of_measurement: °C + state_class: measurement count: 1 scale: 0.1 offset: 0 diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 1ff0d443ba0..eda752555f7 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -4,20 +4,23 @@ description: Instructions on how to integrate MyQ-Enabled garage door covers int ha_category: - Cover - Binary Sensor + - Light ha_release: 0.39 ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@bdraco' + - '@ehendrix23' ha_domain: myq ha_homekit: true ha_platforms: - binary_sensor - cover + - light ha_dhcp: true --- -The MyQ integration lets you control MyQ-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app. +The MyQ integration lets you control MyQ-Enabled garage doors and/or lamps through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app. {% include integrations/config_flow.md %} @@ -29,6 +32,11 @@ Your MyQ gateway will appear as a binary sensor that shows if the device is conn Garage doors and gates linked to your `MyQ` account will appear as covers. +### Light + +Lamps linked to your `MyQ` account will appear as lights. + + ## Using HomeKit controller for local control - ***No Apple device required*** If you have a [`819LMB`](https://www.liftmaster.com/myq-home-bridge/p/G819LMB) or [`MYQ-G0303-SP`](https://www.chamberlain.com/myq-g0303-sp/p/MYQ-G0303-SP), Home Assistant can speak HomeKit Accessory Protocol and control the device over the local network without the need to access to the cloud service. As a bonus, updates are push and near-instantaneous. diff --git a/source/_integrations/nanoleaf.markdown b/source/_integrations/nanoleaf.markdown index 38e4f8b6160..ebd26c84ff6 100644 --- a/source/_integrations/nanoleaf.markdown +++ b/source/_integrations/nanoleaf.markdown @@ -1,56 +1,22 @@ --- title: Nanoleaf -description: Instructions how to integrate Nanoleaf Light Panels into Home Assistant. +description: Instructions how to integrate Nanoleaf Panels into Home Assistant. ha_category: - Light +ha_codeowners: + - '@milanmeu' +ha_config_flow: true +ha_homekit: true ha_iot_class: Local Polling ha_release: 0.67 ha_domain: nanoleaf ha_platforms: - light +ha_zeroconf: true --- -### Configuration Sample +The Nanoleaf integration allows you to control and monitor Nanoleaf Light Panels, Canvas and Shapes. -The Nanoleaf integration allows you to control [Nanoleaf Light Panels](https://nanoleaf.me) from Home Assistant. Note that for full control of Nanoleaf devices, particularly effects, make sure they are set up as instructed on this page and not as a HomeKit device. +This integration does not support the Nanoleaf Remote and Essentials lights. -The preferred way to set up this platform is by enabling the [discovery component](/integrations/discovery/). Make sure to press and hold the *ON* button for 5 seconds (the LED will start flashing) on your Nanoleaf Lights while Home Assistant is starting. - -To configure the Nanoleaf lights manually, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: nanoleaf - host: 192.168.1.10 - token: xxxxxxxxxxxxxxxxxxxxx -``` - -{% configuration %} -host: - description: IP address or host-name of the device, e.g., 192.168.1.10. - required: true - type: string -token: - description: The *auth* token that you get via *POST* to */api/v1/new* - required: true - type: string -name: - description: Name of the component, make this unique if you have multiple Light Panels - required: false - type: string - default: Nanoleaf -{% endconfiguration %} - -### Getting The Auth Token - -1. Make sure that your Nanoleaf Light Panel is fully patched (as of the time of writing the latest version was 3.0.8 for Aurora and 1.2.0 for Canvas) -2. Hold down the *ON* button on the Panel for 5 seconds; the LED will start flashing -3. Issue a *POST* request to the API endpoint, e.g., via `$ curl -i -X POST http://192.168.1.155:16021/api/v1/new` -4. The output should include the auth token like *{"auth_token":"xxxxxxxxxxxxxxxxxxxxx"}*, copy the resulting token into your configuration - -If you get a 403 Forbidden message, you probably did not press the *ON* button long enough. The time-frame to get a valid token is only 30 seconds, so you have to be quick to issue the curl request. - -### Using the Nanoleaf Device - -The Nanoleaf device is a standard light, so can be used with standard Home Assistant Light services for automations and scripts. For full details see the [Light Integrations Page.](/integrations/light/) Of particular interest for Nanoleaf devices is using the `effect` in service calls, to choose the pattern/effect that the lights display. +{% include integrations/config_flow.md %} diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index b1467e622fe..a63762437a2 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -8,6 +8,9 @@ ha_iot_class: Local Polling ha_domain: nmap_tracker ha_platforms: - device_tracker +ha_config_flow: true +ha_codeowners: + - '@bdraco' --- 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`). @@ -24,66 +27,7 @@ On a Fedora host run `sudo dnf -y install nmap`.
-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` +{% include integrations/config_flow.md %} An example of how the Nmap scanner can be customized: @@ -95,12 +39,6 @@ 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 as - -```yaml -- platform: nmap_tracker - hosts: 192.168.1.1-25 - scan_options: " --privileged -sn " -``` +And you can set up the device tracker scan options with `--privileged -sn` See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index f52eeb77d00..50765a0e7bb 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -18,6 +18,12 @@ ha_platforms: The `openuv` integration displays UV and Ozone data from [openuv.io](https://www.openuv.io/). +
+The guidelines within this documentation constitute estimates and are intended to help +informed decision making. They should not replace analysis, advice or diagnosis from a +trained medical professional. +
+ ## Generating an API Key To generate an API key, @@ -47,7 +53,17 @@ the `update_protection_data` services). | Current UV Index | Sensor | UV Index (numerical value) | | Current UV Level | Sensor | UV Level (as literal) | | Max UV Index | Sensor | max UV Index for the day (at solar noon) | -| Protection Window | Binary Sensor | 'On' when protection window is needed | +| Protection Window | Binary Sensor | whether sunblock protection should be used | + +### Protection Window + +The Protection Window binary sensor will be `on` when sunblock protection should be used. + +By default, this occurs anytime the UV index is above 3.5. This behavior can be +configured via the config entry options within the UI. Two parameters are given: + +* `Starting UV index for the protection window`: the UV index that, when passed, indicates protection should be utilized +* `Ending UV index for the protection window`: the UV index that, when passed, indicates protection is no longer required ### The Fitzpatrick Scale @@ -55,12 +71,6 @@ The approximate number of minutes of a particular skin type can be exposed to the sun before burning/tanning starts is based on the [Fitzpatrick scale](https://en.wikipedia.org/wiki/Fitzpatrick_scale). -
-The above guidelines constitute estimates and are intended to help informed -decision making. They should not replace analysis, advice or diagnosis from a -trained medical professional. -
- OpenUV integration provide sensors for safe exposure time (in minutes) based on skin type: - Skin Type 1 Safe Exposure Time diff --git a/source/_integrations/p1_monitor.markdown b/source/_integrations/p1_monitor.markdown new file mode 100644 index 00000000000..33c94593b0b --- /dev/null +++ b/source/_integrations/p1_monitor.markdown @@ -0,0 +1,56 @@ +--- +title: P1 Monitor +description: Instructions on how to integrate P1 Monitor within Home Assistant. +ha_category: + - Energy +ha_release: 2021.9 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@klaasnicolaas' +ha_domain: p1_monitor +ha_platforms: + - sensor +ha_quality_scale: platinum +--- + +The P1 Monitor integration integrates the [P1 Monitor](https://www.ztatz.nl/p1-monitor/) +API platform with Home Assistant. + +P1 Monitor is a platform that allows you to read the data from your smart meter via the serial port (P1), such as your energy consumption, but also that of gas or a water meter. + +{% include integrations/config_flow.md %} + +## Sensors + +The P1 Monitor platform mainly provides sensors that you can use in your +[energy dashboard](/energy). + +**Note** that by default, the gas consumption entities are disabled, so if you want to use them, you need to enable them manually. + +### SmartMeter + +Read out what your meter readings are for energy consumption/yield, see what your current power consumption is and in which tariff period you are currently. + +- Gas Consumption (m3) +- Power Consumption / Production (W) +- Energy Consumption Low/High (kWh) +- Energy Production Low/High (kwH) +- Energy Tariff Period (low / high) + +### Phases + +See per phase what your voltage, current and power consumption/production is. + +- Voltage phases L1/2/3 (V) +- Current Phases L1/2/3 (A) +- Power consumed phases L1/2/3 (W) +- Power Produced phases L1/2/3 (W) + +### Settings + +You can use the rates set in P1 Monitor for your calculations in Home Assistant. + +- Gas Consumption Price +- Energy Consumption Price Low/High +- Energy Production Price Low/High diff --git a/source/_integrations/powerwall.markdown b/source/_integrations/powerwall.markdown index 9a03034e9a2..dcf459e6558 100644 --- a/source/_integrations/powerwall.markdown +++ b/source/_integrations/powerwall.markdown @@ -3,6 +3,7 @@ title: Tesla Powerwall description: Instructions on how to integrate Tesla Power Walls into Home Assistant. ha_category: - Binary Sensor + - Energy - Sensor ha_release: 0.108 ha_iot_class: Local Polling diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown index 4bd80720197..c9079b1a07e 100644 --- a/source/_integrations/rachio.markdown +++ b/source/_integrations/rachio.markdown @@ -144,6 +144,14 @@ This service will not be available if only a Generation 1 controller is on the a | ---------------------- | -------- | ----------- | | `devices` | yes | Name of the controller(s) to resume. If not given, will resume all paused controllers on the account. +### Service `rachio.stop_watering` + +Stops all currently running schedules. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `devices` | yes | Name of the controller(s) to stop. If not given, will stop all running controllers on the account. + ## Examples In this section, you find some real-life examples of how to use this switch. diff --git a/source/_integrations/rainforest_eagle.markdown b/source/_integrations/rainforest_eagle.markdown index 4f47da07306..09765677da7 100644 --- a/source/_integrations/rainforest_eagle.markdown +++ b/source/_integrations/rainforest_eagle.markdown @@ -1,5 +1,5 @@ --- -title: Rainforest Eagle-200 +title: Rainforest Eagle description: Instructions on how to setup the Rainforest Eagle with Home Assistant. ha_category: - Energy @@ -12,35 +12,11 @@ ha_codeowners: ha_domain: rainforest_eagle ha_platforms: - sensor +ha_config_flow: true +ha_dhcp: true --- -A `sensor` platform for the Rainforest Automation's [Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) -and [Legacy Eagle](https://rainforestautomation.com/support/rfa-z109-eagle-support/) energy gateways. +Integrate energy usage and price from the Rainforest Automation's [Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) +and [Legacy Eagle](https://rainforestautomation.com/support/rfa-z109-eagle-support/) energy gateways. The price will only be included if it is provided by the electricity meter. If you picked an electricity plan in the app, the price data will not be available. -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rainforest_eagle - ip_address: IP_FOR_EAGLE - cloud_id: CLOUD_ID_FROM_EAGLE - install_code: INSTALL_CODE_FROM_EAGLE -``` - -{% configuration %} -ip_address: - description: The local IP address of your Eagle device. - required: true - type: string -cloud_id: - description: The Cloud ID that is printed on the bottom of the Eagle - required: true - type: string -install_code: - description: "The Install Code that is printed on the bottom of the Eagle. Use the full Install Code with no spaces (e.g., `1a2b3c4d5a6b7c8d`)" - required: true - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown index 739b7df80c9..8e7fb0449b9 100644 --- a/source/_integrations/renault.markdown +++ b/source/_integrations/renault.markdown @@ -3,18 +3,24 @@ title: Renault description: Instructions on how to integrate Renault car into Home Assistant. ha_category: - Car + - Binary Sensor - Sensor ha_release: 2021.8 ha_iot_class: Cloud Polling ha_config_flow: true -ha_codeowners: '@epenet' +ha_codeowners: + - '@epenet' ha_domain: renault +ha_platforms: + - binary_sensor + - sensor --- The Renault integration offers integration with the **MyRenault** cloud service and provides sensors such as charger state and temperature. This integration provides the following platforms: +- Binary sensors - such as plug and charge status. - Sensors - such as battery level, outside temperature, odometer, estimated range, and charging rate. ## Prerequisites diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 61ff05e99a0..99d47b72c92 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -17,21 +17,31 @@ Some of these sensors are built-in to Home Assistant, some are created automatic The type of data a sensor returns impacts how it is displayed in the frontend. This is controlled by the sensor's device class designation. Built-in sensors and many created from an integration will have this designation predefined. Those can be modified in the [customize section](/docs/configuration/customizing-devices/). When manually creating a new sensor the device class may be optionally assigned. A full list of available sensor device classes is below: - **None**: Generic sensor. This is the default and doesn't need to be set. +- **aqi**: Air Quality Index - **battery**: Percentage of battery that is left. +- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke) +- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) - **current**: Current in A. - **energy**: Energy in Wh or kWh. - **humidity**: Percentage of humidity in the air. - **illuminance**: The current light level in lx or lm. - **monetary**: The monetary value. -- **signal_strength**: Signal strength in dB or dBm. -- **temperature**: Temperature in °C or °F. -- **power**: Power in W or kW. +- **nitrogen_dioxide**: Concentration of Nitrogen Dioxide in µg/m³ +- **nitrogen_monoxide**: Concentration of Nitrogen Monoxide in µg/m³ +- **nitrous_oxide**: Concentration of Nitrous Oxide in µg/m³ +- **ozone**: Concentration of Ozone in µg/m³ +- **pm1**: Concentration of particulate matter less than 1 micrometer in µg/m³ +- **pm10**: Concentration of particulate matter less than 10 micrometers in µg/m³ +- **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **power_factor**: Power factor in %. +- **power**: Power in W or kW. - **pressure**: Pressure in hPa or mbar. +- **signal_strength**: Signal strength in dB or dBm. +- **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³ +- **temperature**: Temperature in °C or °F. - **timestamp**: Datetime object or timestamp string (ISO 8601). +- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³. - **voltage**: Voltage in V. -- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) -- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke)

diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index df956246e49..7c8621f1e82 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -166,6 +166,29 @@ shelly: coap_port: 12345 ``` +## Light transition + +Shelly lights supporting light transition: + +- Shelly Bulb RGBW +- Shelly DUO +- Shelly Dimmer +- Shelly Dimmer 2 +- Shelly RGBW2 +- Shelly Vintage + +

+ +Firmware 1.11 or later is required. + +
+ +
+ +The firmware limits the transition time to 5 seconds. + +
+ ## Known issues and limitations - Only supports firmware 1.8 and later diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index eb0244d42e5..4506103e339 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -52,6 +52,10 @@ Marks all items as completed in the shopping list. It does not remove the items. Marks all items as incomplete in the shopping list. +### Service `shopping_list.clear_completed_items` + +Clear completed items from the shopping list. + ## Using in Automations The simplest way use shopping list with automations (e.g., when entering a zone with shops) is to create a notification that can be clicked to open the shopping list. diff --git a/source/_integrations/siren.markdown b/source/_integrations/siren.markdown index 7f9333f7b1f..ff8619f20e7 100644 --- a/source/_integrations/siren.markdown +++ b/source/_integrations/siren.markdown @@ -31,11 +31,11 @@ Turn the siren on. There are three optional input parameters that can be passed into the service call depending on whether or not your device supports them. Check the device's integration documentation for more details. -| Parameter Name | Input Type -|---------------- |------------------------- -| `tone` | `string` or `integer` -| `duration` | `integer` -| `volume_level` | `float` between 0 and 1 +| Parameter Name | Input Type | Notes | +|---------------- |-------------------------|-------------------------------------------------------------------------------------| +| `tone` | `string` or `integer` | When the `available_tones` property is a map, either the key or value can be used. | +| `duration` | `integer` | | +| `volume_level` | `float` between 0 and 1 | | ### Service `siren.turn_off` diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index 3eb3c3a5557..bdc46f08f62 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -66,12 +66,12 @@ The following sensors are available in the library: | consumption_month | kWh | Total consumption for the month from all of the consumption meters. | | consumption_year | kWh | Total consumption for the year from all of the consumption meters. | | consumption_total | kWh | Accumulated total consumption from all consumption meters. | -| total_power | Wp | Installed generator power. | +| installed_peak_power | W | Installed solar peak power. | | alternator_loss | W | Altenator loss (equals to power_dc - power_ac) | | capacity | % | Capacity (equals to power_dc / total power) | -| efficiency | % W/Wp | Efficiency (equals to power_ac / power_dc | +| efficiency | % | Efficiency (equals to power_ac / power_dc) | | power_available | W | Available power (equals to power_ac - consumption_ac) | -| usage | | Usage (equals to consumption_ac / power_ac) | +| usage | % | Usage (equals to consumption_ac / power_ac) |
The solarlog integration is using the sunwatcher pypi package to get the data from your Solar-Log device. The last five sensors are not reported by your Solar-Log device directly, but are computed by the sunwatcher package. diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index d8dec84fcef..dc02d217b75 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -5,7 +5,7 @@ ha_category: - Sensor - System Monitor ha_release: 2021.6 -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - '@timmo001' @@ -80,7 +80,7 @@ Open a URL or file on the server using the default application. service: system_bridge.open data: bridge: "device" - path: "C:\image.jpg" + path: "C:\\image.jpg" ``` ```yaml diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index d33d93db612..1f28245273d 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -13,7 +13,6 @@ ha_release: 0.41 ha_iot_class: Cloud Polling ha_codeowners: - '@michaelarnauts' - - '@bdraco' - '@noltari' ha_domain: tado ha_config_flow: true diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index fec17251091..ba2cb017568 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -19,7 +19,9 @@ ha_platforms: - fan - light - lock + - number - sensor + - select - switch - vacuum - weather @@ -27,7 +29,7 @@ ha_platforms: The `template` integration allows creating entities which derive their values from other data. This is done by specifying [templates](/docs/configuration/templating/) for properties of an entity, like the name or the state. -Sensors and binary (on/off) sensors are covered on this page. For other types, please see the specific pages: +Sensors, binary (on/off) sensors, numbers and selects are covered on this page. For other types, please see the specific pages: - [Alarm Control Panel](/integrations/alarm_control_panel.template/) - [Cover](/integrations/cover.template/) @@ -38,7 +40,7 @@ Sensors and binary (on/off) sensors are covered on this page. For other types, p - [Vacuum](/integrations/vacuum.template/) - [Weather](/integrations/weather.template/) -Sensor and binary sensor template entities are defined in your YAML configuration files, directly under the `template:` key and cannot be configured via the UI. You can define multiple configuration blocks as a list. Each block defines sensors and/or binary sensor entities and can contain an optional update trigger. +Sensor, binary sensor, number and select template entities are defined in your YAML configuration files, directly under the `template:` key and cannot be configured via the UI. You can define multiple configuration blocks as a list. Each block defines sensor/binary sensor/number/select entities and can contain an optional update trigger. _For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._ @@ -145,14 +147,6 @@ binary_sensor: required: false type: map keys: - name: - description: Defines a template to get the name of the sensor. - required: false - type: template - unique_id: - description: An ID that uniquely identifies this sensor. Will be combined with the unique ID of the configuration block if available. This allows changing the `name`, `icon` and `entity_id` from the web interface. - required: false - type: string icon: description: Defines a template for the icon of the sensor. required: false @@ -170,16 +164,83 @@ binary_sensor: description: The attribute and corresponding template. required: true type: template - availability: - description: Defines a template to get the `available` state of the component. If the template returns `true`, the device is `available`. If the template returns any other value, the device will be `unavailable`. If not configured, the component will always be `available`. - required: false - type: template - default: true device_class: description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). It does not set the `unit_of_measurement`. required: false type: device_class default: None +number: + description: List of numbers + required: true + type: map + keys: + state: + description: Template for the number's current value. + required: true + type: template + set_value: + description: Defines an action to run when the number value changes. + required: true + type: action + step: + description: Template for the number's increment/decrement step. + required: true + type: template + min: + description: Template for the number's minimum value. + required: false + type: template + default: 0.0 + max: + description: Template for the number's maximum value. + required: false + type: template + default: 100.0 + optimistic: + description: Flag that defines if number works in optimistic mode. + required: false + type: boolean + default: false +select: + description: List of selects + required: true + type: map + keys: + state: + description: Template for the select's current value. + required: true + type: template + select_option: + description: Defines an action to run to select an option from the `options` list. + required: true + type: action + options: + description: Template for the select's available options. + required: true + type: template + optimistic: + description: Flag that defines if select works in optimistic mode. + required: false + type: boolean + default: false +"[all sensor, binary sensor, number, select entities]": + description: Fields that can be used above for sensors, binary sensors, numbers, and selects. + required: false + type: map + keys: + name: + description: Defines a template to get the name of the sensor. + required: false + type: template + unique_id: + description: An ID that uniquely identifies this sensor. Will be combined with the unique ID of the configuration block if available. This allows changing the `name`, `icon` and `entity_id` from the web interface. + required: false + type: string + availability: + description: Defines a template to get the `available` state of the component. If the template returns `true`, the device is `available`. If the template returns any other value, the device will be `unavailable`. If not configured, the component will always be `available`. + required: false + type: template + default: true {% endconfiguration %} diff --git a/source/_integrations/tractive.markdown b/source/_integrations/tractive.markdown new file mode 100644 index 00000000000..52b10cbd875 --- /dev/null +++ b/source/_integrations/tractive.markdown @@ -0,0 +1,33 @@ +--- +title: Tractive +description: Instructions on how to integrate Tractive within Home Assistant. +ha_category: + - Presence Detection +ha_release: 2021.9 +ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@Danielhiversen' + - '@zhulik' + - '@bieniu' +ha_domain: tractive +ha_platforms: + - device_tracker + - sensor +--- + +[Tractive](https://tractive.com/en/) is an Austrian company that develops real-time location trackers for pets and other animals using GPS and GSM technology. + +The Tractive integration allows you to monitor locations of your pets from within Home Assistant and set up automations based on the information. + +## Prerequisites + +To use the integration you must be a premium tractive client. + +{% include integrations/config_flow.md %} + +## Integration Entities + +The Tractive integration adds one device tracker and several sensors per registered pet: + +![Tractive device tracker](/images/integrations/tractive/device_tracker.png) diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index bb63e9c7c92..841202fdd41 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -17,6 +17,8 @@ ha_platforms: - light - sensor - switch +ha_codeowners: + - '@janiversen' --- The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 6d644ccd858..32a1e5c3aa0 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -88,7 +88,7 @@ device_class: The Universal Media Player will primarily imitate one of its `children`. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the `children:` list must be media players, but the state template can contain any entity. -It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on. +It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on. If not provided, the `toggle` command will delegate to `turn_on` or `turn_off` based on the `state`. It is also recommended that the command `volume_up`, the command `volume_down`, the command `volume_mute`, and the attribute `is_volume_muted` all be provided together. The attribute `is_volume_muted` should return either True or the on state when the volume is muted. The `volume_mute` service should toggle the mute setting. diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 713062a7189..5aa3d4b855f 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -3,22 +3,26 @@ title: UPnP/IGD description: Internet Gateway Device (IGD) Protocol for Home Assistant. ha_category: - Network + - Binary Sensor - Sensor ha_release: 0.18 ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - '@StevenLooman' + - '@ehendrix23' ha_domain: upnp ha_ssdp: true ha_platforms: + - binary_sensor - sensor --- -The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. +The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out and WAN connectivity status. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. There is currently support for the following device types within Home Assistant: +- **Binary Sensor** - If router is connected to the WAN. - **Sensor** - Allows to get the network statistics from your router such as bytes in/out and packets in/out. Please note that UPnP or NAT-PMP needs to be enabled on your router for this integration to work. diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index a400e4e9718..bccae431c42 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -10,28 +10,14 @@ ha_codeowners: ha_domain: uptimerobot ha_platforms: - binary_sensor +ha_quality_scale: platinum +ha_config_flow: true --- -The `uptimerobot` binary sensor platform allows you get the status for all of your monitors from your account on [Uptime Robot]( https://uptimerobot.com). +The `uptimerobot` integration provides binary sensors to get the status for all of your monitors from your account on [Uptime Robot]( https://uptimerobot.com). -## Configuration - -To enable the sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: uptimerobot - api_key: YOUR_API_KEY -``` - -{% configuration %} -api_key: - description: Your Uptime Robot API key. - required: true - type: string -{% endconfiguration %} - -All the data will be fetched from [Uptime Robot](https://uptimerobot.com). +{% include integrations/config_flow.md %} To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the Uptime Robot website, at the bottom you will find your "Read-Only API Key". + +All the data will be fetched from [Uptime Robot](https://uptimerobot.com). diff --git a/source/_integrations/usb.markdown b/source/_integrations/usb.markdown new file mode 100644 index 00000000000..a297d1d10a2 --- /dev/null +++ b/source/_integrations/usb.markdown @@ -0,0 +1,27 @@ +--- +title: USB Discovery +description: Discover usb devices on the host. +ha_category: + - Utility +ha_iot_class: Local Push +ha_release: 2021.9 +ha_domain: usb +ha_quality_scale: internal +ha_codeowners: + - '@bdraco' +--- + +The USB Discovery integration will watch the host for USB devices. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. + +- On all supported systems, devices are detected at startup. +- On Linux systems that have functional `udev` support, including Home Assistant Operating System, devices are detected as soon as they are plugged in. +- On non-Linux systems or systems without `udev` support, devices are detected when visiting the integrations page and during onboarding. + +## Configuration + +This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: + +```yaml +# Example configuration.yaml entry +usb: +``` diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 8cd2719f2d2..3412be8ca41 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -54,6 +54,10 @@ offset: default: 0 type: time type: integer +cron: + description: This option is *mutually exclusive* of `cycle` and `offset`. It provides an advanced method of defining when should the counter be reset. It follows common [crontab syntax](https://crontab.guru). + required: true + type: string net_consumption: description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative. required: false diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 358aa6d26b7..a0ed0a44e79 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -53,6 +53,3 @@ source: ### Supported images for Home Assistant `default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `generic-x86-64`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `raspberrypi4`, `raspberrypi4-64`, `tinker`, `odroid-c2`, `odroid-n2`, `odroid-xu` - - - diff --git a/source/_integrations/wink.markdown b/source/_integrations/wink.markdown index 23837869723..eea9cf3c11b 100644 --- a/source/_integrations/wink.markdown +++ b/source/_integrations/wink.markdown @@ -33,6 +33,10 @@ ha_platforms: --- [Wink](https://www.wink.com/) is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words: +
+ The Wink integration has been marked deprecated and is pending removal in Home Assistant Core 2021.12. + It is considered impossible to obtain the needed API keys to use this integration. The developer portal has been taken down and support has confirmed to their users they won't be allowing new applications. +
Wink offers one, quick and simple way to connect people with the products they rely on every day in their home. diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 2d5006960fa..82f415196c1 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -16,12 +16,14 @@ ha_codeowners: - '@rytilahti' - '@syssi' - '@starkillerOG' + - '@bieniu' ha_domain: xiaomi_miio ha_config_flow: true ha_zeroconf: true ha_platforms: - air_quality - alarm_control_panel + - binary_sensor - device_tracker - fan - humidifier @@ -72,7 +74,7 @@ The `xiaomi_miio` gateway integration allows you to control the gateway and its | ------------------ | ------------------- | ------------------------ |------------------------------------------ | | Chinese version | lumi.gateway.v3 | DGNWG02LM | yes | | European version | lumi.gateway.mieu01 | ZHWG11LM-763 / DGNWQ05LM | yes (cloud credentials needed) | -| Aqara hub | lumi.gateway.aqhm01 | ZHWG11LM | untested | +| Aqara hub | lumi.gateway.aqhm01 | ZHWG11LM | yes | | Mijia Zigbee 3.0 | lumi.gateway.mgl03 | ZNDMWG03LM | yes | | Aqara AC Companion | lumi.acpartner.v1 | KTBL01LM | untested | | Mi AC Companion | lumi.acpartner.v2 | KTBL02LM | untested | @@ -181,12 +183,9 @@ token: type: string {% endconfiguration %} -## Xiaomi Air Purifier and Humidifier +## Xiaomi Air Purifier, Air Humidifier and Standing Fan -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and Air Fresh. -The Air Humidifier uses multiple platforms to allow you to set the target humidiy, control modes and settings. -Unlike the the Air Purifier and Air Fresh the Air Humidfiers use Home Assistant native integrations and services to support the device. -Humidifiers cannot setup using a configuration file. +The Air Purifiers, Air Humidifiers and Standing Fans use multiple platforms to allow you to set the control modes and settings of the device. Supported devices: @@ -207,71 +206,72 @@ Supported devices: | Air Purifier Super 2 | zhimi.airpurifier.sa2 | | | Air Purifier 3 (2019) | zhimi.airpurifier.ma4 | | | Air Purifier 3H (2019) | zhimi.airpurifier.mb3 | | +| Air Fresh VA2 | zhimi.airfresh.va2 | | | Air Humidifier | zhimi.humidifier.v1 | | | Air Humidifier CA1 | zhimi.humidifier.ca1 | | | Air Humidifier CA4 | zhimi.humidifier.ca4 | | | Air Humidifier CB1 | zhimi.humidifier.cb1 | | -| Air Fresh VA2 | zhimi.airfresh.va2 | | - +| Air Humidifier JSQ | deerma.humidifier.jsq | | +| Air Humidifier JSQ1 | deerma.humidifier.jsq1 | | +| Air Humidifier MJJSQ | deerma.humidifier.mjjsq| | +| Standing Fan 1X | dmaker.fan.p5 | | +| Inverter Pedestal Fan | zhimi.fan.za1 | | +| Standing Fan 2 | zhimi.fan.za3 | | +| Standing Fan 2S | zhimi.fan.za4 | | +| Standing Fan | zhimi.fan.sa1 | | +| DC Pedestal Fan | zhimi.fan.v2 | | +| DC Pedestal Fan | zhimi.fan.v3 | | ### Features -### Air Purifier 2 et al. +### Air Purifier 2 (zhimi.airpurifier.v2) - Power (on, off) -- Operation modes (auto, silent, favorite, idle) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off), LED brightness (bright, dim, off) -- Favorite Level (0...16) -- Attributes +- Operation modes (Auto, Silent, Favorite, Idle) +- Attributes (fan platform) - `model` - - `temperature` - - `humidity` - - `aqi` - `mode` - - `filter_hours_used` - - `filter_life_remaining` - - `favorite_level` - - `child_lock` - - `led` - - `motor_speed` - - `average_aqi` - - `purify_volume` - - `learn_mode` - `sleep_time` - `sleep_mode_learn_count` - `extra_features` - `turbo_mode_supported` - - `auto_detect` - `use_time` - `button_pressed` - - `buzzer` - - `led_brightness` - `sleep_mode` +- Number entities + +Number | Description +----------------------- | ----------------------- +Favorite Level | Set the favorite level + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Motor Speed | The current motor speed measured in rpm +PM2.5 | The current particulate matter 2.5 measured +Purify Volume | The volume of purified air in qubic meter +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +Learn Mode | Turn on/off the learn mode +LED | Turn on/off the LED ### Air Purifier Pro (zhimi.airpurifier.v6) - Power (on, off) -- Operation modes (auto, silent, favorite) -- Child lock (on, off) -- LED (on, off) -- Favorite Level (0...16) -- Attributes +- Operation modes (Auto, Silent, Favorite) +- Attributes (fan platform) - `model` - - `temperature` - - `humidity` - - `aqi` - `mode` - - `filter_hours_used` - - `filter_life_remaining` - - `favorite_level` - - `child_lock` - - `led` - - `motor_speed` - - `average_aqi` - - `purify_volume` - - `learn_mode` - `sleep_time` - `sleep_mode_learn_count` - `extra_features` @@ -279,220 +279,353 @@ Supported devices: - `auto_detect` - `use_time` - `button_pressed` - - `filter_rfid_product_id` - - `filter_rfid_tag` - - `filter_type` - - `illuminance` - - `motor2_speed` - - `volume` +- Number entities + +Number | Description +----------------------- | ----------------------- +Favorite Level | Set the favorite level +Volume | Set the volume + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Illuminance | The current illuminance measured +Motor Speed | The current motor speed measured in rpm +PM2.5 | The current particulate matter 2.5 measured +Purify Volume | The volume of purified air in qubic meter +Second Motor Speed | The current second motor speed measured in rpm +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Child Lock | Turn on/off the child lock +Learn Mode | Turn on/off the learn mode +LED | Turn on/off the LED ### Air Purifier Pro V7 (zhimi.airpurifier.v7) - Power (on, off) -- Operation modes (auto, silent, favorite) -- Child lock (on, off) -- LED (on, off) -- Favorite Level (0...16) -- Attributes +- Operation modes (Auto, Silent, Favorite) +- Attributes (fan platform) - `model` - - `temperature` - - `humidity` - - `aqi` - `mode` - - `filter_hours_used` - - `filter_life_remaining` - - `favorite_level` - - `child_lock` - - `led` - - `motor_speed` - - `average_aqi` - - `learn_mode` - `extra_features` - `turbo_mode_supported` - `button_pressed` - - `filter_rfid_product_id` - - `filter_rfid_tag` - - `filter_type` - - `illuminance` - - `motor2_speed` - - `volume` +- Number entities + +Number | Description +----------------------- | ----------------------- +Favorite Level | Set the favorite level +Volume | Set the volume + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Illuminance | The current illuminance measured +Motor Speed | The current motor speed measured in rpm +PM2.5 | The current particulate matter 2.5 measured +Second Motor Speed | The current second motor speed measured in rpm +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Child Lock | Turn on/off the child lock +Learn Mode | Turn on/off the learn mode +LED | Turn on/off the LED ### Air Purifier 2S (zhimi.airpurifier.mc1) - Power (on, off) -- Operation modes (auto, silent, favorite) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off) -- Favorite Level (0...16) -- Attributes +- Operation modes (Auto, Silent, Favorite) +- Attributes (fan platform) - `model` - - `temperature` - - `humidity` - - `aqi` - `mode` - - `filter_hours_used` - - `filter_life_remaining` - - `favorite_level` - - `child_lock` - - `led` - - `motor_speed` - - `average_aqi` - - `learn_mode` - `extra_features` - `turbo_mode_supported` - `button_pressed` - - `filter_rfid_product_id` - - `filter_rfid_tag` - - `filter_type` - - `illuminance` - - `buzzer` +- Number entities + +Number | Description +----------------------- | ----------------------- +Favorite Level | Set the favorite level + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Motor Speed | The current motor speed measured in rpm +PM2.5 | The current particulate matter 2.5 measured +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +Learn Mode | Turn on/off the learn mode +LED | Turn on/off the LED ### Air Purifier 3/3H (2019) (zhimi.airpurifier.ma4/zhimi.airpurifier.mb3) This model uses newer MiOT communication protocol. - Power (on, off) -- Operation modes (auto, silent, favorite, fan) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off) -- Favorite Level (0...16) -- Fan Level (1...3) -- Attributes +- Operation modes (Auto, Silent, Favorite, Fan) +- Attributes (fan platform) - `model` - - `temperature` - - `humidity` - - `aqi` - `mode` - - `filter_hours_used` - - `filter_life_remaining` - - `favorite_level` - - `child_lock` - - `led` - - `motor_speed` - - `average_aqi` - - `purify_volume` - `use_time` - - `buzzer` - - `led_brightness` - - `filter_rfid_product_id` - - `filter_rfid_tag` - - `filter_type` - - `fan_level` +- Number entities + +Number | Description +----------------------- | ----------------------- +Fan Level | Set the fan level +Favorite Level | Set the favorite level + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Motor Speed | The current motor speed measured in rpm +PM2.5 | The current particulate matter 2.5 measured +Purify Volume | The volume of purified air in qubic meter +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock ### Air Purifier V3 (zhimi.airpurifier.v3) - Power (on, off) -- Operation modes (auto, silent, favorite, idle, medium, high, strong) -- Child lock (on, off) -- LED (on, off) -- Attributes +- Operation modes (Auto, Silent, Favorite, Idle, Medium, High, Strong) +- Attributes (fan platform) - `model` - - `aqi` - `mode` - - `led` - - `buzzer` - - `child_lock` - - `illuminance` - - `filter_hours_used` - - `filter_life_remaining` - - `motor_speed` - - `average_aqi` - - `volume` - - `motor2_speed` - - `filter_rfid_product_id` - - `filter_rfid_tag` - - `filter_type` - - `purify_volume` - - `learn_mode` - `sleep_time` - `sleep_mode_learn_count` - `extra_features` - - `auto_detect` - `use_time` - `button_pressed` +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +PM2.5 | The current particulate matter 2.5 measured +Illuminance | The current illuminance measured +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Motor Speed | The current motor speed measured in rpm +Second Motor Speed | The current second motor speed measured in rpm +Purify Volume | The volume of purified air in qubic meter + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +LED | Turn on/off the LED + +### Air Fresh VA2 + +- Power (on, off) +- Operation modes (Auto, Silent, Interval, Low, Middle, Strong) +- Attributes (fan platform) + - `model` + - `mode` + - `use_time` + - `extra_features` +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Carbon Dioxide | The current carbon dioxide measured in ppm +Filter Life Remaining | The remaining life of the filter +Filter Use | Filter usage time in hours +Humidity | The current humidity measured +Illuminance | The current illuminance measured +PM2.5 | The current particulate matter 2.5 measured +Temperature | The current temperature measured + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off `buzzer` +Child Lock | Turn on/off `child lock` +LED | Turn on/off `led` ### Air Humidifier (zhimi.humidifier.v1) - On, Off - Operation modes (Silent, Medium, High, Strong) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off), LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) - Attributes (humidifier platform) -Attribute | Description ---- | --- -`humidity` | The current `target_humidity` -`max_humidity` | The maximum settable `target_humidity` -`min_humidity` | The minimum settable `target_humidity` -`available_modes` | A list with the operation modes available -`mode` | the current operation mode selected +Attribute | Description +----------------------- | ----------------------- +`available_modes` | A list with the operation modes available +`humidity` | The current target humidity +`max_humidity` | The maximum settable target humidity +`min_humidity` | The minimum settable target humidity +`mode` | The current operation mode selected + +- Binary sensor entities + +Binary sensor | Description +----------------------- | ----------------------- +Water Tank | Indicates whether the water tank is connected or not + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) - Sensor entities -Sensor | Description ---- | --- -`humidity` | The current `humidity` measured -`temperature` | The current `temperature` measured +Sensor | Description +----------------------- | ----------------------- +Humidity | The current humidity measured +Temperature | The current temperature measured +Water Level | The current water level percentage measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock ### Air Humidifier CA (zhimi.humidifier.ca1) - On, Off - Operation modes (Silent, Medium, High, Auto) -- Buzzer (on, off) -- Child lock (on, off) -- LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) -- Dry mode (on, off) - Attributes (humidifier platform) -Attribute | Description ---- | --- -`humidity` | The current `target_humidity` -`max_humidity` | The maximum settable `target_humidity` -`min_humidity` | The minimum settable `target_humidity` -`available_modes` | A list with the operation modes available -`mode` | the current operation mode selected +Attribute | Description +----------------------- | ----------------------- +`available_modes` | A list with the operation modes available +`humidity` | The current target humidity +`max_humidity` | The maximum settable target humidity +`min_humidity` | The minimum settable target humidity +`mode` | The current operation mode selected + +- Binary sensor entities + +Binary sensor | Description +----------------------- | ----------------------- +Water Tank | Indicates whether the water tank is connected or not + +- Select entities + +Select | Description +----------------------- | --- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) - Sensor entities Sensor | Description ---- | --- -`humidity` | The current `humidity` measured -`temperature` | The current `temperature` measured +----------------------- | ----------------------- +Humidity | The current humidity measured +Temperature | The current temperature measured +Water Level | The current water level percentage measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +Dry Mode | Turn on/off the dry mode ### Air Humidifier CA (zhimi.humidifier.ca4) - On, Off - Operation modes (Auto, Low, Medium, High) -- Buzzer (on, off) -- Child lock (on, off) -- LED brightness (off, dim, bright) - Target humidity (30 - 80) -- Clean mode (on, off) -- Dry mode (on, off) -- Motor speed rpm (200 - 2000) - Attributes (humidifier platform) -Attribute | Description ---- | --- -`humidity` | The current `target_humidity` -`max_humidity` | The maximum settable `target_humidity` -`min_humidity` | The minimum settable `target_humidity` -`available_modes` | A list with the operation modes available -`mode` | the current operation mode selected +Attribute | Description +----------------------- | ----------------------- +`available_modes` | A list with the operation modes available +`humidity` | The current target humidity +`max_humidity` | The maximum settable target humidity +`min_humidity` | The minimum settable target humidity +`mode` | The current operation mode selected + +- Binary sensor entities + +Binary sensor | Description +----------------------- | ----------------------- +Water Tank | Indicates whether the water tank is connected or not + +- Number entities + +Number | Description +----------------------- | ----------------------- +Motor Speed | Set the motor speed + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) - Sensor entities -Sensor | Description ---- | --- -`actual_speed` | The current `motor_speed` measured in (rpm) -`humidity` | The current `humidity` percentage measured -`temperature` | The current `temperature` measured in degrees Celius -`water_level` | The current `water_level` percentage measured +Sensor | Description +----------------------- | ----------------------- +Actual Speed | The current motor speed measured in rpm +Humidity | The current humidity measured +Temperature | The current temperature measured +Water Level | The current water level percentage measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +Clean Mode | Turn on/off the clean mode +Dry Mode | Turn on/off the dry mode
Clean mode and Motor speed can only be set when the device is turned on. @@ -502,68 +635,178 @@ Clean mode and Motor speed can only be set when the device is turned on. - On, Off - Operation modes (Silent, Medium, High, Auto) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off), LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) -- Dry mode (on, off) - Attributes (humidifier platform) -Attribute | Description ---- | --- -`humidity` | The current `target_humidity` -`max_humidity` | The maximum settable `target_humidity` -`min_humidity` | The minimum settable `target_humidity` -`available_modes` | A list with the operation modes available -`mode` | the current operation mode selected +Attribute | Description +----------------------- | ----------------------- +`available_modes` | A list with the operation modes available +`humidity` | The current target humidity +`max_humidity` | The maximum settable target humidity +`min_humidity` | The minimum settable target humidity +`mode` | The current operation mode selected + +- Binary sensor entities + +Binary sensor | Description +----------------------- | ----------------------- +Water Tank | Indicates whether the water tank is connected or not + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) - Sensor entities -Sensor | Description ---- | --- -`humidity` | The current `humidity` measured -`temperature` | The current `temperature` measured +Sensor | Description +----------------------- | ----------------------- +Humidity | The current humidity measured +Temperature | The current temperature measured +Water Level | The current water level percentage measured -### Air Fresh VA2 +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +Child Lock | Turn on/off the child lock +Dry Mode | Turn on/off the dry mode + +### Air Humidifier JSQ/JSQ1/MJJSQ (deerma.humidifier.jsq/deerma.humidifier.jsq1/deerma.humidifier.mjjsq) + +- On, Off +- Operation modes (low, medium, high, humidity) +- Target humidity (30, 40, 50, 60, 70, 80) +- Attributes (humidifier platform) + +Attribute | Description +----------------------- | ----------------------- +`available_modes` | A list with the operation modes available +`humidity` | The current target humidity +`max_humidity` | The maximum settable target humidity +`min_humidity` | The minimum settable target humidity +`mode` | The current operation mode selected + +- Binary sensor entities + +Binary sensor | Description +----------------------- | ----------------------- +Water Tank | Indicates whether the water tank is connected or not +Water Tank Empty | Indicates whether the water tank is empty or not + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Humidity | The current humidity measured +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off the buzzer +LED | Turn on/off the LED + +### Standing Fan 1X (dmaker.fan.p5) - Power (on, off) -- Operation modes (auto, silent, interval, low, middle, strong) -- Buzzer (on, off) -- Child lock (on, off) -- LED (on, off), LED brightness (bright, dim, off) -- Attributes - - `model` - - `aqi` - - `average_aqi` - - `temperature` - - `humidity` - - `co2` - - `mode` - - `led` - - `led_brightness` - - `buzzer` - - `child_lock` - - `filter_life_remaining` - - `filter_hours_used` - - `use_time` - - `motor_speed` - - `extra_features` +- Operation modes (Normal, Nature) +- Oscillation (on, off) +- Number entities + +Number | Description +----------------------- | ----------------------- +Delay Off Countdown | Set the delay off countdown in minutes +Oscillation Angle | Set the oscillation angle in degrees + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off `buzzer` +Child Lock | Turn on/off `child lock` +LED | Turn on/off `led` + +### Standing Fan (zhimi.fan.za1, zhimi.fan.za3, zhimi.fan.za4, zhimi.fan.sa1) + +- Power (on, off) +- Operation modes (Normal, Nature) +- Oscillation (on, off) +- Number entities + +Number | Description +----------------------- | ----------------------- +Delay Off Countdown | Set the delay off countdown in minutes +Oscillation Angle | Set the oscillation angle in degrees + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off `buzzer` +Child Lock | Turn on/off `child lock` + +### DC Pedestal Fan (zhimi.fan.v2, zhimi.fan.v3) + +- Power (on, off) +- Operation modes (Normal, Nature) +- Oscillation (on, off) +- Number entities + +Number | Description +----------------------- | ----------------------- +Delay Off Countdown | Set the delay off countdown in minutes +Oscillation Angle | Set the oscillation angle in degrees + +- Select entities + +Select | Description +----------------------- | ----------------------- +LED Brightness | Controls the brightness of the LEDs (bright, dim, off) + +- Sensor entities + +Sensor | Description +----------------------- | ----------------------- +Battery | The current battery level in percentage +Humidity | The current humidity measured +Temperature | The current temperature measured + +- Switch entities + +Switch | Description +----------------------- | ----------------------- +Buzzer | Turn on/off `buzzer` +Child Lock | Turn on/off `child lock` ### Platform Services -
-For supported Air Humidifiers additional entities for will be generated automatically (if supported) and added to the entity registry based on the platforms: -

-The sensor platform does not supply additional services. -
+### Service `humidifier.set_humidity` -| Platform | Service(s) | Related auto generated device entities | -|--------------|----------------------------|-------------------------------------------------------------| -| `humidifier` | `set_humidity`, `set_mode` | Main device entity | -| `switch` | `turn_on`, `turn_off` | `buzzer`, `child_lock`, `cleaning_mode` and `dry_mode` | -| `sensor` | _None_ | `actual_speed`, `humidity`, `temperature` and `water_level` | -| `number` | `set_value` | `motor_speed` | -| `select` | `select_option` | `led_brightness` | +Set the target humidity. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------------------| +| `entity_id` | no | Only act on a specific Xiaomi miIO humidifier entity. | +| `humidity` | no | Target humidity | + +### Service `humidifier.set_mode` + +Set the humidifier operation mode. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------------------| +| `entity_id` | no | Only act on a specific Xiaomi miIO humidifier entity. | +| `mode` | no | The Xiaomi miIO operation mode | ### Service `fan.set_percentage` @@ -583,147 +826,6 @@ Set the fan operation mode. | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `preset_mode` | no | The Xiaomi miIO operation mode | -### Service `switch.turn_on` (Air Humidifiers only) - -Turn the `buzzer`, `child_lock`, `cleaning_mode` or `dry_mode` on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `switch.turn_off` (Air Humidifiers only) - -Turn `buzzer`, `child_lock`, `clean_mode` or `dry_mode` on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_buzzer_on` (Air Purifier Pro and Air Humidifiers excluded) - -Turn the buzzer on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_buzzer_off` (Air Purifier Pro and Air Humidifiers excluded) - -Turn the buzzer off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_led_on` (Air Purifiers only) - -Turn the LED on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_led_off` (Air Purifiers only) - -Turn the LED off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_child_lock_on` (Air Humidifiers excluded) - -Turn the child lock on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_child_lock_off` (Air Humidifiers excluded) - -Turn the child lock off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `select.select_option` (Air Humidifiers only) - -Set the LED brightness. Supported values are 'Bright', 'Dim', 'Off'. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -| `option` | no | Brightness option. Should be 'Bright', 'Dim' or 'Off' | - -### Service `xiaomi_miio.fan_set_led_brightness` (Air Humidifiers, Air Purifier 2S and Air Purifier Pro excluded) - -Set the LED brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -| `brightness` | no | Brightness, between 0 and 2. | - -### Service `xiaomi_miio.fan_set_favorite_level` (Air Purifiers only) - -Set the favorite level of the operation mode "favorite". - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -| `level` | no | Level, between 0 and 16. | - -### Service `xiaomi_miio.fan_set_fan_level` (Air Purifiers only) - -Set the fan level for "fan" operation mode. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi MiOT fan entity. | -| `level` | no | Level, between 1 and 3. | - -### Service `xiaomi_miio.fan_set_auto_detect_on` (Air Purifier 2S and Air Purifier Pro only) - -Turn the auto detect on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_auto_detect_off` (Air Purifier 2S and Air Purifier Pro only) - -Turn the auto detect off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_learn_mode_on` (Air Purifier 2 only) - -Turn the learn mode on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_learn_mode_off` (Air Purifier 2 only) - -Turn the learn mode off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | - -### Service `xiaomi_miio.fan_set_volume` (Air Purifier Pro only) - -Set the sound volume. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -| `volume` | no | Volume, between 0 and 100. | - ### Service `xiaomi_miio.fan_reset_filter` (Air Purifier 2 only) Reset the filter lifetime and usage. @@ -741,15 +843,6 @@ Set the extra features. | `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `features` | no | Integer, known values are 0 and 1. | -### Service `number.set_value` (Air Humidifier CA4) - -Set motor speed RPM. - -| Service data attribute | Optional | Description | -|---------------------------|----------|----------------------------------------------------------| -| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | -| `value` | no | Motor speed RPM. Allowed values are between 200 and 2000 | - ### Troubleshooting `Unable to find device` error messages Check if the device is in the same subnet as the Home Assistant instance. Otherwise, you should configure your router/firewall to put this device in the same VLAN as the Home Assistant instance. @@ -1550,13 +1643,13 @@ One of Home Assistant users wrote a tokens extractor tool, which is currently th ```bash pip3 install pycryptodome pybase64 requests ``` - + 2. Run script ```bash python3 token_extractor.py ``` - + 3. Provide e-mail address or username for Xiaomi's account, password and country of the account (most used: CN - China Mainland, DE - Germany etc.) 4. Script will print out all devices connected to the account with their IP address and tokens for use in Home Assistant. @@ -1577,7 +1670,7 @@ Note: If you have multiple devices needing a token, e.g., Xiaomi Mi Robot Vacuum ### Using Get Mi Home Devices Token App -If you are on a Windows or macOS device, you can use the [Get MiHome devices token](https://github.com/Maxmudjon/Get_MiHome_devices_token/releases) App to retrieve the token. Click the link, download the file that corresponds to your OS, enter your login details and it will retrieve the access token. +If you are on a Windows or macOS device, you can use the [Get MiHome devices token](https://github.com/Maxmudjon/Get_MiHome_devices_token/releases) App to retrieve the token. Click the link, download the file that corresponds to your OS, enter your login details and it will retrieve the access token. ### Alternative methods diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index 67355b698d1..3e6115ded91 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -27,3 +27,33 @@ The Yamaha MusicCast integration implements the grouping services. There are som - It is not possible to let mediaplayer entities of the same device (e.g., different zones) be in distinct groups. - If a non-main zone is the master of a group, it is not possible to let other mediaplayers of the same device join this group. + +## Play Media functionality + +The MusicCast integration supports the Home Assistant media browser for all streaming services, your device supports. For services such as Deezer, you have to log in using the official MusicCast app. In addition, local HTTP URLs can be played back using this service. This includes the Home Assistant text to text services. + +It is also possible to recall NetUSB presets using the play media service. To do so "presets:" has to be used as `media_content_id` in the service call. + +### Examples: + +This is an example service call that plays an audio file from a web server on the local network (like the Home Assistant built-in webserver): + +```yaml +service: media_player.play_media +target: + entity_id: media_player.sonos +data: + media_content_type: "music" + media_content_id: "http://192.168.188.18:8123/local/sound_files/doorbell-front.mp3" +``` + +This example call shows how to call netusb preset 1: + +```yaml +service: media_player.play_media +target: + entity_id: media_player.buro +data: + media_content_id: "presets:1" + media_content_type: "music" +``` diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 1290ccd22dc..31fa04b6823 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -4,18 +4,20 @@ description: Instructions on how to setup Yeelight Wifi devices within Home Assi ha_category: - Light ha_release: 0.32 -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - '@rytilahti' - '@zewelor' - '@shenxn' + - '@starkillerOG' ha_domain: yeelight ha_platforms: - binary_sensor - light ha_homekit: true ha_dhcp: true +ha_quality_scale: platinum --- The `yeelight` integration allows you to control your Yeelight Wi-Fi bulbs with Home Assistant. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index c1ec45ff760..bbe885311fc 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -145,6 +145,8 @@ A list of available device paths can be found in **Supervisor** > **System** > * Press `Submit`. The success dialog will appear or an error will be displayed in the popup. An error is likely if Home Assistant can't access the USB device or your device is not up to date. Refer to [Troubleshooting](#troubleshooting) below for more information. +### ZiGate or Sonoff ZBBridge Devices + If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path configuration: - ZiGate USB TTL or DIN: `/dev/ttyUSB0` or `auto` to auto discover the zigate @@ -152,6 +154,19 @@ If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path c - Wifi Zigate : `socket://[IP]:[PORT]` for example `socket://192.168.1.10:9999` - Sonoff ZBBridge : `socket://[IP]:[PORT]` for example `socket://192.168.1.11:8888` +### Discovery via USB or Zeroconf + +Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience: + +| Device | Discovery Method | Identifier | +| -------| ---------------- | ---------- | +| [ConBee II](https://phoscon.de/en/conbee2) | USB | 1CF1:0030 | +| [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) | USB | 10C4:8A2A | +| [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/) | USB | 10C4:EA60 | +| [Tube Zigbee Coordinator](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. | + +Additional devices in the [Known working Zigbee radio modules](#known-working-zigbee-radio-modules) list may be discoverable, however, only devices that have been confirmed discoverable are listed above. + ## Configuration - YAML For more advanced configuration, you can modify `configuration.yaml` and restart Home Assistant diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index ce9400e3710..2f21ec7075d 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -11,6 +11,7 @@ ha_category: - Light - Lock - Number + - Select - Sensor - Siren - Switch @@ -29,6 +30,7 @@ ha_platforms: - lock - number - sensor + - select - siren - switch --- @@ -45,6 +47,19 @@ Note: A new network key is automatically generated for you. If this Z-Wave stick If you do not run Home Assistant OS (the default installation type) or Home Assistant Supervised, please see the [advanced installation instructions](#advanced-installation-instructions). +### Discovery via USB + +Some devices can be auto-discovered, which can simplify the Z-Wave JS setup process. The following devices have been tested with discovery, and offer a quick setup experience: + +| Device | Identifier | Vendor | +| -------| ---------- | ------ | +| Aeotec Z-Stick Gen5+ | 0658:0200 | https://aeotec.com/z-wave-usb-stick/ | +| Nortek HUSBZB-1 | 10C4:8A2A | https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/ | +| Zooz ZST10 | 10C4:EA60 | https://www.getzooz.com/zooz-zst10-s2-stick.html | +| Z-WaveMe UZB | 0658:0200 | https://z-wave.me/products/uzb/ | + +Additional devices may be discoverable, however only devices that have been confirmed discoverable are listed above. + ## Using Z-Wave When the Z-Wave integration starts up, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave stick, this can take a while. Information about your devices is stored in cache files by Z-Wave JS. Be aware that (re)starting the Z-Wave server will cause your network to be (partially) unresponsive until the interview process is done. @@ -65,8 +80,9 @@ This service will update a configuration parameter. To update multiple partial p | Service Data Attribute | Required | Description | |------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | -| `device_id` | no | ID of device to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | +| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | | `parameter` | yes | The parameter number or the name of the property. The name of the property is case sensitive. | | `bitmask` | no | The bitmask for a partial parameter in hex (0xff) or decimal (255) format. If the name of the parameter is provided, this is not needed. | | `value` | yes | The target value for the parameter as the integer value or the state label. The state label is case sensitive. | @@ -117,8 +133,9 @@ This service will bulk set multiple partial configuration parameters. Be warned | Service Data Attribute | Required | Description | |------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | -| `device_id` | no | ID of device to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | +| `entity_id` | no | Entity (or list of entities) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | | `parameter` | yes | The parameter number of the property. The name of the property is case sensitive. | | `value` | yes | Either the raw integer value that you want to set for the entire parameter, or a dictionary where the keys are either the bitmasks (in integer or hex form) or the partial parameter name and the values are the value you want to set on each partial (either the integer value or a named state when applicable). Note that when using a dictionary, and bitmasks that are not provided will be set to their currently cached values. | @@ -214,8 +231,9 @@ This service will set a value on a Z-Wave device. It is for advanced use cases w | Service Data Attribute | Required | Description | |------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | -| `device_id` | no | ID of device to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | +| `entity_id` | no | Entity (or list of entities) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | | `command_class` | yes | ID of Command Class that you want to set the value for. | | `property` | yes | ID of Property that you want to set the value for. | | `property_key` | no | ID of Property Key that you want to set the value for. | @@ -230,8 +248,9 @@ This service will set a value on multiple Z-Wave devices using multicast. It is | Service Data Attribute | Required | Description | |------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least two `entity_id` or `device_id` must be provided if not broadcasting the command. | -| `device_id` | no | ID of device (or list of device IDs) to set the configuration parameter on. At least two `entity_id` or `device_id` must be provided if not broadcasting the command. | +| `entity_id` | no | Entity (or list of entities) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | | `broadcast` | no | Boolean that indicates whether you want the message to be broadcast to all nodes on the network. If you have only one Z-Wave JS network configured, you do not need to provide a `device_id` or `entity_id` when this is set to true. When you have multiple Z-Wave JS networks configured, you MUST provide at least one `device_id` or `entity_id` so the service knows which network to target. | | `command_class` | yes | ID of Command Class that you want to set the value for. | | `property` | yes | ID of Property that you want to set the value for. | @@ -246,8 +265,9 @@ Calling this service forces Z-Wave JS to try to reach a node. This can be used t | Service Data Attribute | Required | Description | |------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id` or `device_id` must be provided. | -| `device_id` | no | ID of device to ping. At least one `entity_id` or `device_id` must be provided. | +| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. | This service can be used in tandem with the node status sensor (disabled by default) to track the node's status and fire the command when needed. Here's an example automation that would ping a node when the node status sensor state has changed to dead and remained dead for 30 minutes. Note that this may be useful for some devices but will definitely not be useful for all. In cases where it is not useful, all you will be doing is generating additional traffic on your Z-Wave network which could slow down communication. @@ -411,6 +431,58 @@ action: entity_id: switch.in_wall_dual_relay_switch_2, switch.in_wall_dual_relay_switch_3 ``` +## Automations + +### Device automations + +Z-Wave JS has support for device triggers and conditions. To use a device automation, use the automation UI to select the "Device" trigger/condition type, and then pick your Z-Wave JS device. Under trigger/condition types, you will see Z-Wave JS specific entries. + +### `zwave_js.value_updated` trigger + +Z-Wave JS provides the `zwave_js.value_updated` trigger platform which can be used to trigger automations on any Z-Wave JS value update, including Z-Wave values that aren't supported in Home Assistant via entities. While they can't be authored from the automation UI, they can be authored in YAML directly in your `configuration.yaml`. + +```yaml +# Example automation trigger that fires whenever the `latchStatus` value changes from `closed` to `opened` on the three devices (devices will be derived from an entity ID). +trigger: + platform: zwave_js.value_updated + # At least one `device_id` or `entity_id` must be provided + device_id: 45d7d3230dbb7441473ec883dab294d4 # Garage Door Lock device ID + entity_id: + - lock.front_lock + - lock.back_door + # `property` and `command_class` are required + command_class: 98 # Door Lock CC + property: "latchStatus" + # `property_key` and `endpoint` are optional + property_key: null + endpoint: 0 + # `from` and `to` will both accept lists of values and the trigger will fire if the value update matches any of the listed values + from: + - "closed" + - "jammed" + to: "opened" +``` + +#### Available Trigger Data + +In addition to the [standard automation trigger data](docs/automation/templating/#all), the `zwave_js.value_updated` trigger platform has additional trigger data available for use. + +| Template variable | Data | +|------------------------------|--------------------------------------------------------------------------------------------| +| `trigger.device_id` | Device ID for the device in the device registry. | +| `trigger.node_id` | Z-Wave node ID. | +| `trigger.command_class` | Command class ID. | +| `trigger.command_class_name` | Command class name. | +| `trigger.property` | Z-Wave Value's property. | +| `trigger.property_name` | Z-Wave Value's property name. | +| `trigger.property_key` | Z-Wave Value's property key. | +| `trigger.property_key_name` | Z-Wave Value's property key name. | +| `trigger.endpoint` | Z-Wave Value's endpoint. | +| `trigger.previous_value` | The previous value for this Z-Wave value (translated to a state name when possible). | +| `trigger.previous_value_raw` | The raw previous value for this Z-Wave value (the key of the state when a state is named). | +| `trigger.current_value` | The current value for this Z-Wave value (translated to a state name when possible). | +| `trigger.current_value_raw` | The raw current value for this Z-Wave value (the key of the state when a state is named). | + ## Current Limitations - While support for the most common devices is working, some command classes are not yet (fully) implemented in Z-Wave JS. You can track the status [here](https://github.com/zwave-js/node-zwave-js/issues/6). diff --git a/source/_posts/2021-09-01-release-20219.markdown b/source/_posts/2021-09-01-release-20219.markdown new file mode 100644 index 00000000000..6a79f357cf2 --- /dev/null +++ b/source/_posts/2021-09-01-release-20219.markdown @@ -0,0 +1,2681 @@ +--- +layout: post +title: "2021.9.0: More energy, USB discovery, template ❤️" +description: "Adding home battery and gas support to the Energy dashboard and show data for different time periods, more long-term statistics, USB discovery, and more advanced templating features" +date: 2021-09-01 00:00:00 +date_formatted: "September 1, 2021" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2021-09/social.png +feedback: true +--- + + + +Last release we introduced Home Energy management, and we are so happy with all the reactions and response we have received ❤️! +In this version we have added some much requested features to make it even more useful, also a lot more integrations now have support for it ⚡️. + +Personally I also really like the new long term statistics and statistics card introduced last release, and I'm really happy that in this release we will be able to use it for a lot more sensors. + +Enjoy another great release! Be sure to tune into [the 2021.9 Release Party on YouTube](https://www.youtube.com/watch?v=CxrB7DmkDJQ) later today (9:00 PM CET) to learn more about this release! + +- [Home Energy Management updates](#home-energy-management-updates) + - [View energy usage over a period of time](#view-energy-usage-over-a-period-of-time) + - [Keeping track of your gas usage](#keeping-track-of-your-gas-usage) + - [Support for home batteries](#support-for-home-batteries) + - [Added support for many more integrations](#added-support-for-many-more-integrations) +- [Long term statistics unlocked for all sensors](#long-term-statistics-unlocked-for-all-sensors) +- [USB Discovery](#usb-discovery) +- [Z-Wave JS Updates](#z-wave-js-updates) +- [New template entities: Number and Select](#new-template-entities-number-and-select) +- [New template functions for areas](#new-template-functions-for-areas) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [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) + +## Home Energy Management updates + +Last release, we [introduced the new Home Energy management features][energy] +into Home Assistant and we are happy to see you like it! + +We have seen quite a few people sharing their Energy dashboards on socials like +[Facebook][facebook] and [Twitter][twitter], which is really awesome. +Share a screenshot of your dashboard and your story too! + +In this release, the story continues! Here is what we have in store for you: + +[energy]: /blog/2021/08/04/home-energy-management/ +[facebook]: https://www.facebook.com/groups/HomeAssistant +[twitter]: https://twitter.com/home_assistant + +### View energy usage over a period of time + +The first iteration of the Energy Dashboard showed a single day at the time. +Great! But what if you want to see how you did this week? Or month? Heck, a +year even?! + +Well, now you can! In the top right of the dashboard, you can now select the +grouping period you want to see: Day, Week, Month or Year. + +

+Screenshot of the new Energy Dashboard period selection +Screenshot of the new Energy Dashboard period selection. +

+ +The arrow buttons allow you to browse through those periods. For example, when +selecting a period of a month to display, the arrow buttons will take +you a whole month back/forward in the view. + +### Keeping track of your gas usage + +In some countries, homes are connected to gas. The gas is being used to heat +water, cook and for heating the house. If you have a home that is connected to +gas, we have some great news for you! + +Maybe you noticed it already in the previous screenshot, as of this release, +we have added support for monitoring your gas usage. + +

+Screenshot of the new Energy Dashboard monitoring gas usage +Screenshot of the new Energy Dashboard monitoring gas usage. +

+ +In certain countries, the gas meters have a standardized way of reading +out the gas usage locally or provide this information via the electricity +meter. For example, in the Netherlands, Belgium and Luxembourg you could +use the [SlimmeLezer](https://www.zuidwijk.com/product/slimmelezer/) +to obtain your gas usage. + +### Support for home batteries + +Having solar panels is a great way to generate electricity to power your home. +However, where do you store energy generated by your solar panels that you +don't need right now? + +Well, for many, the solution resides in a, high capacity, home battery to store +electricity for use when the sun can't provide it (e.g., during the night). + +Numerous have requested this feature, and therefore we now have added support +for home batteries to the Home Assistant energy management. + +

+Animation of a home battery as part of the energy distribution +Animation of a home battery as part of the energy distribution. +

+ +### Added support for many more integrations + +When releasing a feature such as the Home Energy management, we understand you +want to use and play with it right away. And while we had prepared and updated +a lot of integrations to be ready when we first launched, there were still +many in need of an update. + +As a result, we have been flooded by requests to add support to virtually all +integrations that didn't had it yet... :) Many of those requests have been +fulfilled in this release. + +For example, the [Kostal Plenticore Solar Inverter](/integrations/kostal_plenticore), +[PVOutput](/integrations/pvoutput), [Fronius](/integrations/fronius), +[SolaX Power](/integrations/solax), [Growatt](/integrations/growatt_server), +[Solar-Log](/integrations/solar_log), [YouLess](/integrations/youless), +[Emoncms](/integrations/emoncms), [Modbus](/integrations/modbus), +and many more have added support for all the energy goodness. + +If you are a custom integration developer who wants to add support, be sure to +check out our [developer blog](https://developers.home-assistant.io/blog/2021/08/16/state_class_total/) +to catch up with the latest changes. + +## Long term statistics unlocked for all sensors + +In the previous release, we [introduced long term statistics][statistics] +for sensors, including a beautiful Lovelace card that goes with it. However, +in the previous release we had limited this feature to temperature, +humidity, power and energy related sensors. + +As of this release, we unleashed the long term statistics for all sensors! + +

+Screenshot of a statistics graph showing the luminosity in the garden versus the front of my house +Screenshot of a statistics graph showing the luminosity in the garden versus the front of my house. +

+ +Long term statistics applies to all integrations that indicate their sensors +support those. Luckily a lot have already done so. + +[statistics]: /blog/2021/08/04/release-20218/#long-term-statistics + +## USB Discovery + +Thanks to [@bdraco], Home Assistant can now discover USB devices and the +integrations that work with that device. This makes setting up +things like Z-Wave or Zigbee with Home Assistant an actual breeze now! + +For example, if you plug in your new Nortek HubZ USB stick into the +machine running Home Assistant, it will discover and notify you about it. + +

+Screenshot of a discovered USB device compatible with Z-Wave JS +Screenshot of a discovered USB device compatible with Z-Wave JS. +

+ +Now it is just a single click on the "Configure" button to set up the Z-Wave JS +integration and done! Super nice! + +Support for USB discovery has currently been added to the +[Z-Wave JS](/integrations/zwave_js) and [ZHA](/integrations/zha) integrations. + +## Z-Wave JS Updates + +If you are a Z-Wave siren/doorbell owner, you probably know how frustrating it +was to wait for Home Assistant to add entity support for the Sound Switch CC +(Command Class). This is caused by the blazing fast speed the upstream Z-Wave JS +project is moving forward at; Often much faster than Home Assistant is able +to keep up with. + +It also might be that Home Assistant cannot (or is likely not to) support the +specific command class you care about; Nevertheless, that shouldn't stop you +from being able to create automations for those devices! + +In this release, we have introduced the new `zwave_js.value_updated` automation +trigger type which will allow you to trigger an automation off of any +Command Class value that Z-Wave JS supports! + +In order to leverage this trigger type in the UI, you will have to +use [device automations](/integrations/zwave_js#device-automations), +but if you are writing your automations in YAML, you can +[use the trigger directly](/integrations/zwave_js#zwave_jsvalue_updated-trigger). + +That's not all for Z-Wave JS integration, we have more to share! + +- Tired of your child flipping that switch that's fully automated? Use the new + `select` entity for the Protection Command Class to disable local access. +- Don't want to specify the tone and volume every time you activate your siren? + Now you have access to the default volume via a `number` entity and the + default tone via a `select` entity. +- We've made `zwave_js.*` services more flexible: They now support area IDs + and `group` entities as inputs! +- We've made basic CC values directly controllable by moving them from using + `sensor` entities to become `number` entities instead. + +## New template entities: Number and Select + +Yes! We have new platforms you can utilize using the template integration! + +Thanks to [@raman325] you can now template your own `select` and `number` +entities! This unlocks quite the potential for creating some advanced +user interfaces :) + +As an example says more than a thousand words, here are two examples that both +are based on a WLED LED strip. It can be used to extract features from +the WLED strip into their own entities. + +{% raw %} + +```yaml +# Example number entity that represents the effect speed on a WLED LED strip +# between 0 and 100%, translating it from an 0 to 255 scale. +template: + number: + - name: "Example number: WLED effect speed" + state: "{{ (( state_attr("light.wled", "Speed") / 255) * 100) | round }}" + min: 0 + max: 100 + set_value: + service: wled.effect + target: + entity_id: light.wled + data: + speed: "{{ (255 / 100) * value }}" +``` + +```yaml +# Example select entity that extracts effects from a light. +# When you change the selected option, the effect of the light changes. +template: + select: + - name: "Example select: WLED effect" + state: "{{ state_attr("light.wled", "effect") }}" + options: "{{ state_attr("light.wled", "effect_list") }}" + select_option: + service: light.turn_on + target: + entity_id: light.wled + data: + effect: "{{ option }}" +``` + +{% endraw %} + +Oh! And they can also be used with the new trigger templates! Check out +[the documentation](/integrations/template) for all options available. + +## New template functions for areas + +Two new template functions have been added, making working with areas +in YAML (when using templating) a little bit easier. + +- `area_id("value")` returns the area ID for a given value. The `value` can be +a device ID, entity ID, or area name. This function can also be used as a filter. + +{% raw %} + + ```yaml + example: "{{ area_id("light.living_room_tv") }}" + example: "{{ area_id("Garden Shed") }}" + example: "{{ trigger.entity_id | area_id }}" + ``` + +{% endraw %} + +- `area_name("value")` returns the area name for a given value. The `value` can + be a device ID, entity ID, or area ID. This function can also be used as a filter. + +{% raw %} + + ```yaml + service: notify.frenck + data: + title: "Motion detected!" + message: >- + Motion has been detected in the {{ area_name(trigger.entity_id) }} area. + ``` + +{% endraw %} + +Thanks [@raman325]! + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +- [@balloob] added a lot more validations to the energy configuration UI + and added more warning/error messages. [@ludeeus] made them look good by + adding a beautiful new styling for these kind of messages. +- Home Assistant offline and missed generating its energy/long statistics? + Not anymore! Home Assistant will now catch up on start, thanks [@emontnemery]! +- Thanks to [@bdraco], camera images can now be scaled to a resolution that + fits the device/screen you are looking at; Additionally, they only update + when visible. This makes cameras usable in any bandwidth situation. +- The Shelly integration now supports transitions for lights! Thanks [@bieniu]! +- Yeelight now supports local push (instead of polling), awesome [@starkillerOG]! +- [@emontnemery] upgraded DSMR to support Swedish smart energy meters! Nice! +- For Yamaha MusicCast, [@micha91] has unlocked the Media Browser features! +- The Rainforest Eagle will now provide pricing data if that is available, + thanks [@balloob]! +- [@giannello] added the ability to ask your Google Home where your vacuum + cleaner is :) +- If you use the shopping list feature of Home Assistant, you can now remove + all completed items at once using a service call. Thanks, [@GrumpyMeow]! +- [@bdraco] Added a new advanced feature for HomeKit, allowing to forward device + events to HomeKit, unlocking the ability to trigger HomeKit automations or + scenes. +- Thanks to [@ludeeus], we can now use different brand images in the UI when + it is in dark mode. +- If you have a Sonos speaker, you can now modify the bass & treble level + using a service call, thanks [@Tigger2014]! +- Utility Meter cycles are now super flexible with the new cron patterns + option, nice [@dgomes]! +- Bond now provides new services to start/stop increasing/decreasing the + brightness of a light. Thanks [@bdraco]! + +## New Integrations + +We welcome the following new integrations this release: + +- [AirTouch 4][airtouch4 docs], added by [@LonePurpleWolf] +- [Fjäråskupan][fjaraskupan docs], added by [@elupus] +- [P1 Monitor][p1_monitor docs], added by [@klaasnicolaas] +- [IoTaWatt][iotawatt docs], added by [@gtdiehl] +- [Tractive][tractive docs], added by [@zhulik] +- [USB Discovery][usb docs], added by [@bdraco] + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [Nanoleaf][nanoleaf docs], done by [@milanmeu] +- [Nmap Tracker][nmap_tracker docs], done by [@bdraco] +- [Rainforest EAGLE-200][rainforest_eagle docs], done by [@balloob] +- [Uptime Robot][uptimerobot docs], done by [@ludeeus] + +## 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 "1-Wire" %} + +The previously deprecated YAML configuration of the 1-Wire integration has been removed. + +1-Wire is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@epenet] - [#53728]) ([onewire docs]) + +{% enddetails %} + +{% details "AVM FRITZ!Box Tools" %} + +The attributes of the switches provided by AVM FRITZ!Box Tools have been adjusted +to match the naming rules and schema of Home Assistant. + +If you relied on one of these attributes in your automation or scripts, you'll +need to adopt to this change. + +([@AaronDavidSchneider] - [#54842]) ([fritz docs]) + +{% enddetails %} + +{% details "DSMR" %} + +The unit of measurement of gas sensors for DSMR has changed from `m3` to `m³`. + +([@bramkragten] - [#54110]) ([dsmr docs]) + +{% enddetails %} + +{% details "Epson" %} + +The previously deprecated YAML configuration of the Epson integration has been removed. + +Epson is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@pszafer] - [#55045]) ([epson docs]) + +{% enddetails %} + +{% details "Growatt" %} + +The previously deprecated YAML configuration of the Growatt integration has been removed. + +Growatt is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@frenck] - [#54325]) ([growatt_server docs]) + +{% enddetails %} + +{% details "HomeKit" %} + +The underlying HomeKit protocol version has changed from version 1.0 to version 1.1. + +Cameras with motion sensors and some other accessories may need to be reset using +the `homekit.reset_accessory` service or unpaired and paired again. + +If after unpairing with your iOS the QR code does not show, the pairings can +manually be removed with the `homekit.unpair` service using the Developer Tools. + +([@bdraco] - [#53780]) ([homekit docs]) + +{% enddetails %} + +{% details "HomeKit Controller" %} + +A future release (currently scheduled for 2021.12.0) will remove the (deprecated) +air quality platfrom from the HomeKit Controller integration. + +Starting from this release the air quality values have been broken out as their +own sensors, making them easier to incorporate in your dashboard widgets, +graphs and automations. + +If you relied on an air quality entity (provided by the HomeKit Controller +integration) in your automation or scripts, you'll need to adopt to this change. + +([@Jc2k] - [#54673]) ([homekit_controller docs]) + +{% enddetails %} + +{% details "IKEA TRÅDFRI" %} + +The legacy code, which imported hosts from a JSON file have been removed. +If you relied on that, please follow the instructions to setup the hosts +(can be detected automatically). + +To avoid this, upgrade to 2021.8.x first (which will automatically import the hosts from the JSON file) and then upgrade to latest release. + +([@janiversen] - [#54452]) ([tradfri docs]) + +{% enddetails %} + +{% details "Lutron" %} + +If (and only if) you currently attempt to make use of the (previously ambiguous) +Lutron button events in an automation, then you will need to switch to +the new, unambiguous name. That said, since the current events are ambiguous +they are not very useful. + +([@nickovs] - [#53666]) ([lutron docs]) + +{% enddetails %} + +{% details "MQTT" %} + +MQTT fan no longer supports the legacy speeds (OFF, LOW, MEDIUM, HIGH). +With release 2021.3 the support for legacy speeds was announced to be removed +after a quarter (2021.7). + +With removing the legacy speeds support, integrations that rely on MQTT fan +platform that still use legacy speeds would break because they can not be +setup if deprecated attributes are used. This includes the MQTT auto discovery. + +To prevent that these integrations will fail to setup, the deprecated attributes +listed here are still allowed in the config: + +- `payload_high_speed` +- `payload_low_speed` +- `payload_medium_speed` +- `speed_command_topic` +- `speeds` +- `speed_state_topic` +- `speed_value_template` + +([@jbouwh] - [#54768]) ([mqtt docs]) + +The `last_reset_topic` configuration variable for MQTT sensor is deprecated, `last_reset_value_template` is still supported but will use the `state_topic` if no `last_reset_topic` is configured. + +In Home Assistant core 2021.10, it will no longer be possible to configure a `last_reset_topic`. + +([@emontnemery] - [#55463]) ([mqtt docs]) + +{% enddetails %} + +{% details "MySensors" %} + +MySensors lights no longer supports deprecated `white_value`, use `rgbw_color` +instead. + +([@emontnemery] - [#52068]) ([mysensors docs]) + +{% enddetails %} + +{% details "Nanoleaf" %} + +The Nanoleaf integration migrated to configuration via the UI. Configuring +Nanoleaf 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. + +If you have configured Nanoleaf with the discovery integration: You can remove +`discovery:` from your YAML configuration if you only used it for Nanoleaf. +The `.nanoleaf.conf` file in your configuration folder is no longer used, +you can delete it after upgrading. + +([@milanmeu] - [#52199]) ([nanoleaf docs]) + +{% enddetails %} + +{% details "Nmap Tracker" %} + +The Nmap Tracker integration migrated to configuration via the UI. Configuring +Nmap Tracker 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. + +To disable creation of new entities, use the the system option to disable new +entities for the config entry, and manually enable entities as needed. + +([@bdraco] - [#54715]) ([nmap_tracker docs]) + +{% enddetails %} + +{% details "OVO Energy" %} + +These attributes have been removed and replaced with full sensors for both +gas and electricity: + +- `start_time` +- `end_time` + +If you relied on one of these attributes in your automation or scripts, you'll +need to adopt to this change. + +([@timmo001] - [#54952]) ([ovo_energy docs]) + +{% enddetails %} + +{% details "Rainforest Eagle-200" %} + +The Rainforest Eagle-200 integration migrated to configuration via the UI. +Configuring Rainforest Eagle-200 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. + +([@balloob] - [#54846]) ([rainforest_eagle docs]) + +{% enddetails %} + +{% details "SimpliSafe" %} + +SimpliSafe locks no longer have a `jammed` attribute; instead, when jammed, +they will show a `jammed` state. + +If you are currently using the `jammed` attribute in your automation or scripts, +you'll need to adapt them to this change. + +([@bachya] - [#54006]) ([simplisafe docs]) + +{% enddetails %} + +{% details "Smappee" %} + +The power and energy attributes from switch entities have been removed and +replaced by sensors. + +If you relied on these attributes in your automations, scripts or Lovelace +dashboards, you'll need to update your configuration to match this change. + +([@bsmappee] - [#54329]) ([smappee docs]) + +{% enddetails %} + +{% details "Solar-Log" %} + +The `Watt-peak` unit of measurement has changed to `W`. + +([@Ernst79] - [#55110]) ([solarlog docs]) + +{% enddetails %} + +{% details "Supervisor" %} + +The usage of "snapshot" is deprecated, from now "backup" is used instead. + +- The service `snapshot_full` is now named `backup_full`, the service `snapshot_full` will be removed in Home Assistant 2021.11. +- The service `snapshot_partial` is now named `backup_partial`, the service `snapshot_partial` will be removed in Home Assistant 2021.11. +- Using `snapshot` in the data for the `restore_full` and `restore_partial` services is deprecated and will be removed in Home Assistant 2021.11, use `slug` instead. + +Old examples: + +```yaml +service: hassio.snapshot_full +data: + name: "Awesome full snapshot" +... +service: hassio.snapshot_partial +data: + name: "Awesome partial snapshot" + addons: + - awesome_addon +... +service: hassio.restore_full +data: + snapshot: sn2321 +... +service: hassio.restore_partial +data: + snapshot: sn2321 + addons: + - awesome_addon +``` + +New examples: + +```yaml +service: hassio.backup_full +data: + name: "Awesome full snapshot" +... +service: hassio.backup_partial +data: + name: "Awesome partial snapshot" + addons: + - awesome_addon +... +service: hassio.restore_full +data: + slug: sn2321 +... +service: hassio.restore_partial +data: + slug: sn2321 + addons: + - awesome_addon +``` + +([@ludeeus] - [#53851]) ([hassio docs]) ([zwave_js docs]) + +{% enddetails %} + +{% details "Tesla Powerwall" %} + +The Tesla Powerwall attributes for `energy_exported_(in_kW)` and +`energy_imported_(in_kW)` have been converted to their own energy sensors. + +If you relied on those attributes in your automation or scripts, you'll need +to adapt them to this change. + +([@bdraco] - [#54018]) ([powerwall docs]) + +{% enddetails %} + +{% details "Toon" %} + +The unit of measurement of gas and water sensors for Toon has changed from `m3` to `m³`. + +([@bramkragten] - [#54110]) ([toon docs]) + +{% enddetails %} + +{% details "UpCloud" %} + +The previously deprecated YAML configuration of the UpCloud integration has been removed. + +UpCloud is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@scop] - [#54516]) ([upcloud docs]) + +{% enddetails %} + +{% details "Uptime Robot" %} + +The Uptime Robot integration migrated to configuration via the UI. Configuring +Uptime Robot 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. + +([@ludeeus] - [#53938]) ([uptimerobot docs]) + +{% enddetails %} + +{% details "Wink" %} + +The Wink integration has been deprecated and is pending removal in +Home Assistant 2021.11. + +Their developer portal, needed for obtaining an API token, has been taken +offline and their customer support has confirmed no new token or client/secret +can be obtained. This makes it impossible to use this integration. + +([@frenck] - [#54496]) ([wink docs]) + +{% enddetails %} + +{% details "Xiaomi Miio" %} + +The following fan entity attributes `temperature`, `humidity`, `aqi`, +`purify volume`, `filter life remaining`, `filter hours used`, `co2`, +`illuminance`, `motor speed` and `motor2 speed` have been migrated to their own +sensor entities. + +If you relied on those attributes in your automation or scripts, you'll need +to adapt them to this change. + +The `filter_rfid_product_id` and `filter_rfid_tag` fan entity attributes +have been removed as they are of little use to keep around. + +([@bieniu] - [#54564]) ([xiaomi_miio docs]) + +---- + +The service `fan_set_led_brightness` is removed and the **Led Brightness** +`select` entity has been created instead. + +If you relied on this service in your automation or scripts, you'll need +to adapt them to this change. + +([@bieniu] - [#54702]) ([xiaomi_miio docs]) + +---- + +The previously (deprecated and old style) speeds, speed list and speed services +have been removed. + +([@SmaginPV] - [#54182]) ([xiaomi_miio docs]) + +---- + +The services `fan_set_buzzer_on`, `fan_set_buzzer_off`, `fan_set_led_on`, +`fan_set_led_off`, `fan_set_child_lock_on`, `fan_set_child_lock_off`, +`fan_set_auto_detect_on`, `fan_set_auto_detect_off`, `fan_set_learn_mode_on` +and `fan_set_learn_mode_off` have been removed. + +Switch entities have been created to replace those. + +If you relied on one of these services in your automation or scripts, you'll +need to adapt them to this change. + +([@bieniu] - [#54834]) ([xiaomi_miio docs]) + +---- + +The previously deprecated YAML configuration of the Xiaomi Miio integration has +been removed (with the exception of the `remote` platform). + +Xiaomi Miio is now configured via the UI, any existing YAML configuration has +been imported in previous releases and can now be safely removed from your +YAML configuration files. + +([@rytilahti] - [#54930]) ([xiaomi_miio docs]) + +---- + +The services `fan_set_favorite_level`, `fan_set_fan_level`, and `fan_set_volume` +have been removed and `number` entities have been created instead. + +If you relied on one of these services in your automation or scripts, you'll +need to adapt them to this change. + +([@bieniu] - [#54977]) ([xiaomi_miio docs]) + +{% enddetails %} + +{% details "Z-Wave JS" %} + +The Basic CC always comes with two values, `currentValue` and `targetValue`. + +We currently only have a discovery schema for `currentValue` which creates a +sensor, making these Basic CC values noninteractive. As of this release we will +create a `number` platform entity for Basic CC values instead of sensors. + +([@raman325] - [#54512]) ([zwave_js docs]) + +---- + +If you have created an automation with the `zwave_js` device condition +`Current value of a Z-Wave Value` for the `CONFIGURATION` Command Class, +your automation will no longer work. + +Instead, you should use the `Config parameter` device condition for the value +you were trying to use for your condition. + +([@raman325] - [#54962]) ([zwave_js docs]) + +{% enddetails %} + +{% details "Custom integrations: Cameras" %} + +This breaking change is only relevant to custom integration authors! + +The function signature for `async_camera_image` and `camera_image` has changed +to include a width and height. + +```py + async def async_camera_image( + self, width: int | None = None, height: int | None = None + ) -> bytes | None: +``` + +The goal of the change is to reduce the overhead of sending large images that +will only be displayed as small images as this can quickly consume hundred of +megabytes of bandwidth / mobile data allocation. +Scaling should be done on a best effort basis and is not a strict requirement +as the existing behavior of falling back to scaling at the display layer is +preserved. + +- Integrations should pass on the width and height if the underlying + camera is capable of scaling the image. + +- Integrations may choose to ignore the height parameter in order to + preserve aspect ratio + +- If the integration cannot scale the image and returns a jpeg image, it will + automatically be scaled by the camera integration when requested. + +([@bdraco] - [#53835]) + +{% enddetails %} + +{% details "Custom integrations: Sensors" %} + +This breaking change is only relevant to custom integration authors! + +Although not a breaking change from a user's perspective, this is a significant +change from a developer's perspective. + +Temperature conversions are moving from the `Entity` base class to the +`SensorEntity` base class. + +Additionally, we have two new properties, `native_value` (which replaces `state`) +and `native_unit_of_measurement` which replaces `unit_of_measurement`. + +Read all about it in the developer blog: + + + +([@emontnemery] - [#48261]) ([abode docs]) ([sensor docs]) + +---- + +Additionally, a new sensor state class has been introduced: `total_increasing`. + +This changes the `measurement` state class that was used in conjunction with the +`last_reset` attribute. For more information about his can be found in the +developer blog about it: + + + +{% enddetails %} + +## All changes + +{% details "Click to see all changes!" %} + +- Add renault integration ([@epenet] - [#39605]) ([renault docs]) (new-integration) +- Bump version to 2021.9.0dev0 ([@frenck] - [#53638]) +- Correct typing in Zerproc and activate mypy ([@milanmeu] - [#53642]) ([zerproc docs]) +- Fix Lutron button events to have unambiguous names ([@nickovs] - [#53666]) ([lutron docs]) (breaking-change) +- Clean up Surpetcare ([@Danielhiversen] - [#53699]) ([surepetcare docs]) +- Replace lists with tuples (2) ([@cdce8p] - [#53685]) +- wemo light brightness fixes ([@esev] - [#53740]) ([wemo docs]) +- Remove YAML configuration from onewire ([@epenet] - [#53728]) ([onewire docs]) (breaking-change) +- Use constants for device_info in Onewire integration ([@epenet] - [#53724]) ([onewire docs]) +- Use constants for device_info in Renault integration ([@epenet] - [#53714]) ([renault docs]) +- fix flakky test ([@dgomes] - [#53750]) ([prosegur docs]) +- Update integration Fints with activate mypy, use attr_variables ([@janiversen] - [#53706]) ([fints docs]) +- Fix flaky netatmo tests ([@cgtobi] - [#53644]) ([netatmo docs]) +- Improve light scene support for white mode ([@emontnemery] - [#53768]) ([light docs]) +- Bump vallox-websocket-api to 2.8.1 ([@timmo001] - [#53463]) ([vallox docs]) +- Revert "Improve light scene support for white mode (#53768)" ([@balloob] - [#53782]) ([light docs]) +- Simplify DATA_TYPE -> struct conversion. ([@janiversen] - [#53805]) ([modbus docs]) +- Activate mypy for hdmi_cec ([@janiversen] - [#53763]) ([hdmi_cec docs]) +- Bump Amcrest version to 1.8.0 ([@flacjacket] - [#53784]) ([amcrest docs]) +- Please mypy. ([@janiversen] - [#53786]) ([marytts docs]) +- Rename snapshot -> backup ([@ludeeus] - [#53851]) ([hassio docs]) ([zwave_js docs]) (breaking-change) +- Activate mypy for Sony Songpal ([@milanmeu] - [#53655]) +- Convert @property to _attr_variable for hdmi_sec ([@janiversen] - [#53816]) ([hdmi_cec docs]) +- Activate mypy for Norway_air ([@janiversen] - [#53787]) ([norway_air docs]) +- Bump HAP-python to 4.0.0 ([@bdraco] - [#53780]) ([homekit docs]) (breaking-change) +- Improve Universal media player toggle default behavior ([@TastyPi] - [#49395]) ([universal docs]) +- Use homeassistant.const instead of integration const for device_info ATTR_ ([@milanmeu] - [#53703]) +- Late review on hdmi_cec (#53763) ([@janiversen] - [#53863]) ([hdmi_cec docs]) +- Add edl21 OBIS IDs for DZG DWS76 ([@pdcemulator] - [#53029]) ([edl21 docs]) +- Add state class measurement to all suitable sensors on Speedtest.net ([@mib1185] - [#53693]) ([speedtestdotnet docs]) +- Add support for MJJSQ humidifiers for Xiaomi MIIO integration ([@bieniu] - [#53807]) ([xiaomi_miio docs]) +- System Bridge v2.3.0+ - Data from WebSocket ([@timmo001] - [#53443]) ([system_bridge docs]) +- Add meta container data to rootfs ([@pvizeli] - [#53903]) +- Use SensorEntityDescription class for Xiaomi Miio ([@bieniu] - [#53890]) ([xiaomi_miio docs]) +- Add support for Eve Degree's air pressure sensor ([@Jc2k] - [#53891]) ([homekit_controller docs]) +- Allow esphome entities to be disabled by default ([@jesserockz] - [#53898]) ([esphome docs]) +- Stream API requests to the supervisor ([@ludeeus] - [#53909]) ([hassio docs]) +- Check for torrents in queue before calling the api stop_torrent() ([@jshank] - [#53895]) ([transmission docs]) +- Add "stop watering" service to rachio ([@adamjernst] - [#53764]) ([rachio docs]) +- Add target high/low temperatures to prometheus integration ([@mdz] - [#50071]) ([prometheus docs]) +- Enable mypy for Yamaha ([@janiversen] - [#53920]) ([yamaha docs]) +- Use the github context when writing metafile ([@ludeeus] - [#53928]) +- Validate Select option before calling entity method ([@jbouwh] - [#52352]) ([demo docs]) ([select docs]) +- Add xiaomi miio lumi.gateway.aqhm01 support ([@starkillerOG] - [#53929]) ([xiaomi_miio docs]) +- Validate Number value before calling entity method ([@jbouwh] - [#52343]) ([number docs]) +- Use `NumberEntityDescription` for Xiaomi Miio ([@bieniu] - [#53911]) ([xiaomi_miio docs]) +- Late review. ([@janiversen] - [#53933]) ([yamaha docs]) +- Upgrade anthemav dependency to 1.2.0 ([@Hyralex] - [#53931]) ([anthemav docs]) +- Remove Xiaomi_miio number value validation ([@jbouwh] - [#53934]) ([xiaomi_miio docs]) +- Remove Xiaomi_miio select option validation ([@jbouwh] - [#53936]) ([xiaomi_miio docs]) +- Activate mypy for LG webOS Smart TV ([@milanmeu] - [#53958]) ([webostv docs]) +- Add config flow to uptimerobot ([@ludeeus] - [#53938]) ([uptimerobot docs]) (breaking-change) +- Add support for jammed status to SimpliSafe locks ([@bachya] - [#54006]) ([simplisafe docs]) (breaking-change) +- Don't double-validate KNX select options ([@farmio] - [#54020]) ([knx docs]) +- Use SwitchEntityDescription instead of EntityDescription in the motionEye integration ([@dermotduffy] - [#54019]) ([motioneye docs]) +- Activate mypy for Reddit ([@milanmeu] - [#53949]) ([reddit docs]) +- Activate mypy for Updater ([@milanmeu] - [#53950]) ([updater docs]) +- Add vscode task code coverage ([@mib1185] - [#53783]) +- Bump pyuptimerobot to 21.8.1 ([@ludeeus] - [#53995]) ([uptimerobot docs]) +- Add state class support to Netatmo ([@frenck] - [#54051]) ([netatmo docs]) +- Add tractive integration ([@zhulik] - [#51002]) ([tractive docs]) (new-integration) +- Activate mypy for Cloudflare ([@milanmeu] - [#54041]) ([cloudflare docs]) +- Add unique_id to Uptime Robot config_flow ([@ludeeus] - [#54055]) ([uptimerobot docs]) +- Bump py-nextbusnext to 0.1.5 ([@ViViDboarder] - [#53924]) ([nextbus docs]) +- Add some metadata to pvoutput energy sensor ([@balloob] - [#54074]) ([pvoutput docs]) +- Add `state_class` for KNX sensors ([@farmio] - [#53996]) ([knx docs]) +- We shouldn't add measurement without last_reset to metered entities ([@balloob] - [#54087]) ([pvoutput docs]) +- Run coordinator config_entry_first_refresh in rituals_perfume_genie setup ([@milanmeu] - [#54080]) ([rituals_perfume_genie docs]) +- Test knx sensor ([@farmio] - [#54090]) ([knx docs]) +- Test KNX binary sensor ([@farmio] - [#53820]) ([knx docs]) +- Fix jinja warning ([@balloob] - [#54109]) +- Fix Squeezebox dhcp discovery ([@rajlaud] - [#54137]) ([squeezebox docs]) +- Ignore Coinbase vault wallets ([@TomBrien] - [#54133]) ([coinbase docs]) +- Add statistics support for the PVOutput sensor ([@zoeisnowooze] - [#54149]) ([pvoutput docs]) +- Convert to using sensor descriptors ([@elupus] - [#54115]) ([rfxtrx docs]) +- Use SensorEntityDescription for AsusWRT sensors ([@ollo69] - [#54111]) ([asuswrt docs]) +- Add state class and last reset in kostal_plenticore ([@gianklug] - [#54084]) ([kostal_plenticore docs]) +- Flexit component fix for updated modbus ([@jorgror] - [#53583]) ([flexit docs]) +- Correct device class typo in rfxtrx ([@elupus] - [#54200]) ([rfxtrx docs]) +- Bump ha-philipsjs to 2.7.5 ([@elupus] - [#54176]) ([philips_js docs]) +- Fix Neato reauth flow when token expired ([@chemelli74] - [#52843]) ([neato docs]) +- Raise ConfigEntryNotReady for Neato API error ([@chemelli74] - [#54227]) ([neato docs]) +- Change update interval from 60s to 10s for Uptime Robot ([@ludeeus] - [#54230]) ([uptimerobot docs]) +- Set entities as unavailable if last update was not successful ([@ludeeus] - [#54229]) ([uptimerobot docs]) +- Handle added and removed monitors ([@ludeeus] - [#54228]) ([uptimerobot docs]) +- OVO Energy Long-term Statistics ([@timmo001] - [#54157]) ([ovo_energy docs]) +- Add enumerate to builtins in python_script component ([@rjulius23] - [#54244]) ([python_script docs]) +- Add more Fritz sensors for DSL connections ([@Schmidsfeld] - [#53198]) ([fritz docs]) +- Fix device registry lookup in uptimerobot ([@ludeeus] - [#54256]) ([uptimerobot docs]) +- Remove monitor checks in Uptime Robot entities ([@ludeeus] - [#54259]) ([uptimerobot docs]) +- Strict typing for Neato ([@chemelli74] - [#53633]) ([neato docs]) +- Add missing `motor_speed` sensor for Xiaomi Miio humidifier CA1 and CB1 ([@bieniu] - [#54264]) ([xiaomi_miio docs]) +- Add re-authentication to Uptime Robot ([@ludeeus] - [#54226]) ([uptimerobot docs]) +- Add modbus get_hub ([@janiversen] - [#54277]) ([modbus docs]) ([flexit docs]) +- Convert last properties in modbus to _attr_variable ([@janiversen] - [#53919]) ([modbus docs]) +- Bump google-nest-sdm to 0.3.6 ([@allenporter] - [#54287]) ([nest docs]) +- Update DeviceInfo static types ([@allenporter] - [#54276]) ([nest docs]) +- Fix inconsistent supported_features return in demo lock ([@bdraco] - [#54300]) ([demo docs]) +- Fix SQLAlchemy test warnings ([@balloob] - [#54116]) ([recorder docs]) +- Add siren support for available tones provided as a dict ([@raman325] - [#54198]) ([siren docs]) +- Add `unique_id` and `device_info` for SMS sensor ([@bieniu] - [#54257]) ([sms docs]) +- Ensure internal/external URL have no path ([@balloob] - [#54304]) ([config docs]) +- Fix external internal url core check ([@MartinHjelmare] - [#54310]) +- Convert base_config_test in modbus to existing Pytest.fixture ([@janiversen] - [#53836]) ([modbus docs]) +- Use SensorEntityDescription for arlo ([@janiversen] - [#54223]) ([arlo docs]) +- Update services.yaml for matrix service to fix Data field being replaced by [object Object] in UI ([@cpw] - [#54296]) ([matrix docs]) +- Remove icon where device_class is defined. ([@janiversen] - [#54323]) ([arlo docs]) +- Use dict for zwave_js siren.available_tones ([@raman325] - [#54305]) ([zwave_js docs]) +- Remove deprecated YAML configuration from Growatt ([@frenck] - [#54325]) ([growatt_server docs]) (breaking-change) +- Clean up zwave_js RGB code ([@firstof9] - [#54336]) ([zwave_js docs]) +- Add light transition for Shelly integration ([@bieniu] - [#54327]) ([shelly docs]) +- Yeelight local push updates ([@starkillerOG] - [#51160]) ([yeelight docs]) +- Use EntityDescription - pi_hole ([@cdce8p] - [#54319]) ([pi_hole docs]) +- Use EntityDescription - abode ([@cdce8p] - [#54321]) ([abode docs]) +- Remove useless attribute in devolo Home Control ([@Shutgun] - [#54284]) ([devolo_home_control docs]) +- Remove HomeKit event guards ([@bdraco] - [#54343]) ([homekit docs]) +- Use EntityDescription - growatt_server ([@cdce8p] - [#54316]) ([growatt_server docs]) +- Use EntityDescription - bitcoin ([@cdce8p] - [#54320]) ([bitcoin docs]) +- Add `binary_sensor` platform for Xiaomi Miio integration ([@bieniu] - [#54096]) ([xiaomi_miio docs]) (new-platform) +- Minor motionEye readability improvement ([@dermotduffy] - [#54251]) ([motioneye docs]) +- Update pyupgrade to 2.23.3 ([@mplemay] - [#54179]) +- Add Save Persistent States service ([@r-t-s] - [#53881]) ([homeassistant docs]) +- Add powerwall import and export sensors ([@bdraco] - [#54018]) ([powerwall docs]) (breaking-change) +- Version sensor entity cleanup ([@ludeeus] - [#53915]) ([version docs]) +- AsusWRT remove default EntityDescription property ([@ollo69] - [#54367]) ([asuswrt docs]) +- Use EntityDescription - juicenet ([@cdce8p] - [#54362]) ([juicenet docs]) +- Upgrade codecov to 2.1.12 ([@frenck] - [#54370]) +- Upgrade debugpy to 1.4.1 ([@frenck] - [#54369]) ([debugpy docs]) +- Bump pymodbus version to 2.5.3rc1 ([@janiversen] - [#54318]) ([modbus docs]) +- Activate mypy for Filter ([@milanmeu] - [#54044]) ([filter docs]) +- Activate mypy for Alexa ([@milanmeu] - [#54042]) ([alexa docs]) +- Activate mypy for Pilight ([@milanmeu] - [#53956]) ([pilight docs]) +- Activate mypy for SiteSage Emonitor ([@milanmeu] - [#54040]) ([emonitor docs]) +- Activate mypy for Smart Meter Texas ([@milanmeu] - [#53954]) ([smart_meter_texas docs]) +- Activate mypy for Solar-Log ([@milanmeu] - [#53952]) ([solarlog docs]) +- Using VCN install as action ([@pvizeli] - [#54383]) +- Activate mypy for google_maps ([@janiversen] - [#53725]) ([google_maps docs]) +- Activate mypy for Proxmox VE ([@milanmeu] - [#53955]) ([proxmoxve docs]) +- Use `_attr_*` for Launch Library ([@ludeeus] - [#54388]) ([launch_library docs]) +- Apply suggested changes to tidy juicenet sensor code ([@jesserockz] - [#54390]) ([juicenet docs]) +- Xiaomi miio add coordinator to fan platform ([@jbouwh] - [#54366]) ([xiaomi_miio docs]) +- Activate mypy from amcrest and make the needed changes ([@janiversen] - [#54392]) ([amcrest docs]) +- Remove useless check in launch_library ([@ludeeus] - [#54393]) ([launch_library docs]) +- Adjust version tests ([@ludeeus] - [#54391]) ([version docs]) +- Mill cleanup ([@Danielhiversen] - [#54396]) ([mill docs]) +- Add 100% test coverage for Uptime Robot ([@ludeeus] - [#54314]) ([uptimerobot docs]) +- Update the Qubino Flush Shutter fixture ([@deiger] - [#54387]) ([zwave_js docs]) +- Use EntityDescription - ios ([@cdce8p] - [#54359]) ([ios docs]) +- Fix pi_hole sensor icon ([@cdce8p] - [#54403]) ([pi_hole docs]) +- Support unloading/reloading Sonos ([@jjlawren] - [#54418]) ([sonos docs]) +- Mark Uptime Robot as a platinum quality integration ([@ludeeus] - [#54408]) ([uptimerobot docs]) +- Add myself as codeowner to tradfri (IKEA stuff) ([@janiversen] - [#54415]) ([tradfri docs]) +- Refactor pi_hole icon usage ([@cdce8p] - [#54420]) ([pi_hole docs]) +- Add api to device_automation to return all matching devices ([@bdraco] - [#53361]) ([device_automation docs]) +- Improve HomeKit Color with Color Temp implementation ([@bdraco] - [#54371]) ([homekit docs]) +- Avoid increasing yeelight rate limit when the state is already set ([@bdraco] - [#54410]) ([yeelight docs]) +- Pass width and height when requesting camera snapshot ([@bdraco] - [#53835]) (breaking-change) +- Add support for width and height to ffmpeg based camera snapshots ([@bdraco] - [#53837]) +- Activate mypy for Trådfri ([@janiversen] - [#54416]) ([tradfri docs]) +- Advantage Air code cleanup ([@Bre77] - [#54449]) ([advantage_air docs]) +- Bump aioambient to 1.2.6 ([@bachya] - [#54442]) ([ambient_station docs]) +- Move temperature conversions to sensor base class (1/8) ([@emontnemery] - [#48261]) ([abode docs]) ([sensor docs]) (breaking-change) +- Remove legacy code. ([@janiversen] - [#54452]) ([tradfri docs]) (breaking-change) +- Use monitor name for uptimerobot device registry ([@ludeeus] - [#54456]) ([uptimerobot docs]) +- Replace prepare_service_call with a simpler fixture in modbus ([@janiversen] - [#53975]) ([modbus docs]) +- Use SensorEntityDescription and set state class measurement for NUT sensors ([@mib1185] - [#54269]) ([nut docs]) +- Remove empty currency from discovery info ([@frenck] - [#54478]) ([api docs]) +- Ensure camera handles non-jpeg image sources correctly ([@bdraco] - [#54474]) ([camera docs]) ([demo docs]) +- Complete mysensors sensor coverage ([@MartinHjelmare] - [#54471]) ([mysensors docs]) +- Fix arlo platform schema ([@cdce8p] - [#54470]) ([arlo docs]) +- Upgrade isort to 5.9.3 ([@frenck] - [#54481]) +- Fix possible unhandled IQVIA exception with allergy outlook data ([@bachya] - [#54477]) ([iqvia docs]) +- Add battery support to energy ([@bramkragten] - [#54432]) ([energy docs]) +- Move temperature conversions to entity base class (2/8) ([@emontnemery] - [#54468]) +- Move temperature conversions to entity base class (7/8) ([@emontnemery] - [#54482]) +- Add device class `gas` and enable statistics for it ([@bramkragten] - [#54110]) ([recorder docs]) ([toon docs]) ([sensor docs]) ([dsmr docs]) (breaking-change) +- Move temperature conversions to sensor base class (8/8) ([@emontnemery] - [#54483]) +- Move temperature conversions to sensor base class (4/8) ([@emontnemery] - [#54472]) +- Refactor Fronius sensor device class and long term statistics ([@nielstron] - [#54185]) ([fronius docs]) +- Use EntityDescription - blink ([@cdce8p] - [#54360]) ([blink docs]) +- Deprecate Wink integration ([@frenck] - [#54496]) ([wink docs]) (breaking-change) +- Use entity class attributes for Adax ([@Danielhiversen] - [#54501]) ([adax docs]) +- Move temperature conversions to sensor base class (5/8) ([@emontnemery] - [#54475]) +- Move temperature conversions to sensor base class (3/8) ([@emontnemery] - [#54469]) +- Move temperature conversions to sensor base class (6/8) ([@emontnemery] - [#54476]) +- Log gathered exceptions during Sonos unsubscriptions ([@jjlawren] - [#54190]) ([sonos docs]) +- Remove unused import step in OpenUV config flow ([@bachya] - [#54554]) ([openuv docs]) +- Cleanup Sonos grouping event callback method ([@jjlawren] - [#54542]) ([sonos docs]) +- Remove obsolete upcloud YAML config support ([@scop] - [#54516]) ([upcloud docs]) (breaking-change) +- Add state_class attribute to keba integration ([@carstenschroeder] - [#54271]) ([keba docs]) +- Updated ZHA to also poll Philips Hue lights with new firmware ([@TheJulianJES] - [#54513]) ([zha docs]) +- Add support for total and total_increasing sensor state classes ([@emontnemery] - [#54523]) ([sensor docs]) +- Fix for 'list index out of range' ([@DCSBL] - [#54588]) ([solaredge_local docs]) +- Use ssdp callbacks in upnp ([@StevenLooman] - [#53840]) ([upnp docs]) +- Add gas support to energy ([@bramkragten] - [#54560]) ([energy docs]) +- Update frontend to 20210813.0 ([@bramkragten] - [#54603]) ([frontend docs]) +- Skip Sonos zeroconf availability check in non-timeout scenarios ([@jjlawren] - [#54425]) ([sonos docs]) +- Bump python-miio to 0.5.7 ([@rytilahti] - [#54601]) ([xiaomi_miio docs]) +- Add MySensors S_MOISTURE type as sensor ([@janjurca] - [#54583]) ([mysensors docs]) +- Move temperature conversions to sensor base class - new integrations ([@emontnemery] - [#54623]) ([sensor docs]) +- Update pyhomematic to 0.1.74 ([@danielperna84] - [#54613]) ([homematic docs]) +- Add sensor platform for Xiaomi Miio fans ([@bieniu] - [#54564]) ([xiaomi_miio docs]) (breaking-change) +- Add new OUIs to august for yale branded connect bridges ([@bdraco] - [#54637]) ([august docs]) +- Add siren, number, and weather to base platform list ([@raman325] - [#54665]) +- Fix typo in xiaomi_miio cloud_login_error string ([@nickstamat] - [#54661]) ([xiaomi_miio docs]) +- Bump zeroconf to 0.35.1 ([@bdraco] - [#54666]) ([zeroconf docs]) +- Address late review of nut integration ([@mib1185] - [#54606]) ([nut docs]) +- Use buffer at stream start with unsupported audio ([@allenporter] - [#54672]) ([stream docs]) +- Address late review of Flipr ([@cnico] - [#54668]) ([flipr docs]) +- Add `water level` and `water tank detached` sensors for Xiaomi Miio humidifiers ([@bieniu] - [#54625]) ([xiaomi_miio docs]) +- Add code owner to GitHub integration ([@timmo001] - [#54689]) ([github docs]) +- Activate mypy in lifx ([@janiversen] - [#54540]) +- Renault test optimisation ([@epenet] - [#53705]) ([renault docs]) +- Improve Tractive ([@Danielhiversen] - [#54532]) ([tractive docs]) +- Bump adb-shell to 0.4.0 ([@JeffLIrion] - [#54575]) +- Renault code quality improvements ([@epenet] - [#53680]) ([renault docs]) +- Fix typo in Todoist service description ([@serenewaffles] - [#54662]) ([todoist docs]) +- Fix event type names for non-specified Traccar events ([@bogdal] - [#54561]) ([traccar docs]) +- Update mill to use state class total ([@Danielhiversen] - [#54581]) ([mill docs]) +- Allow non-admin users to call history/list_statistic_ids ([@ludeeus] - [#54698]) ([history docs]) +- Update melcloud to use state class total increasing ([@Danielhiversen] - [#54607]) ([melcloud docs]) +- Bump pytautulli ([@ludeeus] - [#54594]) ([tautulli docs]) +- Set correct ESPHome color mode when setting color temperature ([@oxan] - [#54596]) ([esphome docs]) +- Remove last_reset attribute from dsmr_reader sensors ([@emontnemery] - [#54700]) ([dsmr_reader docs]) +- Allow specifying discovery without a config flow ([@balloob] - [#54677]) ([rainforest_eagle docs]) +- Refactor mysensors sensor description ([@MartinHjelmare] - [#54522]) ([mysensors docs]) +- Bump simplisafe-python to 11.0.4 ([@bachya] - [#54701]) ([simplisafe docs]) +- Update Toon to use new state classes ([@frenck] - [#54705]) ([toon docs]) +- Use zwave_js.number platform for Basic CC values ([@raman325] - [#54512]) ([zwave_js docs]) (breaking-change) +- Remove last_reset attribute from dsmr sensors ([@emontnemery] - [#54699]) ([dsmr docs]) +- Fix TypeError when climate component sets fan modes to None ([@brianegge] - [#54709]) ([google_assistant docs]) +- Create zwave-js select platform and discover additional siren values ([@raman325] - [#53018]) ([zwave_js docs]) (new-platform) +- Fix AsusWRT scanner entity DeviceInfo ([@ollo69] - [#54648]) ([asuswrt docs]) +- Add light platform to MyQ ([@ehendrix23] - [#54611]) ([myq docs]) (new-platform) +- Upgrade pre-commit to 2.14.0 ([@frenck] - [#54719]) +- Convert nmap_tracker to be a config flow ([@bdraco] - [#54715]) ([nmap_tracker docs]) (breaking-change) +- Upgrade mypy to 0.910 and types-* ([@scop] - [#54574]) +- Use EntityDescription - qbittorrent ([@cdce8p] - [#54428]) ([qbittorrent docs]) +- Use EntityDescription - point ([@cdce8p] - [#54363]) ([point docs]) +- Activate mypy in sabnzbd ([@janiversen] - [#54539]) ([sabnzbd docs]) +- Avoid some implicit generic Anys ([@scop] - [#54577]) +- Active mypy for netio ([@janiversen] - [#54543]) ([netio docs]) +- Add device classes that were part of deprecated air quality entity ([@Jc2k] - [#54075]) ([sensor docs]) +- Use state class total increasing for TPLink smart plugs ([@mib1185] - [#54723]) ([tplink docs]) +- Bump zeroconf to 0.36.0 ([@bdraco] - [#54720]) ([zeroconf docs]) +- Remove last_reset attribute from FritzBoxEnergySensor ([@emontnemery] - [#54644]) ([fritzbox docs]) +- Use EntityDescription - logi_circle ([@cdce8p] - [#54429]) ([logi_circle docs]) +- Activate mypy for sesame ([@janiversen] - [#54546]) ([sesame docs]) +- Use EntityDescription - mitemp_bt ([@cdce8p] - [#54503]) ([mitemp_bt docs]) +- Add DEVICE_CLASS_UPDATE to Binary Sensor ([@mib1185] - [#53945]) ([binary_sensor docs]) +- Fix Google Calendar event loading ([@Bert-R] - [#54231]) ([google docs]) +- Add device class update to the updater binary_sensor ([@ludeeus] - [#54732]) ([updater docs]) +- Add device class update to hassio update entities ([@ludeeus] - [#54733]) ([hassio docs]) +- Update deCONZ to use new state classes ([@frenck] - [#54729]) ([deconz docs]) +- Add state classes to Vallox sensors ([@andre-richter] - [#54297]) ([vallox docs]) +- Activate mypy for google_pubsub ([@janiversen] - [#54649]) ([google_pubsub docs]) +- Energy support for Solax inverters ([@ppetru] - [#54654]) ([solax docs]) +- Use PM1, PM25 and PM10 device classes in Nettigo Air Monitor integration ([@bieniu] - [#54741]) ([nam docs]) +- Use DEVICE_CLASS_UPDATE in Shelly integration ([@bieniu] - [#54746]) ([shelly docs]) +- Use entity descriptions for hassio entities ([@ludeeus] - [#54749]) ([hassio docs]) +- Relax zwave_js lock discovery rules to cover more use cases ([@raman325] - [#54710]) ([zwave_js docs]) +- DSMR: Remove icon from sensors with gas device class ([@frenck] - [#54752]) ([dsmr docs]) +- Bump pyfronius version to 0.5.5 ([@nielstron] - [#54758]) ([fronius docs]) +- Solax 0.2.8 ([@squishykid] - [#54759]) ([solax docs]) +- Toon: Remove icon from sensors with gas device class ([@frenck] - [#54753]) ([toon docs]) +- Deprecate homekit_controller's air quality entity in favor of separate sensor entities ([@Jc2k] - [#54673]) ([homekit_controller docs]) (breaking-change) +- Airtouch4 integration ([@LonePurpleWolf] - [#43513]) ([airtouch4 docs]) (new-integration) +- Add zwave_js Protection CC select entities ([@raman325] - [#54717]) ([zwave_js docs]) +- Use DEVICE_CLASS_UPDATE in Synology DSM ([@mib1185] - [#54769]) ([synology_dsm docs]) +- Use path helper method for principal file in google_pubsub ([@frenck] - [#54744]) ([google_pubsub docs]) +- Add upnp binary sensor for connectivity status ([@ehendrix23] - [#54489]) ([upnp docs]) +- set common test entity name. ([@janiversen] - [#54697]) ([modbus docs]) +- Tractive, update library ([@Danielhiversen] - [#54775]) ([tractive docs]) +- Fix goalzero sensor not using SensorEntity class ([@tkdrob] - [#54773]) ([goalzero docs]) +- Fix connectivity issue in the Youless integration ([@gjong] - [#54764]) ([youless docs]) +- Force STATE_CLASS_TOTAL_INCREASING to reset to 0 ([@emontnemery] - [#54751]) ([sensor docs]) +- Rfxtrx,STATE_CLASS_TOTAL_INCREASING ([@Danielhiversen] - [#54776]) ([rfxtrx docs]) +- Improve myq error handling for opening/closing cover ([@ehendrix23] - [#54724]) ([myq docs]) +- Update SolarEdge to use new state classes ([@frenck] - [#54731]) ([solaredge docs]) +- Use AQI, PM1, PM25, PM10 device classes in Airly ([@bieniu] - [#54742]) ([airly docs]) +- Use new device classes in GIOS integration ([@bieniu] - [#54743]) ([gios docs]) +- Adjust yeelight homekit model ([@bdraco] - [#54783]) ([yeelight docs]) +- Update sense_energy to version 0.9.2 ([@crkochan] - [#54787]) ([sense docs]) ([emulated_kasa docs]) +- Bump dessant/lock-threads from 2.1.1 to 2.1.2 (@dependabot - [#54791]) +- Remove STATE_CLASS_TOTAL and last_reset from sensor ([@emontnemery] - [#54755]) ([sensor docs]) +- Add Gas device class to DSMR Reader ([@frenck] - [#54748]) ([dsmr_reader docs]) +- Tibber data coordinator ([@Danielhiversen] - [#53619]) ([tibber docs]) +- Add select platform for Xiaomi Miio fans ([@bieniu] - [#54702]) ([xiaomi_miio docs]) (breaking-change) +- Bump async-upnp-client to 0.20.0, adapt to breaking changes ([@bdraco] - [#54782]) ([upnp docs]) ([dlna_dmr docs]) ([ssdp docs]) +- Remove unused last_reset from Toon ([@emontnemery] - [#54798]) ([toon docs]) +- Remove last_reset and update state class for Atome energy ([@emontnemery] - [#54801]) ([atome docs]) +- Remove distro from updater requirements ([@ludeeus] - [#54804]) ([updater docs]) +- Ensure device entry in Renault integration ([@epenet] - [#54797]) ([renault docs]) +- Adjust modbus constants names ([@janiversen] - [#54792]) ([modbus docs]) +- Remove last_reset attribute from fritz sensors ([@emontnemery] - [#54806]) ([fritz docs]) +- Remove last_reset attribute and set state class to total_increasing for Shelly energy sensors ([@emontnemery] - [#54800]) ([shelly docs]) +- ConfigType and async_setup/setup type hint improvements ([@scop] - [#54739]) +- Remove `last_reset` attribute and set state class to `total_increasing` for Ovo cost and energy sensors ([@emontnemery] - [#54807]) ([ovo_energy docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for powerwall energy sensors ([@emontnemery] - [#54808]) ([powerwall docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for PVOutput energy sensors ([@emontnemery] - [#54809]) ([pvoutput docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for rainforest energy sensors ([@emontnemery] - [#54810]) ([rainforest_eagle docs]) +- Remove last_reset attribute from devolo energy sensors ([@emontnemery] - [#54803]) ([devolo_home_control docs]) +- Remove last_reset attribute from sma energy sensors ([@emontnemery] - [#54814]) ([sma docs]) +- Remove last_reset attribute and set state class to total_increasing for tibber energy sensors ([@emontnemery] - [#54799]) ([tibber docs]) +- Remove last_reset attribute from kostal_plenticore energy sensors ([@emontnemery] - [#54817]) ([kostal_plenticore docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for zwave_js energy sensors ([@emontnemery] - [#54818]) ([zwave_js docs]) +- Activate mypy for Panasonic_viera ([@janiversen] - [#54547]) ([panasonic_viera docs]) +- Remove deprecated Xiaomi Miio fan speeds ([@SmaginPV] - [#54182]) ([xiaomi_miio docs]) (breaking-change) +- Remove last_reset attribute and set state class to total_increasing for Integration sensors ([@Danielhiversen] - [#54815]) ([integration docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for spider energy sensors ([@emontnemery] - [#54822]) ([spider docs]) +- Treat Huawei LTE error code 100006 as unsupported functionality ([@scop] - [#54253]) ([huawei_lte docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for sense energy sensors ([@emontnemery] - [#54825]) ([sense docs]) +- Remove last_reset attribute from wemo energy sensors ([@emontnemery] - [#54821]) ([wemo docs]) +- Remove last_reset attribute from keba energy sensors ([@emontnemery] - [#54828]) ([keba docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for fronius energy sensors ([@emontnemery] - [#54830]) ([fronius docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for saj energy sensors ([@emontnemery] - [#54813]) ([saj docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for mysensors energy sensors ([@emontnemery] - [#54827]) ([mysensors docs]) +- Remove `last_reset` attribute and set state class to `total_increasing` for smartthings energy sensors ([@emontnemery] - [#54824]) ([smartthings docs]) +- Only show zwave_js command classes that are on the node ([@raman325] - [#54794]) ([zwave_js docs]) +- Remove `last_reset` attribute from and set state class to `total_increasing` for enphase_envoy energy sensors ([@emontnemery] - [#54831]) ([enphase_envoy docs]) +- Fix integration sensors sometimes not getting device_class or unit_of_measurement ([@thomasloven] - [#54802]) ([integration docs]) +- Exclude global scope IPv6 when setting up zeroconf interfaces ([@bdraco] - [#54632]) ([zeroconf docs]) +- Remove last_reset attribute from tasmota energy sensors ([@emontnemery] - [#54836]) ([tasmota docs]) +- Make yeelight discovery async ([@bdraco] - [#54711]) ([yeelight docs]) +- Remove unnecessary signal during zwave_js.reset_meter service call ([@raman325] - [#54837]) ([zwave_js docs]) +- Bump yeelight quality scale to platinum with switch to async local push ([@bdraco] - [#54589]) ([yeelight docs]) +- Add new network apis to reduce code duplication ([@bdraco] - [#54832]) ([zeroconf docs]) ([ssdp docs]) ([network docs]) +- Add energy validation ([@balloob] - [#54567]) ([recorder docs]) ([energy docs]) +- Deprecate last_reset options in MQTT sensor ([@emontnemery] - [#54840]) ([mqtt docs]) +- Mill data coordinator ([@Danielhiversen] - [#53603]) ([mill docs]) +- Remove stale references to last_reset ([@emontnemery] - [#54838]) ([mysensors docs]) ([dsmr docs]) ([kostal_plenticore docs]) +- Bump frontend to 20210818.0 ([@balloob] - [#54851]) ([frontend docs]) +- Drop tado codeowner ([@bdraco] - [#54849]) ([tado docs]) +- Update PULL_REQUEST_TEMPLATE.md ([@squishykid] - [#54762]) +- Improve MyQ code quality through creation of MyQ entity ([@ehendrix23] - [#54728]) ([myq docs]) +- Rework goalzero for EntityDescription ([@tkdrob] - [#54786]) ([goalzero docs]) +- Always mock SubscriptionRegistry & DiscoveryResponder for wemo tests ([@esev] - [#53967]) ([wemo docs]) +- Bump pywemo to 0.6.7 ([@esev] - [#54862]) ([wemo docs]) +- Add binary sensor platform to Renault integration ([@epenet] - [#54750]) ([renault docs]) (new-platform) +- Check for duplicate entity name/address in modbus entities ([@janiversen] - [#54669]) ([modbus docs]) +- Add support for Swedish smart electricity meters to DSMR ([@emontnemery] - [#54630]) ([dsmr docs]) +- Minor cleanup of SensorEntity ([@emontnemery] - [#54624]) ([sensor docs]) +- Add missing id to yeelights that were setup manually ([@bdraco] - [#54855]) ([yeelight docs]) +- Add config flow to Rainforest EAGLE-200 ([@balloob] - [#54846]) ([rainforest_eagle docs]) (breaking-change) +- Yamaha Musiccast Media Browser feature ([@micha91] - [#54864]) ([yamaha_musiccast docs]) +- Add Rainforest Eagle tests and price ([@balloob] - [#54887]) ([rainforest_eagle docs]) +- Improve device action type hinting ([@scop] - [#54850]) +- Allow integrations to define trigger platforms with a subtype ([@raman325] - [#54861]) +- Compile missing statistics ([@emontnemery] - [#54690]) ([recorder docs]) +- Add P1 Monitor integration ([@klaasnicolaas] - [#54738]) ([p1_monitor docs]) (new-integration) +- Add energy management support to Growatt server integration ([@maschel] - [#54174]) ([growatt_server docs]) +- Support group entities in zwave_js service calls ([@raman325] - [#54903]) ([zwave_js docs]) +- Clean up AsusWRT if check ([@ollo69] - [#54896]) ([asuswrt docs]) +- Fix Lyric cool mode ([@muchtall] - [#54856]) ([lyric docs]) +- Update nmap_tracker to use the network integration ([@bdraco] - [#54877]) ([nmap_tracker docs]) +- Fjäråskupan kitchen fan ([@elupus] - [#53140]) ([fjaraskupan docs]) (new-integration) +- Add growatt total state_class for storage ([@JasperPlant] - [#54913]) ([growatt_server docs]) +- Fix image_processing selectors ([@tkdrob] - [#54915]) ([image_processing docs]) +- Add `switch` platform for Xiaomi Miio fans ([@bieniu] - [#54834]) ([xiaomi_miio docs]) (breaking-change) +- Improve DSMR shutdown ([@emontnemery] - [#54922]) ([dsmr docs]) +- Warn if unit_of_measurement is set on instances of SensorEntityDescription ([@emontnemery] - [#54867]) ([sensor docs]) +- Ask for host because EAGLE mdns doesn't work in HA OS ([@balloob] - [#54905]) ([rainforest_eagle docs]) +- Add HomeKit and DHCP to DISCOVERY_SOURCES in config_entries ([@bdraco] - [#54923]) +- Make log rollover at startup ([@janiversen] - [#54865]) +- Set quality level of modbus to gold ([@janiversen] - [#54926]) ([modbus docs]) +- Add support for area ID in zwave_js service calls ([@raman325] - [#54940]) ([zwave_js docs]) +- Enable basic type checking for asuswrt ([@emontnemery] - [#54929]) ([asuswrt docs]) +- Enable basic type checking for aemet ([@emontnemery] - [#54925]) ([aemet docs]) +- Remove deprecated async_setup_platforms() for xiaomi_miio ([@rytilahti] - [#54930]) ([xiaomi_miio docs]) (breaking-change) +- Add fjäråskupan binary_sensor ([@elupus] - [#54920]) ([fjaraskupan docs]) (new-platform) +- Bump zwave-js-server-python to 0.29.0 ([@raman325] - [#54931]) ([zwave_js docs]) +- Add support for USB discovery ([@bdraco] - [#54904]) ([default_config docs]) ([usb docs]) (new-integration) +- Add zwave_js.value_updated automation trigger ([@raman325] - [#54897]) ([zwave_js docs]) +- Fix Google Calendar auth user code expire time comparison ([@slovdahl] - [#54893]) ([google docs]) +- Improve device condition type hinting ([@scop] - [#54906]) +- Use entity descriptions for zwave_js sensors ([@raman325] - [#53744]) ([zwave_js docs]) +- Fix Watson TTS to use correct API ([@GuyKh] - [#54916]) ([watson_tts docs]) +- Extract smappee switch energy attributes into sensors ([@bsmappee] - [#54329]) ([smappee docs]) (breaking-change) +- Use a static collection of forwarded attributes ([@samueltardieu] - [#54870]) ([group docs]) +- Normalize the display name of yeelight devices ([@bdraco] - [#54883]) ([yeelight docs]) +- Handle case where location_name is set to "" for zeroconf ([@bdraco] - [#54880]) ([zeroconf docs]) +- Make yeelight aware of the network integration ([@bdraco] - [#54854]) ([yeelight docs]) +- Add support for USB discovery to ZHA ([@bdraco] - [#54935]) ([zha docs]) +- Remove Configuration CC as choice in zwave_js value device condition ([@raman325] - [#54962]) ([zwave_js docs]) (breaking-change) +- Add zwave_js device triggers for any zwave value ([@raman325] - [#54958]) ([zwave_js docs]) +- Improve Command Class choices for zwave_js device triggers and conditions ([@raman325] - [#54970]) ([zwave_js docs]) +- Replace *args and **kwargs type hint collections with value types ([@scop] - [#54955]) ([netatmo docs]) ([rainmachine docs]) ([simplisafe docs]) ([switcher_kis docs]) ([guardian docs]) ([zwave_js docs]) +- Add fjäråskupan light entity ([@elupus] - [#54918]) ([fjaraskupan docs]) (new-platform) +- Update pylint to 2.10.1 ([@cdce8p] - [#54963]) +- Add fjäråskupan sensor ([@elupus] - [#54921]) ([fjaraskupan docs]) (new-platform) +- Enable basic type checking for adguard ([@emontnemery] - [#54924]) ([adguard docs]) +- Enable basic type checking for analytics ([@emontnemery] - [#54928]) ([analytics docs]) +- Enable basic type checking for atag ([@emontnemery] - [#54933]) ([atag docs]) +- Remove unused string in P1 Monitor ([@klaasnicolaas] - [#54911]) ([p1_monitor docs]) +- Various type hint related improvements ([@scop] - [#54971]) ([http docs]) ([hassio docs]) ([actiontec docs]) +- Minor refactoring of keba integration ([@carstenschroeder] - [#54976]) ([keba docs]) +- Move get_serial_by_id and human_readable_device_name to usb ([@bdraco] - [#54968]) ([zha docs]) ([usb docs]) +- Gracefully handle udev not available via OSError when setting up usb ([@bdraco] - [#54967]) ([usb docs]) +- Add lazy_error_count to modbus ([@janiversen] - [#54412]) ([modbus docs]) +- Add support for USB discovery to zwave_js ([@bdraco] - [#54938]) ([zwave_js docs]) +- Bump sqlalchemy to 1.4.23 ([@bdraco] - [#54980]) ([recorder docs]) ([sql docs]) +- Add `number` platform for Xiaomi Miio fan ([@bieniu] - [#54977]) ([xiaomi_miio docs]) (breaking-change) +- Set unique id to amcrest serial number ([@brianegge] - [#54675]) ([amcrest docs]) +- Use DataUpdateCoordinator for wemo ([@esev] - [#54866]) ([wemo docs]) +- Activate mypy for homematicip_cloud ([@janiversen] - [#54950]) ([homematicip_cloud docs]) +- Use EntityDescription - buienradar ([@cdce8p] - [#54317]) ([buienradar docs]) +- Use EntityDescription - nzbget ([@cdce8p] - [#54427]) ([nzbget docs]) +- Use EntityDescription - trafikverket_weatherstation ([@cdce8p] - [#54430]) ([trafikverket_weatherstation docs]) +- Use EntityDescription - starline ([@cdce8p] - [#54431]) ([starline docs]) +- Use EntityDescription - envirophat ([@cdce8p] - [#54944]) ([envirophat docs]) +- Fix nmap_tracker typing ([@bdraco] - [#54858]) ([nmap_tracker docs]) +- Fix recorder shutdown race and i/o in event loop ([@bdraco] - [#54979]) ([recorder docs]) +- Synology sensor name clarification ([@chemelli74] - [#54262]) ([synology_dsm docs]) +- VSCode switch to terminal.integrated.profiles ([@mib1185] - [#54301]) +- Remove ctalkington from directv codeowner ([@ctalkington] - [#54988]) ([directv docs]) +- Add known devices to USB Vendor / Product IDs ([@bdraco] - [#54986]) ([zha docs]) ([zwave_js docs]) +- Use EntityDescription - google_wifi ([@cdce8p] - [#54941]) ([google_wifi docs]) +- Switch periodic USB scanning to on-demand websocket when observer is not available ([@bdraco] - [#54953]) ([usb docs]) +- Upgrade PyTurboJPEG to 1.5.2 ([@frenck] - [#54992]) ([camera docs]) +- Bump python-yeelight to 0.7.3 ([@bdraco] - [#54982]) ([yeelight docs]) +- Fix manual setup when roomba is on different subnet ([@jorgror] - [#54639]) ([roomba docs]) +- Add missing BYN currency ([@frenck] - [#55001]) +- Fix incorrect power device class on energy sensors in Smappee ([@frenck] - [#54994]) ([smappee docs]) +- Upgrade apprise to 0.9.4 ([@frenck] - [#55002]) ([apprise docs]) +- Upgrade watchdog to 2.1.4 ([@frenck] - [#54993]) ([folder_watcher docs]) +- Skip trying the pyudev observer when using standalone docker for usb ([@bdraco] - [#54987]) ([usb docs]) +- Add support for logger info in fronius integration ([@nielstron] - [#54795]) ([fronius docs]) +- Remove base_test from modbus test harness ([@janiversen] - [#55018]) ([modbus docs]) +- Add state_class to relevant sensors in Danfoss Air ([@JonasPed] - [#54847]) ([danfoss_air docs]) +- Add Binary Sensor for WeMo Insight & Maker ([@esev] - [#55000]) ([wemo docs]) +- Add silver quality scale to goalzero ([@tkdrob] - [#53299]) ([goalzero docs]) +- Use EntityDescription - openuv ([@cdce8p] - [#55022]) ([openuv docs]) +- Improve device trigger type hinting ([@scop] - [#54907]) +- Fix P1 Monitor requirement in manifest ([@frenck] - [#55027]) ([p1_monitor docs]) +- Add support for bridge accessory unavailability ([@bdraco] - [#52207]) ([homekit_controller docs]) +- Use EntityDescription - ring ([@cdce8p] - [#55023]) ([ring docs]) +- Add zigbee connection for wemo bridge lights ([@esev] - [#53813]) ([wemo docs]) +- Fix validation for zwave_js device trigger and condition ([@raman325] - [#54974]) ([zwave_js docs]) +- Clean up unused ipp logger ([@tkdrob] - [#55039]) ([ipp docs]) +- Complete config flow tests for sense ([@tkdrob] - [#55040]) ([sense docs]) +- Enable basic type checking for almond ([@emontnemery] - [#54927]) ([almond docs]) +- Remove deprecated YAML configuration from Epson ([@pszafer] - [#55045]) ([epson docs]) (breaking-change) +- Alpine 3.14 ([@pvizeli] - [#55049]) +- Growatt server integration add TLX support ([@JasperPlant] - [#54844]) ([growatt_server docs]) +- Add device class for volatile organic compounds ([@Jc2k] - [#55050]) ([sensor docs]) +- Fix DSMR startup logic ([@emontnemery] - [#55051]) +- Prefer discovered usb device over add-on config in zwave_js ([@MartinHjelmare] - [#55056]) ([zwave_js docs]) +- Please mypy. ([@janiversen] - [#55069]) ([smarty docs]) +- Enable basic type checking for azure_event_hub ([@emontnemery] - [#55047]) ([azure_event_hub docs]) +- Pass session to forecast constructor ([@klaasnicolaas] - [#55075]) ([forecast_solar docs]) +- Add support for white to light groups ([@emontnemery] - [#55082]) ([group docs]) +- Use EntityDescription - rainmachine ([@cdce8p] - [#55021]) ([rainmachine docs]) +- Update pylint to 2.10.2 ([@cdce8p] - [#55089]) +- Restore last_triggered state in scripts ([@frenck] - [#55071]) ([script docs]) +- Use EntityDescription - ecobee ([@cdce8p] - [#55088]) ([ecobee docs]) +- Use EntityDescription - wirelesstag ([@cdce8p] - [#55065]) ([wirelesstag docs]) +- Activate mypy for timer ([@janiversen] - [#55058]) ([timer docs]) +- Activate mypy for volumio ([@janiversen] - [#55054]) ([volumio docs]) +- Add volatile organic compounds to homekit_controller ([@Jc2k] - [#55093]) ([homekit_controller docs]) +- Use EntityDescription - travisci ([@cdce8p] - [#55038]) ([travisci docs]) +- Use EntityDescription - fido ([@cdce8p] - [#55037]) ([fido docs]) +- Update alarm control panel and deconz alarm event to reflect the finalized implementation in deCONZ ([@Kane610] - [#54936]) ([deconz docs]) +- Activate mypy for velbus ([@janiversen] - [#55055]) ([velbus docs]) +- Bump HAP-python to 4.1.0 ([@bdraco] - [#55005]) ([homekit docs]) +- Use EntityDescription - pushbullet ([@cdce8p] - [#54999]) ([pushbullet docs]) +- Use EntityDescription - deluge ([@cdce8p] - [#55085]) ([deluge docs]) +- Use EntityDescription - openevse ([@cdce8p] - [#55084]) ([openevse docs]) +- Activate mypy for tuya ([@janiversen] - [#55057]) ([tuya docs]) +- Use EntityDescription - foobot ([@cdce8p] - [#54996]) ([foobot docs]) +- Add state_class and device_class to Solarlog platform ([@Ernst79] - [#53946]) ([solarlog docs]) +- Update YouLess integration for long time measurements ([@gjong] - [#54767]) ([youless docs]) +- Use EntityDescription - bbox ([@cdce8p] - [#55064]) ([bbox docs]) +- Use EntityDescription - radarr ([@cdce8p] - [#54997]) ([radarr docs]) +- Use EntityDescription - miflora ([@cdce8p] - [#55020]) ([miflora docs]) +- Use EntityDescription - amcrest ([@cdce8p] - [#54998]) ([amcrest docs]) +- Use EntityDescription - startca ([@cdce8p] - [#55036]) ([startca docs]) +- Use EntityDescription - sensehat ([@cdce8p] - [#54995]) ([envirophat docs]) ([sensehat docs]) +- Use EntityDescription - magicseaweed ([@cdce8p] - [#54943]) ([magicseaweed docs]) +- Use EntityDescription - dovado ([@cdce8p] - [#54945]) ([dovado docs]) +- Use EntityDescription - zamg ([@cdce8p] - [#54942]) ([zamg docs]) +- Use EntityDescription - enocean ([@cdce8p] - [#55087]) ([enocean docs]) +- Bump pymyq to 3.1.3 ([@bdraco] - [#55099]) ([myq docs]) +- Fix TypeError in Xiaomi Miio fan platform ([@bieniu] - [#55091]) ([xiaomi_miio docs]) +- Activate mypy for smarttub ([@janiversen] - [#55070]) +- Activate mypy for wink ([@janiversen] - [#55077]) ([wink docs]) +- Use EntityDescription - volkszaehler ([@cdce8p] - [#55034]) ([volkszaehler docs]) +- Activate mypy for synology_srm ([@janiversen] - [#55059]) ([synology_srm docs]) +- Use EntityDescription - ombi ([@cdce8p] - [#55086]) ([ombi docs]) +- Use EntityDescription - thinkingcleaner ([@cdce8p] - [#55068]) ([thinkingcleaner docs]) +- Break out mock of pymodbus return from mock_modbus to new fixture ([@janiversen] - [#55063]) ([modbus docs]) +- Add `sensor` platform for Tractive integration ([@bieniu] - [#54143]) ([tractive docs]) (new-platform) +- Add multi device support back to honeywell ([@rdfurman] - [#54003]) ([honeywell docs]) +- Add support for Google Assistant's LocatorTrait for vacuum cleaners ([@giannello] - [#55015]) ([google_assistant docs]) +- Bump httpx to 0.19.0 ([@bdraco] - [#55106]) +- Fix updating device path from discovery in zha ([@bdraco] - [#55124]) ([zha docs]) +- Bump aioesphomeapi to 7.0.0 ([@jesserockz] - [#55129]) ([esphome docs]) +- Fix race that allowed multiple config flows with the same unique id ([@bdraco] - [#55131]) +- Mark eagle entities as unavailable if connection with meter losts ([@balloob] - [#55102]) ([rainforest_eagle docs]) +- Validate requirements format in hassfest ([@balloob] - [#55094]) ([gc100 docs]) +- Guard for unparsable date time ([@balloob] - [#55108]) ([hue docs]) +- Bump Forecast Solar to v2.1.0 ([@klaasnicolaas] - [#55121]) ([forecast_solar docs]) +- Pin google-api-core to avoid new version of grpcio ([@allenporter] - [#55115]) +- Use EntityDescription - Vallox ([@andre-richter] - [#54891]) ([vallox docs]) +- Use switch instead of toggle entity ([@cdce8p] - [#55111]) ([thinkingcleaner docs]) +- Use EntityDescription - rtorrent ([@cdce8p] - [#55067]) ([rtorrent docs]) +- Use EntityDescription - comed_hourly_pricing ([@cdce8p] - [#55066]) ([comed_hourly_pricing docs]) +- Use EntityDescription - broadlink ([@cdce8p] - [#55019]) ([broadlink docs]) +- Use EntityDescription - onewire ([@epenet] - [#55003]) ([onewire docs]) +- Ensure camera scaling always produces an image of at least the requested width and height ([@bdraco] - [#55033]) ([camera docs]) +- Change Solarlog Watt-peak to Watt ([@Ernst79] - [#55110]) ([solarlog docs]) (breaking-change) +- Fix bug removing API key on Forecast Solar ([@klaasnicolaas] - [#55119]) ([forecast_solar docs]) +- Set statistics columns to double precision ([@emontnemery] - [#55053]) ([recorder docs]) +- Update base image for Alpine 3.14 ([@pvizeli] - [#55137]) +- Remove MQTT Fan legacy speeds ([@jbouwh] - [#54768]) ([mqtt docs]) (breaking-change) +- Activate mypy for surepetcare ([@janiversen] - [#55079]) ([surepetcare docs]) +- Activate mypy for todoist ([@janiversen] - [#55096]) ([todoist docs]) +- Please mypy in gtfs and implement needed changes ([@janiversen] - [#54328]) ([gtfs docs]) +- Add deCONZ support for Sonoff SNZB-01 switches ([@JasperS2307] - [#54919]) ([deconz docs]) +- Provide unique IDs for Lutron Entities ([@cdheiser] - [#51395]) ([lutron docs]) +- Test KNX fan ([@farmio] - [#53621]) ([knx docs]) +- Fallback to try all known Plex servers if none marked present ([@jjlawren] - [#53643]) ([plex docs]) +- SMA: Add statistics support for power sensors ([@andre-richter] - [#54422]) ([sma docs]) +- Configurable default `hvac_mode` for KNX climate ([@farmio] - [#54289]) ([knx docs]) +- OVO Energy - Sensor Entity Descriptions ([@timmo001] - [#54952]) ([ovo_energy docs]) (breaking-change) +- Implementation of new Vacation mode for MQTT-based alarm panels ([@posixx] - [#53561]) ([mqtt docs]) ([alarm_control_panel docs]) ([manual_mqtt docs]) +- Fix Tasmota MQTT discovery flow ([@emontnemery] - [#55140]) ([tasmota docs]) +- Update amcrest to use binary sensor entity description ([@flacjacket] - [#55092]) ([amcrest docs]) +- Convert template/vacuum to pytest with fixtures ([@janiversen] - [#54841]) ([template docs]) +- Revert "Please mypy in gtfs and implement needed changes (#54328)" ([@janiversen] - [#55148]) ([gtfs docs]) +- Fix min value for Xiaomi Miio volume entity ([@bieniu] - [#55139]) ([xiaomi_miio docs]) +- Convert number value to int in Xiaomi Miio ([@bieniu] - [#55145]) ([xiaomi_miio docs]) +- Fix statistics for sensors setting last_reset ([@emontnemery] - [#55136]) ([recorder docs]) ([history docs]) ([sensor docs]) ([energy docs]) +- Allow small dip in total_increasing sensor without detecting a reset ([@emontnemery] - [#55153]) ([sensor docs]) ([energy docs]) +- Adjust yeelight homekit model match ([@bdraco] - [#55159]) ([yeelight docs]) +- Handle missing mac address in syncthru ([@nielstron] - [#55154]) ([syncthru docs]) +- Deduplicate code in MQTT alarm_control_panel tests ([@emontnemery] - [#55149]) ([mqtt docs]) +- Improve Tasmota MQTT discovery flow ([@emontnemery] - [#55147]) ([tasmota docs]) +- Address late review of Fritz switch ([@AaronDavidSchneider] - [#54842]) ([fritz docs]) +- Move to aiogithubapi any async for the GitHub integration ([@ludeeus] - [#55143]) ([github docs]) +- Use a debouncer when updating ZHA group state ([@Adminiuga] - [#53263]) ([zha docs]) +- Remove temperature conversion - dht ([@cdce8p] - [#55161]) ([dht docs]) +- Remove temperature conversion - bme280 ([@cdce8p] - [#55162]) ([bme280 docs]) +- Remove temperature conversion - bme680 ([@cdce8p] - [#55163]) ([bme680 docs]) +- Remove temperature conversion - htu21d ([@cdce8p] - [#55165]) ([htu21d docs]) +- Add missing baseclass for rituals perfume genie entities ([@milanmeu] - [#55166]) ([rituals_perfume_genie docs]) +- Convert Nanoleaf yaml and discovery to config flow ([@milanmeu] - [#52199]) ([nanoleaf docs]) (breaking-change) +- Update version for smart-meter-texas to 0.4.7 ([@meyerrj] - [#54493]) ([smart_meter_texas docs]) +- Fix Sonos missing group member race condition on startup ([@jjlawren] - [#55158]) ([sonos docs]) +- Update ZHA config entry radio detection ([@Adminiuga] - [#55128]) ([zha docs]) +- Add ability to configure OpenUV "protection window" UV indices ([@bachya] - [#54562]) ([openuv docs]) +- Remove unreachable code in OpenUV ([@bachya] - [#55181]) ([openuv docs]) +- Fix recorder test ([@balloob] - [#55169]) ([sensor docs]) +- Bump codecov/codecov-action from 2.0.2 to 2.0.3 (@dependabot - [#55194]) +- Add statistics for emoncms power and energy feeds ([@lukewaite] - [#55109]) ([emoncms docs]) +- Use EntityDescription - dht ([@cdce8p] - [#55183]) ([dht docs]) +- Remove temperature conversion - mhz19 ([@cdce8p] - [#55164]) ([mhz19 docs]) +- Activate mypy in gtfs (followup on reverted #54328) ([@janiversen] - [#55195]) ([gtfs docs]) +- Use EntityDescription - guardian ([@bachya] - [#55118]) ([guardian docs]) +- Use EntityDescription - htu21d ([@cdce8p] - [#55186]) ([htu21d docs]) +- Use EntityDescription - bme680 ([@cdce8p] - [#55185]) ([bme680 docs]) +- Use EntityDescription - bme280 ([@cdce8p] - [#55184]) ([bme280 docs]) +- Use EntityDescription - notion ([@bachya] - [#55120]) ([notion docs]) +- Use EntityDescription - airvisual ([@bachya] - [#55125]) ([airvisual docs]) +- Use EntityDescription - flunearyou ([@bachya] - [#55126]) ([flunearyou docs]) +- Updating IBM Watson SDK ([@rutkai] - [#54914]) ([watson_tts docs]) +- Add account type to Forecast.Solar integration ([@klaasnicolaas] - [#55175]) ([forecast_solar docs]) +- Remove temperature conversion - temper ([@cdce8p] - [#55188]) ([temper docs]) +- Fix rainforest eagle incorrectly fetch conncted first try ([@balloob] - [#55193]) ([rainforest_eagle docs]) +- Add configurable `state_class` to Modbus sensors ([@farmio] - [#54103]) ([modbus docs]) +- Refactor Jewish Calendar to use EntityDescription ([@yuvalabou] - [#54852]) ([jewish_calendar docs]) +- Remember state of MQTT availability topics when reconfiguring ([@emontnemery] - [#55199]) ([mqtt docs]) +- Add service to clear completed shoppinglist items ([@GrumpyMeow] - [#55032]) ([shopping_list docs]) +- Check for duplicate host/port and integration name in modbus ([@janiversen] - [#54664]) ([modbus docs]) +- Fix name - temper ([@cdce8p] - [#55189]) ([temper docs]) +- Extract attribute names out of vol.Optional when validating entity service schema ([@bnordli] - [#55157]) +- Generate statistics for all sensors with a supported state_class ([@emontnemery] - [#54882]) ([recorder docs]) ([sensor docs]) +- Warn if a sensor with state_class_total has a decreasing value ([@emontnemery] - [#55197]) ([sensor docs]) ([energy docs]) +- Add type annotations to amcrest integration ([@flacjacket] - [#54761]) ([amcrest docs]) +- Activate mypy for switchbot ([@janiversen] - [#55196]) ([switchbot docs]) +- Use EntityDescription - mhz19 ([@cdce8p] - [#55187]) ([mhz19 docs]) +- Tasmota - Cleanup tests involving legacy fan speed ([@jbouwh] - [#55202]) ([tasmota docs]) +- Utility meter, add STATE_CLASS_TOTAL_INCREASING ([@Danielhiversen] - [#54871]) ([utility_meter docs]) +- Clean up usage of EntityDescription in OpenUV ([@bachya] - [#55127]) ([openuv docs]) +- Cancel entity timers. ([@janiversen] - [#55141]) ([modbus docs]) +- Remove redundant str cast - sensor value conversion ([@cdce8p] - [#55204]) ([sensor docs]) +- Fix last_reset in utility_meter ([@emontnemery] - [#55209]) ([utility_meter docs]) +- Remove should poll property from Xiaomi Miio fan platform ([@bieniu] - [#55201]) ([xiaomi_miio docs]) +- ESPHome sensor use total_increasing state class ([@OttoWinter] - [#55208]) ([esphome docs]) +- Fix Fjäråskupan RSSI sensor unit ([@emontnemery] - [#55210]) ([fjaraskupan docs]) +- Prevent setting _attr_unit_of_measurement in subclasses of SensorEntity ([@emontnemery] - [#55211]) ([sensor docs]) +- Ignore unsupported MeasureType-s from Withings ([@denismilanovic] - [#55205]) ([withings docs]) +- Report average of position and tilt_position for cover groups ([@emontnemery] - [#52713]) ([group docs]) +- Remove temperature conversion - synology_dsm ([@cdce8p] - [#55214]) ([synology_dsm docs]) +- Finish EntityDescription implementation for RainMachine ([@bachya] - [#55180]) ([rainmachine docs]) +- Remove temperature conversion - sht31 ([@cdce8p] - [#55213]) ([sht31 docs]) +- Support device triggers in HomeKit ([@bdraco] - [#53869]) ([homekit docs]) +- Change logging to do rollover() instead of rotate() ([@janiversen] - [#55177]) +- Implement color_mode support for mysensors ([@emontnemery] - [#52068]) ([mysensors docs]) (breaking-change) +- Address review of Nanoleaf Config Flow ([@milanmeu] - [#55215]) ([nanoleaf docs]) +- Sonos add bass & treble EQ option ([@Tigger2014] - [#53978]) ([sonos docs]) +- Add support for Xiaomi Miio pedestal fans ([@bieniu] - [#55114]) ([xiaomi_miio docs]) +- Support for EnergyStorageTrait for vacuum cleaners ([@giannello] - [#55134]) ([google_assistant docs]) +- Add tests for Rituals init, sensor and switch ([@milanmeu] - [#52406]) ([rituals_perfume_genie docs]) +- Honeywell Lyric - Entity Descriptions ([@timmo001] - [#54956]) ([lyric docs]) +- Add select platform to template integration ([@raman325] - [#54835]) ([template docs]) (new-platform) +- Add number platform to template integration ([@raman325] - [#54789]) ([template docs]) (new-platform) +- Bump frontend to 20210825.0 ([@balloob] - [#55221]) ([frontend docs]) +- Add an energy solar platform for solar forecasts ([@balloob] - [#54576]) ([energy docs]) ([forecast_solar docs]) +- Add missing convert to fan/light/switch modbus platform ([@janiversen] - [#55203]) ([modbus docs]) +- Add template functions to get area_id and area_name ([@raman325] - [#54248]) +- Add "cron patterns" to define utility_meter cycles ([@dgomes] - [#46795]) ([utility_meter docs]) +- Add Nanoleaf reauth flow ([@milanmeu] - [#55217]) ([nanoleaf docs]) +- Convert color temperature to visible color in lights ([@bdraco] - [#55219]) ([light docs]) +- Add services to bond to start and stop increase/decrease brightness ([@bdraco] - [#55006]) ([bond docs]) +- Set up polling task with subscriptions in Sonos ([@jjlawren] - [#54355]) ([sonos docs]) (beta fix) +- Remove temperature conversion - tado ([@cdce8p] - [#55231]) ([tado docs]) (beta fix) +- Limit USB discovery to specific manufacturer/description/serial_number matches ([@bdraco] - [#55236]) ([zha docs]) ([usb docs]) (beta fix) +- Only warn once per entity when the async_camera_image signature needs to be updated ([@bdraco] - [#55238]) ([camera docs]) (beta fix) +- Defer zha auto configure probe until after clicking configure ([@bdraco] - [#55239]) ([zha docs]) (beta fix) +- Bump up ZHA dependencies ([@Adminiuga] - [#55242]) ([zha docs]) (beta fix) +- Abort zha usb discovery if deconz is setup ([@bdraco] - [#55245]) ([zha docs]) (beta fix) +- Only postfix image name for container ([@ludeeus] - [#55248]) ([version docs]) (beta fix) +- Fix double precision float for postgresql ([@emontnemery] - [#55249]) ([recorder docs]) (beta fix) +- Fix MQTT add-on discovery to be ignorable ([@frenck] - [#55250]) ([mqtt docs]) (beta fix) +- Warn if a sensor with state_class_total has a decreasing value twice ([@emontnemery] - [#55251]) ([sensor docs]) (beta fix) +- Don't create DSL sensor for devices that don't support DSL ([@TheZoker] - [#55269]) ([fritz docs]) (beta fix) +- Fix AttributeError for non-MIOT Xiaomi Miio purifiers ([@bieniu] - [#55271]) ([xiaomi_miio docs]) (beta fix) +- Improve performance of ring camera still images ([@prwood80] - [#53803]) ([ring docs]) (beta fix) +- Fix unique_id conflict in smarttthings ([@firstof9] - [#55235]) ([smartthings docs]) (beta fix) +- Fix some yeelights showing wrong state after on/off ([@bdraco] - [#55279]) ([yeelight docs]) (beta fix) +- Fix yeelight brightness when nightlight switch is disabled ([@bdraco] - [#55278]) ([yeelight docs]) (beta fix) +- Ensure yeelight model is set in the config entry ([@bdraco] - [#55281]) ([yeelight docs]) (beta fix) +- Set yeelight capabilities from external discovery ([@bdraco] - [#55280]) ([yeelight docs]) (beta fix) +- Bump ring to 0.7.1 ([@balloob] - [#55282]) ([ring docs]) (beta fix) +- Gracefully handle pyudev failing to filter on WSL ([@bdraco] - [#55286]) ([usb docs]) (beta fix) +- Correct flash light livarno when use hue ([@realPy] - [#55294]) ([hue docs]) (beta fix) +- Fix creation of new nmap tracker entities ([@bdraco] - [#55297]) ([nmap_tracker docs]) (beta fix) +- Bump bimmer_connected to 0.7.20 ([@rikroe] - [#55299]) ([bmw_connected_drive docs]) (beta fix) +- Bump aiorecollect to 1.0.8 ([@bachya] - [#55300]) ([recollect_waste docs]) (beta fix) +- Bump simplisafe-python to 11.0.5 ([@bachya] - [#55306]) ([simplisafe docs]) (beta fix) +- Always send powerview move command in case shade is out of sync ([@bdraco] - [#55308]) ([hunterdouglas_powerview docs]) (beta fix) +- Fix lifx model to be a string ([@bdraco] - [#55309]) ([lifx docs]) (beta fix) +- Handle statistics for sensor with changing state class ([@emontnemery] - [#55316]) ([recorder docs]) ([sensor docs]) (beta fix) +- Fix sonos alarm schema ([@tkdrob] - [#55318]) ([sonos docs]) (beta fix) +- Fix reauth for sonarr ([@ctalkington] - [#55329]) ([sonarr docs]) (beta fix) +- Add modbus name to log_error ([@janiversen] - [#55336]) ([modbus docs]) (beta fix) +- Retrigger config flow when the ssdp location changes for a UDN ([@bdraco] - [#55343]) ([ssdp docs]) (beta fix) +- Upgrade aiolifx to 0.6.10 ([@amelchio] - [#55344]) ([lifx docs]) (beta fix) +- Ensure yeelights resync state if they are busy on first connect ([@bdraco] - [#55333]) ([yeelight docs]) (beta fix) +- Listen to node events in the zwave_js node status sensor ([@raman325] - [#55341]) ([zwave_js docs]) (beta fix) +- Tractive name ([@Danielhiversen] - [#55342]) ([tractive docs]) (beta fix) +- Convert solarlog to coordinator ([@balloob] - [#55345]) ([solarlog docs]) (beta fix) +- Ensure ReCollect Waste starts up even if no future pickup is found ([@bachya] - [#55349]) ([recollect_waste docs]) (beta fix) +- Fix wolflink super call ([@balloob] - [#55359]) ([wolflink docs]) (beta fix) +- Bump pylitterbot to 2021.8.1 ([@natekspencer] - [#55360]) ([litterrobot docs]) (beta fix) +- close connection on connection retry, bump onvif lib ([@hunterjm] - [#55363]) ([onvif docs]) (beta fix) +- Pin regex to 2021.8.28 ([@ludeeus] - [#55368]) (beta fix) +- Address late review for Tractive integration ([@bieniu] - [#55371]) ([tractive docs]) (beta fix) +- Handle incorrect values reported by some Shelly devices ([@mkrasowski] - [#55042]) ([shelly docs]) (beta fix) +- Implement import of consider_home in nmap_tracker to avoid breaking change ([@bdraco] - [#55379]) ([nmap_tracker docs]) (beta fix) +- Bump simplisafe-python to 11.0.6 ([@bachya] - [#55385]) ([simplisafe docs]) (beta fix) +- Show device_id in HomeKit when the device registry entry is missing a name ([@bdraco] - [#55391]) ([homekit docs]) (beta fix) +- Fix device_class - qnap drive_temp sensor ([@cdce8p] - [#55409]) ([qnap docs]) (beta fix) +- Ensure ReCollect Waste shows pickups for midnight on the actual day ([@bachya] - [#55424]) ([recollect_waste docs]) (beta fix) +- Bump zeroconf to 0.36.1 ([@bdraco] - [#55425]) ([zeroconf docs]) (beta fix) +- Update entity names for P1 Monitor integration ([@klaasnicolaas] - [#55430]) ([p1_monitor docs]) (beta fix) +- Make zwave_js discovery log message more descriptive ([@raman325] - [#55432]) ([zwave_js docs]) (beta fix) +- Add Sense energy sensors ([@crkochan] - [#54833]) ([sense docs]) (beta fix) +- Don't set zwave_js sensor device class to energy when unit is wrong ([@raman325] - [#55434]) ([zwave_js docs]) (beta fix) +- Improve statistics error messages when sensor's unit is changing ([@emontnemery] - [#55436]) ([sensor docs]) (beta fix) +- Fix crash in buienradar sensor due to self.hass not set ([@emontnemery] - [#55438]) ([buienradar docs]) (beta fix) +- Fix exception when shutting down DSMR ([@emontnemery] - [#55441]) ([dsmr docs]) (beta fix) +- Fix noise/attenuation units to UI display for Fritz ([@chemelli74] - [#55447]) ([fritz docs]) (beta fix) +- Revert "Deprecate last_reset options in MQTT sensor" ([@emontnemery] - [#55457]) ([mqtt docs]) (beta fix) +- Bump zeroconf to 0.36.2 ([@bdraco] - [#55459]) ([zeroconf docs]) (beta fix) +- Bump zwave-js-server-python to 0.29.1 ([@raman325] - [#55460]) ([zwave_js docs]) (beta fix) +- Add IoTaWatt integration ([@gtdiehl] - [#55364]) ([iotawatt docs]) (beta fix) (new-integration) +- Fix race in MQTT sensor when last_reset_topic is configured ([@emontnemery] - [#55463]) ([mqtt docs]) (beta fix) (breaking-change) +- Bump pyopenuv to 2.2.0 ([@bachya] - [#55464]) ([openuv docs]) (beta fix) +- Bump pyiqvia to 1.1.0 ([@bachya] - [#55466]) ([iqvia docs]) (beta fix) +- Bump aioambient to 1.3.0 ([@bachya] - [#55468]) ([ambient_station docs]) (beta fix) +- Fix area_id and area_name template functions ([@raman325] - [#55470]) (beta fix) +- Update frontend to 20210830.0 ([@bramkragten] - [#55472]) ([frontend docs]) (beta fix) +- Wemo Insight devices need polling when off ([@esev] - [#55348]) ([wemo docs]) (beta fix) +- Make new cycles for sensor sum statistics start with 0 as zero-point ([@emontnemery] - [#55473]) ([sensor docs]) (beta fix) +- Add Eagle 200 name back ([@balloob] - [#55477]) ([rainforest_eagle docs]) (beta fix) +- Assistant sensors ([@mjg59] - [#55480]) ([google_assistant docs]) (beta fix) +- Fix ArestSwitchBase missing is on attribute ([@uvjustin] - [#55483]) ([arest docs]) (beta fix) +- Increase YouLess polling interval ([@gjong] - [#55490]) ([youless docs]) (beta fix) +- Remove Youless native unit of measurement ([@gjong] - [#55492]) ([youless docs]) (beta fix) +- Add cache-control headers to supervisor entrypoint ([@ludeeus] - [#55493]) ([hassio docs]) (beta fix) +- Correct sum statistics when only last_reset has changed ([@emontnemery] - [#55498]) ([sensor docs]) (beta fix) +- Improve log for sum statistics ([@emontnemery] - [#55502]) ([sensor docs]) (beta fix) +- Added trailing slash to US growatt URL ([@muppet3000] - [#55504]) ([growatt_server docs]) (beta fix) +- Fix BroadlinkSwitch._attr_assumed_state ([@felipediel] - [#55505]) ([broadlink docs]) (beta fix) +- Add missing device class for temperature sensor in Advantage Air ([@Bre77] - [#55508]) ([advantage_air docs]) (beta fix) +- Fix None support_color_modes TypeError ([@brianegge] - [#55497]) ([light docs]) (beta fix) +- ESPHome light color mode use capabilities ([@OttoWinter] - [#55206]) ([esphome docs]) (beta fix) +- Tweaks for the iotawatt integration ([@balloob] - [#55510]) ([iotawatt docs]) (beta fix) + +{% enddetails %} + +[#39605]: https://github.com/home-assistant/core/pull/39605 +[#43513]: https://github.com/home-assistant/core/pull/43513 +[#46795]: https://github.com/home-assistant/core/pull/46795 +[#48261]: https://github.com/home-assistant/core/pull/48261 +[#49395]: https://github.com/home-assistant/core/pull/49395 +[#50071]: https://github.com/home-assistant/core/pull/50071 +[#51002]: https://github.com/home-assistant/core/pull/51002 +[#51160]: https://github.com/home-assistant/core/pull/51160 +[#51395]: https://github.com/home-assistant/core/pull/51395 +[#52068]: https://github.com/home-assistant/core/pull/52068 +[#52199]: https://github.com/home-assistant/core/pull/52199 +[#52207]: https://github.com/home-assistant/core/pull/52207 +[#52343]: https://github.com/home-assistant/core/pull/52343 +[#52352]: https://github.com/home-assistant/core/pull/52352 +[#52406]: https://github.com/home-assistant/core/pull/52406 +[#52713]: https://github.com/home-assistant/core/pull/52713 +[#52843]: https://github.com/home-assistant/core/pull/52843 +[#53018]: https://github.com/home-assistant/core/pull/53018 +[#53029]: https://github.com/home-assistant/core/pull/53029 +[#53140]: https://github.com/home-assistant/core/pull/53140 +[#53198]: https://github.com/home-assistant/core/pull/53198 +[#53263]: https://github.com/home-assistant/core/pull/53263 +[#53299]: https://github.com/home-assistant/core/pull/53299 +[#53361]: https://github.com/home-assistant/core/pull/53361 +[#53443]: https://github.com/home-assistant/core/pull/53443 +[#53463]: https://github.com/home-assistant/core/pull/53463 +[#53561]: https://github.com/home-assistant/core/pull/53561 +[#53583]: https://github.com/home-assistant/core/pull/53583 +[#53603]: https://github.com/home-assistant/core/pull/53603 +[#53619]: https://github.com/home-assistant/core/pull/53619 +[#53621]: https://github.com/home-assistant/core/pull/53621 +[#53633]: https://github.com/home-assistant/core/pull/53633 +[#53638]: https://github.com/home-assistant/core/pull/53638 +[#53642]: https://github.com/home-assistant/core/pull/53642 +[#53643]: https://github.com/home-assistant/core/pull/53643 +[#53644]: https://github.com/home-assistant/core/pull/53644 +[#53655]: https://github.com/home-assistant/core/pull/53655 +[#53666]: https://github.com/home-assistant/core/pull/53666 +[#53680]: https://github.com/home-assistant/core/pull/53680 +[#53685]: https://github.com/home-assistant/core/pull/53685 +[#53693]: https://github.com/home-assistant/core/pull/53693 +[#53699]: https://github.com/home-assistant/core/pull/53699 +[#53703]: https://github.com/home-assistant/core/pull/53703 +[#53705]: https://github.com/home-assistant/core/pull/53705 +[#53706]: https://github.com/home-assistant/core/pull/53706 +[#53714]: https://github.com/home-assistant/core/pull/53714 +[#53724]: https://github.com/home-assistant/core/pull/53724 +[#53725]: https://github.com/home-assistant/core/pull/53725 +[#53728]: https://github.com/home-assistant/core/pull/53728 +[#53740]: https://github.com/home-assistant/core/pull/53740 +[#53744]: https://github.com/home-assistant/core/pull/53744 +[#53750]: https://github.com/home-assistant/core/pull/53750 +[#53763]: https://github.com/home-assistant/core/pull/53763 +[#53764]: https://github.com/home-assistant/core/pull/53764 +[#53768]: https://github.com/home-assistant/core/pull/53768 +[#53780]: https://github.com/home-assistant/core/pull/53780 +[#53782]: https://github.com/home-assistant/core/pull/53782 +[#53783]: https://github.com/home-assistant/core/pull/53783 +[#53784]: https://github.com/home-assistant/core/pull/53784 +[#53786]: https://github.com/home-assistant/core/pull/53786 +[#53787]: https://github.com/home-assistant/core/pull/53787 +[#53803]: https://github.com/home-assistant/core/pull/53803 +[#53805]: https://github.com/home-assistant/core/pull/53805 +[#53807]: https://github.com/home-assistant/core/pull/53807 +[#53813]: https://github.com/home-assistant/core/pull/53813 +[#53816]: https://github.com/home-assistant/core/pull/53816 +[#53820]: https://github.com/home-assistant/core/pull/53820 +[#53835]: https://github.com/home-assistant/core/pull/53835 +[#53836]: https://github.com/home-assistant/core/pull/53836 +[#53837]: https://github.com/home-assistant/core/pull/53837 +[#53840]: https://github.com/home-assistant/core/pull/53840 +[#53851]: https://github.com/home-assistant/core/pull/53851 +[#53863]: https://github.com/home-assistant/core/pull/53863 +[#53869]: https://github.com/home-assistant/core/pull/53869 +[#53881]: https://github.com/home-assistant/core/pull/53881 +[#53890]: https://github.com/home-assistant/core/pull/53890 +[#53891]: https://github.com/home-assistant/core/pull/53891 +[#53895]: https://github.com/home-assistant/core/pull/53895 +[#53898]: https://github.com/home-assistant/core/pull/53898 +[#53903]: https://github.com/home-assistant/core/pull/53903 +[#53909]: https://github.com/home-assistant/core/pull/53909 +[#53911]: https://github.com/home-assistant/core/pull/53911 +[#53915]: https://github.com/home-assistant/core/pull/53915 +[#53919]: https://github.com/home-assistant/core/pull/53919 +[#53920]: https://github.com/home-assistant/core/pull/53920 +[#53924]: https://github.com/home-assistant/core/pull/53924 +[#53928]: https://github.com/home-assistant/core/pull/53928 +[#53929]: https://github.com/home-assistant/core/pull/53929 +[#53931]: https://github.com/home-assistant/core/pull/53931 +[#53933]: https://github.com/home-assistant/core/pull/53933 +[#53934]: https://github.com/home-assistant/core/pull/53934 +[#53936]: https://github.com/home-assistant/core/pull/53936 +[#53938]: https://github.com/home-assistant/core/pull/53938 +[#53945]: https://github.com/home-assistant/core/pull/53945 +[#53946]: https://github.com/home-assistant/core/pull/53946 +[#53949]: https://github.com/home-assistant/core/pull/53949 +[#53950]: https://github.com/home-assistant/core/pull/53950 +[#53952]: https://github.com/home-assistant/core/pull/53952 +[#53954]: https://github.com/home-assistant/core/pull/53954 +[#53955]: https://github.com/home-assistant/core/pull/53955 +[#53956]: https://github.com/home-assistant/core/pull/53956 +[#53958]: https://github.com/home-assistant/core/pull/53958 +[#53967]: https://github.com/home-assistant/core/pull/53967 +[#53975]: https://github.com/home-assistant/core/pull/53975 +[#53978]: https://github.com/home-assistant/core/pull/53978 +[#53995]: https://github.com/home-assistant/core/pull/53995 +[#53996]: https://github.com/home-assistant/core/pull/53996 +[#54003]: https://github.com/home-assistant/core/pull/54003 +[#54006]: https://github.com/home-assistant/core/pull/54006 +[#54018]: https://github.com/home-assistant/core/pull/54018 +[#54019]: https://github.com/home-assistant/core/pull/54019 +[#54020]: https://github.com/home-assistant/core/pull/54020 +[#54040]: https://github.com/home-assistant/core/pull/54040 +[#54041]: https://github.com/home-assistant/core/pull/54041 +[#54042]: https://github.com/home-assistant/core/pull/54042 +[#54044]: https://github.com/home-assistant/core/pull/54044 +[#54051]: https://github.com/home-assistant/core/pull/54051 +[#54055]: https://github.com/home-assistant/core/pull/54055 +[#54074]: https://github.com/home-assistant/core/pull/54074 +[#54075]: https://github.com/home-assistant/core/pull/54075 +[#54080]: https://github.com/home-assistant/core/pull/54080 +[#54084]: https://github.com/home-assistant/core/pull/54084 +[#54087]: https://github.com/home-assistant/core/pull/54087 +[#54090]: https://github.com/home-assistant/core/pull/54090 +[#54096]: https://github.com/home-assistant/core/pull/54096 +[#54103]: https://github.com/home-assistant/core/pull/54103 +[#54109]: https://github.com/home-assistant/core/pull/54109 +[#54110]: https://github.com/home-assistant/core/pull/54110 +[#54111]: https://github.com/home-assistant/core/pull/54111 +[#54115]: https://github.com/home-assistant/core/pull/54115 +[#54116]: https://github.com/home-assistant/core/pull/54116 +[#54133]: https://github.com/home-assistant/core/pull/54133 +[#54137]: https://github.com/home-assistant/core/pull/54137 +[#54143]: https://github.com/home-assistant/core/pull/54143 +[#54149]: https://github.com/home-assistant/core/pull/54149 +[#54157]: https://github.com/home-assistant/core/pull/54157 +[#54174]: https://github.com/home-assistant/core/pull/54174 +[#54176]: https://github.com/home-assistant/core/pull/54176 +[#54179]: https://github.com/home-assistant/core/pull/54179 +[#54182]: https://github.com/home-assistant/core/pull/54182 +[#54185]: https://github.com/home-assistant/core/pull/54185 +[#54190]: https://github.com/home-assistant/core/pull/54190 +[#54198]: https://github.com/home-assistant/core/pull/54198 +[#54200]: https://github.com/home-assistant/core/pull/54200 +[#54223]: https://github.com/home-assistant/core/pull/54223 +[#54226]: https://github.com/home-assistant/core/pull/54226 +[#54227]: https://github.com/home-assistant/core/pull/54227 +[#54228]: https://github.com/home-assistant/core/pull/54228 +[#54229]: https://github.com/home-assistant/core/pull/54229 +[#54230]: https://github.com/home-assistant/core/pull/54230 +[#54231]: https://github.com/home-assistant/core/pull/54231 +[#54244]: https://github.com/home-assistant/core/pull/54244 +[#54248]: https://github.com/home-assistant/core/pull/54248 +[#54251]: https://github.com/home-assistant/core/pull/54251 +[#54253]: https://github.com/home-assistant/core/pull/54253 +[#54256]: https://github.com/home-assistant/core/pull/54256 +[#54257]: https://github.com/home-assistant/core/pull/54257 +[#54259]: https://github.com/home-assistant/core/pull/54259 +[#54262]: https://github.com/home-assistant/core/pull/54262 +[#54264]: https://github.com/home-assistant/core/pull/54264 +[#54269]: https://github.com/home-assistant/core/pull/54269 +[#54271]: https://github.com/home-assistant/core/pull/54271 +[#54276]: https://github.com/home-assistant/core/pull/54276 +[#54277]: https://github.com/home-assistant/core/pull/54277 +[#54284]: https://github.com/home-assistant/core/pull/54284 +[#54287]: https://github.com/home-assistant/core/pull/54287 +[#54289]: https://github.com/home-assistant/core/pull/54289 +[#54296]: https://github.com/home-assistant/core/pull/54296 +[#54297]: https://github.com/home-assistant/core/pull/54297 +[#54300]: https://github.com/home-assistant/core/pull/54300 +[#54301]: https://github.com/home-assistant/core/pull/54301 +[#54304]: https://github.com/home-assistant/core/pull/54304 +[#54305]: https://github.com/home-assistant/core/pull/54305 +[#54310]: https://github.com/home-assistant/core/pull/54310 +[#54314]: https://github.com/home-assistant/core/pull/54314 +[#54316]: https://github.com/home-assistant/core/pull/54316 +[#54317]: https://github.com/home-assistant/core/pull/54317 +[#54318]: https://github.com/home-assistant/core/pull/54318 +[#54319]: https://github.com/home-assistant/core/pull/54319 +[#54320]: https://github.com/home-assistant/core/pull/54320 +[#54321]: https://github.com/home-assistant/core/pull/54321 +[#54323]: https://github.com/home-assistant/core/pull/54323 +[#54325]: https://github.com/home-assistant/core/pull/54325 +[#54327]: https://github.com/home-assistant/core/pull/54327 +[#54328]: https://github.com/home-assistant/core/pull/54328 +[#54329]: https://github.com/home-assistant/core/pull/54329 +[#54336]: https://github.com/home-assistant/core/pull/54336 +[#54343]: https://github.com/home-assistant/core/pull/54343 +[#54355]: https://github.com/home-assistant/core/pull/54355 +[#54359]: https://github.com/home-assistant/core/pull/54359 +[#54360]: https://github.com/home-assistant/core/pull/54360 +[#54362]: https://github.com/home-assistant/core/pull/54362 +[#54363]: https://github.com/home-assistant/core/pull/54363 +[#54366]: https://github.com/home-assistant/core/pull/54366 +[#54367]: https://github.com/home-assistant/core/pull/54367 +[#54369]: https://github.com/home-assistant/core/pull/54369 +[#54370]: https://github.com/home-assistant/core/pull/54370 +[#54371]: https://github.com/home-assistant/core/pull/54371 +[#54383]: https://github.com/home-assistant/core/pull/54383 +[#54387]: https://github.com/home-assistant/core/pull/54387 +[#54388]: https://github.com/home-assistant/core/pull/54388 +[#54390]: https://github.com/home-assistant/core/pull/54390 +[#54391]: https://github.com/home-assistant/core/pull/54391 +[#54392]: https://github.com/home-assistant/core/pull/54392 +[#54393]: https://github.com/home-assistant/core/pull/54393 +[#54396]: https://github.com/home-assistant/core/pull/54396 +[#54403]: https://github.com/home-assistant/core/pull/54403 +[#54408]: https://github.com/home-assistant/core/pull/54408 +[#54410]: https://github.com/home-assistant/core/pull/54410 +[#54412]: https://github.com/home-assistant/core/pull/54412 +[#54415]: https://github.com/home-assistant/core/pull/54415 +[#54416]: https://github.com/home-assistant/core/pull/54416 +[#54418]: https://github.com/home-assistant/core/pull/54418 +[#54420]: https://github.com/home-assistant/core/pull/54420 +[#54422]: https://github.com/home-assistant/core/pull/54422 +[#54425]: https://github.com/home-assistant/core/pull/54425 +[#54427]: https://github.com/home-assistant/core/pull/54427 +[#54428]: https://github.com/home-assistant/core/pull/54428 +[#54429]: https://github.com/home-assistant/core/pull/54429 +[#54430]: https://github.com/home-assistant/core/pull/54430 +[#54431]: https://github.com/home-assistant/core/pull/54431 +[#54432]: https://github.com/home-assistant/core/pull/54432 +[#54442]: https://github.com/home-assistant/core/pull/54442 +[#54449]: https://github.com/home-assistant/core/pull/54449 +[#54452]: https://github.com/home-assistant/core/pull/54452 +[#54456]: https://github.com/home-assistant/core/pull/54456 +[#54468]: https://github.com/home-assistant/core/pull/54468 +[#54469]: https://github.com/home-assistant/core/pull/54469 +[#54470]: https://github.com/home-assistant/core/pull/54470 +[#54471]: https://github.com/home-assistant/core/pull/54471 +[#54472]: https://github.com/home-assistant/core/pull/54472 +[#54474]: https://github.com/home-assistant/core/pull/54474 +[#54475]: https://github.com/home-assistant/core/pull/54475 +[#54476]: https://github.com/home-assistant/core/pull/54476 +[#54477]: https://github.com/home-assistant/core/pull/54477 +[#54478]: https://github.com/home-assistant/core/pull/54478 +[#54481]: https://github.com/home-assistant/core/pull/54481 +[#54482]: https://github.com/home-assistant/core/pull/54482 +[#54483]: https://github.com/home-assistant/core/pull/54483 +[#54489]: https://github.com/home-assistant/core/pull/54489 +[#54493]: https://github.com/home-assistant/core/pull/54493 +[#54496]: https://github.com/home-assistant/core/pull/54496 +[#54501]: https://github.com/home-assistant/core/pull/54501 +[#54503]: https://github.com/home-assistant/core/pull/54503 +[#54512]: https://github.com/home-assistant/core/pull/54512 +[#54513]: https://github.com/home-assistant/core/pull/54513 +[#54516]: https://github.com/home-assistant/core/pull/54516 +[#54522]: https://github.com/home-assistant/core/pull/54522 +[#54523]: https://github.com/home-assistant/core/pull/54523 +[#54532]: https://github.com/home-assistant/core/pull/54532 +[#54539]: https://github.com/home-assistant/core/pull/54539 +[#54540]: https://github.com/home-assistant/core/pull/54540 +[#54542]: https://github.com/home-assistant/core/pull/54542 +[#54543]: https://github.com/home-assistant/core/pull/54543 +[#54546]: https://github.com/home-assistant/core/pull/54546 +[#54547]: https://github.com/home-assistant/core/pull/54547 +[#54554]: https://github.com/home-assistant/core/pull/54554 +[#54560]: https://github.com/home-assistant/core/pull/54560 +[#54561]: https://github.com/home-assistant/core/pull/54561 +[#54562]: https://github.com/home-assistant/core/pull/54562 +[#54564]: https://github.com/home-assistant/core/pull/54564 +[#54567]: https://github.com/home-assistant/core/pull/54567 +[#54574]: https://github.com/home-assistant/core/pull/54574 +[#54575]: https://github.com/home-assistant/core/pull/54575 +[#54576]: https://github.com/home-assistant/core/pull/54576 +[#54577]: https://github.com/home-assistant/core/pull/54577 +[#54581]: https://github.com/home-assistant/core/pull/54581 +[#54583]: https://github.com/home-assistant/core/pull/54583 +[#54588]: https://github.com/home-assistant/core/pull/54588 +[#54589]: https://github.com/home-assistant/core/pull/54589 +[#54594]: https://github.com/home-assistant/core/pull/54594 +[#54596]: https://github.com/home-assistant/core/pull/54596 +[#54601]: https://github.com/home-assistant/core/pull/54601 +[#54603]: https://github.com/home-assistant/core/pull/54603 +[#54606]: https://github.com/home-assistant/core/pull/54606 +[#54607]: https://github.com/home-assistant/core/pull/54607 +[#54611]: https://github.com/home-assistant/core/pull/54611 +[#54613]: https://github.com/home-assistant/core/pull/54613 +[#54623]: https://github.com/home-assistant/core/pull/54623 +[#54624]: https://github.com/home-assistant/core/pull/54624 +[#54625]: https://github.com/home-assistant/core/pull/54625 +[#54630]: https://github.com/home-assistant/core/pull/54630 +[#54632]: https://github.com/home-assistant/core/pull/54632 +[#54637]: https://github.com/home-assistant/core/pull/54637 +[#54639]: https://github.com/home-assistant/core/pull/54639 +[#54644]: https://github.com/home-assistant/core/pull/54644 +[#54648]: https://github.com/home-assistant/core/pull/54648 +[#54649]: https://github.com/home-assistant/core/pull/54649 +[#54654]: https://github.com/home-assistant/core/pull/54654 +[#54661]: https://github.com/home-assistant/core/pull/54661 +[#54662]: https://github.com/home-assistant/core/pull/54662 +[#54664]: https://github.com/home-assistant/core/pull/54664 +[#54665]: https://github.com/home-assistant/core/pull/54665 +[#54666]: https://github.com/home-assistant/core/pull/54666 +[#54668]: https://github.com/home-assistant/core/pull/54668 +[#54669]: https://github.com/home-assistant/core/pull/54669 +[#54672]: https://github.com/home-assistant/core/pull/54672 +[#54673]: https://github.com/home-assistant/core/pull/54673 +[#54675]: https://github.com/home-assistant/core/pull/54675 +[#54677]: https://github.com/home-assistant/core/pull/54677 +[#54689]: https://github.com/home-assistant/core/pull/54689 +[#54690]: https://github.com/home-assistant/core/pull/54690 +[#54697]: https://github.com/home-assistant/core/pull/54697 +[#54698]: https://github.com/home-assistant/core/pull/54698 +[#54699]: https://github.com/home-assistant/core/pull/54699 +[#54700]: https://github.com/home-assistant/core/pull/54700 +[#54701]: https://github.com/home-assistant/core/pull/54701 +[#54702]: https://github.com/home-assistant/core/pull/54702 +[#54705]: https://github.com/home-assistant/core/pull/54705 +[#54709]: https://github.com/home-assistant/core/pull/54709 +[#54710]: https://github.com/home-assistant/core/pull/54710 +[#54711]: https://github.com/home-assistant/core/pull/54711 +[#54715]: https://github.com/home-assistant/core/pull/54715 +[#54717]: https://github.com/home-assistant/core/pull/54717 +[#54719]: https://github.com/home-assistant/core/pull/54719 +[#54720]: https://github.com/home-assistant/core/pull/54720 +[#54723]: https://github.com/home-assistant/core/pull/54723 +[#54724]: https://github.com/home-assistant/core/pull/54724 +[#54728]: https://github.com/home-assistant/core/pull/54728 +[#54729]: https://github.com/home-assistant/core/pull/54729 +[#54731]: https://github.com/home-assistant/core/pull/54731 +[#54732]: https://github.com/home-assistant/core/pull/54732 +[#54733]: https://github.com/home-assistant/core/pull/54733 +[#54738]: https://github.com/home-assistant/core/pull/54738 +[#54739]: https://github.com/home-assistant/core/pull/54739 +[#54741]: https://github.com/home-assistant/core/pull/54741 +[#54742]: https://github.com/home-assistant/core/pull/54742 +[#54743]: https://github.com/home-assistant/core/pull/54743 +[#54744]: https://github.com/home-assistant/core/pull/54744 +[#54746]: https://github.com/home-assistant/core/pull/54746 +[#54748]: https://github.com/home-assistant/core/pull/54748 +[#54749]: https://github.com/home-assistant/core/pull/54749 +[#54750]: https://github.com/home-assistant/core/pull/54750 +[#54751]: https://github.com/home-assistant/core/pull/54751 +[#54752]: https://github.com/home-assistant/core/pull/54752 +[#54753]: https://github.com/home-assistant/core/pull/54753 +[#54755]: https://github.com/home-assistant/core/pull/54755 +[#54758]: https://github.com/home-assistant/core/pull/54758 +[#54759]: https://github.com/home-assistant/core/pull/54759 +[#54761]: https://github.com/home-assistant/core/pull/54761 +[#54762]: https://github.com/home-assistant/core/pull/54762 +[#54764]: https://github.com/home-assistant/core/pull/54764 +[#54767]: https://github.com/home-assistant/core/pull/54767 +[#54768]: https://github.com/home-assistant/core/pull/54768 +[#54769]: https://github.com/home-assistant/core/pull/54769 +[#54773]: https://github.com/home-assistant/core/pull/54773 +[#54775]: https://github.com/home-assistant/core/pull/54775 +[#54776]: https://github.com/home-assistant/core/pull/54776 +[#54782]: https://github.com/home-assistant/core/pull/54782 +[#54783]: https://github.com/home-assistant/core/pull/54783 +[#54786]: https://github.com/home-assistant/core/pull/54786 +[#54787]: https://github.com/home-assistant/core/pull/54787 +[#54789]: https://github.com/home-assistant/core/pull/54789 +[#54791]: https://github.com/home-assistant/core/pull/54791 +[#54792]: https://github.com/home-assistant/core/pull/54792 +[#54794]: https://github.com/home-assistant/core/pull/54794 +[#54795]: https://github.com/home-assistant/core/pull/54795 +[#54797]: https://github.com/home-assistant/core/pull/54797 +[#54798]: https://github.com/home-assistant/core/pull/54798 +[#54799]: https://github.com/home-assistant/core/pull/54799 +[#54800]: https://github.com/home-assistant/core/pull/54800 +[#54801]: https://github.com/home-assistant/core/pull/54801 +[#54802]: https://github.com/home-assistant/core/pull/54802 +[#54803]: https://github.com/home-assistant/core/pull/54803 +[#54804]: https://github.com/home-assistant/core/pull/54804 +[#54806]: https://github.com/home-assistant/core/pull/54806 +[#54807]: https://github.com/home-assistant/core/pull/54807 +[#54808]: https://github.com/home-assistant/core/pull/54808 +[#54809]: https://github.com/home-assistant/core/pull/54809 +[#54810]: https://github.com/home-assistant/core/pull/54810 +[#54813]: https://github.com/home-assistant/core/pull/54813 +[#54814]: https://github.com/home-assistant/core/pull/54814 +[#54815]: https://github.com/home-assistant/core/pull/54815 +[#54817]: https://github.com/home-assistant/core/pull/54817 +[#54818]: https://github.com/home-assistant/core/pull/54818 +[#54821]: https://github.com/home-assistant/core/pull/54821 +[#54822]: https://github.com/home-assistant/core/pull/54822 +[#54824]: https://github.com/home-assistant/core/pull/54824 +[#54825]: https://github.com/home-assistant/core/pull/54825 +[#54827]: https://github.com/home-assistant/core/pull/54827 +[#54828]: https://github.com/home-assistant/core/pull/54828 +[#54830]: https://github.com/home-assistant/core/pull/54830 +[#54831]: https://github.com/home-assistant/core/pull/54831 +[#54832]: https://github.com/home-assistant/core/pull/54832 +[#54833]: https://github.com/home-assistant/core/pull/54833 +[#54834]: https://github.com/home-assistant/core/pull/54834 +[#54835]: https://github.com/home-assistant/core/pull/54835 +[#54836]: https://github.com/home-assistant/core/pull/54836 +[#54837]: https://github.com/home-assistant/core/pull/54837 +[#54838]: https://github.com/home-assistant/core/pull/54838 +[#54840]: https://github.com/home-assistant/core/pull/54840 +[#54841]: https://github.com/home-assistant/core/pull/54841 +[#54842]: https://github.com/home-assistant/core/pull/54842 +[#54844]: https://github.com/home-assistant/core/pull/54844 +[#54846]: https://github.com/home-assistant/core/pull/54846 +[#54847]: https://github.com/home-assistant/core/pull/54847 +[#54849]: https://github.com/home-assistant/core/pull/54849 +[#54850]: https://github.com/home-assistant/core/pull/54850 +[#54851]: https://github.com/home-assistant/core/pull/54851 +[#54852]: https://github.com/home-assistant/core/pull/54852 +[#54854]: https://github.com/home-assistant/core/pull/54854 +[#54855]: https://github.com/home-assistant/core/pull/54855 +[#54856]: https://github.com/home-assistant/core/pull/54856 +[#54858]: https://github.com/home-assistant/core/pull/54858 +[#54861]: https://github.com/home-assistant/core/pull/54861 +[#54862]: https://github.com/home-assistant/core/pull/54862 +[#54864]: https://github.com/home-assistant/core/pull/54864 +[#54865]: https://github.com/home-assistant/core/pull/54865 +[#54866]: https://github.com/home-assistant/core/pull/54866 +[#54867]: https://github.com/home-assistant/core/pull/54867 +[#54870]: https://github.com/home-assistant/core/pull/54870 +[#54871]: https://github.com/home-assistant/core/pull/54871 +[#54877]: https://github.com/home-assistant/core/pull/54877 +[#54880]: https://github.com/home-assistant/core/pull/54880 +[#54882]: https://github.com/home-assistant/core/pull/54882 +[#54883]: https://github.com/home-assistant/core/pull/54883 +[#54887]: https://github.com/home-assistant/core/pull/54887 +[#54891]: https://github.com/home-assistant/core/pull/54891 +[#54893]: https://github.com/home-assistant/core/pull/54893 +[#54896]: https://github.com/home-assistant/core/pull/54896 +[#54897]: https://github.com/home-assistant/core/pull/54897 +[#54903]: https://github.com/home-assistant/core/pull/54903 +[#54904]: https://github.com/home-assistant/core/pull/54904 +[#54905]: https://github.com/home-assistant/core/pull/54905 +[#54906]: https://github.com/home-assistant/core/pull/54906 +[#54907]: https://github.com/home-assistant/core/pull/54907 +[#54911]: https://github.com/home-assistant/core/pull/54911 +[#54913]: https://github.com/home-assistant/core/pull/54913 +[#54914]: https://github.com/home-assistant/core/pull/54914 +[#54915]: https://github.com/home-assistant/core/pull/54915 +[#54916]: https://github.com/home-assistant/core/pull/54916 +[#54918]: https://github.com/home-assistant/core/pull/54918 +[#54919]: https://github.com/home-assistant/core/pull/54919 +[#54920]: https://github.com/home-assistant/core/pull/54920 +[#54921]: https://github.com/home-assistant/core/pull/54921 +[#54922]: https://github.com/home-assistant/core/pull/54922 +[#54923]: https://github.com/home-assistant/core/pull/54923 +[#54924]: https://github.com/home-assistant/core/pull/54924 +[#54925]: https://github.com/home-assistant/core/pull/54925 +[#54926]: https://github.com/home-assistant/core/pull/54926 +[#54927]: https://github.com/home-assistant/core/pull/54927 +[#54928]: https://github.com/home-assistant/core/pull/54928 +[#54929]: https://github.com/home-assistant/core/pull/54929 +[#54930]: https://github.com/home-assistant/core/pull/54930 +[#54931]: https://github.com/home-assistant/core/pull/54931 +[#54933]: https://github.com/home-assistant/core/pull/54933 +[#54935]: https://github.com/home-assistant/core/pull/54935 +[#54936]: https://github.com/home-assistant/core/pull/54936 +[#54938]: https://github.com/home-assistant/core/pull/54938 +[#54940]: https://github.com/home-assistant/core/pull/54940 +[#54941]: https://github.com/home-assistant/core/pull/54941 +[#54942]: https://github.com/home-assistant/core/pull/54942 +[#54943]: https://github.com/home-assistant/core/pull/54943 +[#54944]: https://github.com/home-assistant/core/pull/54944 +[#54945]: https://github.com/home-assistant/core/pull/54945 +[#54950]: https://github.com/home-assistant/core/pull/54950 +[#54952]: https://github.com/home-assistant/core/pull/54952 +[#54953]: https://github.com/home-assistant/core/pull/54953 +[#54955]: https://github.com/home-assistant/core/pull/54955 +[#54956]: https://github.com/home-assistant/core/pull/54956 +[#54958]: https://github.com/home-assistant/core/pull/54958 +[#54962]: https://github.com/home-assistant/core/pull/54962 +[#54963]: https://github.com/home-assistant/core/pull/54963 +[#54967]: https://github.com/home-assistant/core/pull/54967 +[#54968]: https://github.com/home-assistant/core/pull/54968 +[#54970]: https://github.com/home-assistant/core/pull/54970 +[#54971]: https://github.com/home-assistant/core/pull/54971 +[#54974]: https://github.com/home-assistant/core/pull/54974 +[#54976]: https://github.com/home-assistant/core/pull/54976 +[#54977]: https://github.com/home-assistant/core/pull/54977 +[#54979]: https://github.com/home-assistant/core/pull/54979 +[#54980]: https://github.com/home-assistant/core/pull/54980 +[#54982]: https://github.com/home-assistant/core/pull/54982 +[#54986]: https://github.com/home-assistant/core/pull/54986 +[#54987]: https://github.com/home-assistant/core/pull/54987 +[#54988]: https://github.com/home-assistant/core/pull/54988 +[#54992]: https://github.com/home-assistant/core/pull/54992 +[#54993]: https://github.com/home-assistant/core/pull/54993 +[#54994]: https://github.com/home-assistant/core/pull/54994 +[#54995]: https://github.com/home-assistant/core/pull/54995 +[#54996]: https://github.com/home-assistant/core/pull/54996 +[#54997]: https://github.com/home-assistant/core/pull/54997 +[#54998]: https://github.com/home-assistant/core/pull/54998 +[#54999]: https://github.com/home-assistant/core/pull/54999 +[#55000]: https://github.com/home-assistant/core/pull/55000 +[#55001]: https://github.com/home-assistant/core/pull/55001 +[#55002]: https://github.com/home-assistant/core/pull/55002 +[#55003]: https://github.com/home-assistant/core/pull/55003 +[#55005]: https://github.com/home-assistant/core/pull/55005 +[#55006]: https://github.com/home-assistant/core/pull/55006 +[#55015]: https://github.com/home-assistant/core/pull/55015 +[#55018]: https://github.com/home-assistant/core/pull/55018 +[#55019]: https://github.com/home-assistant/core/pull/55019 +[#55020]: https://github.com/home-assistant/core/pull/55020 +[#55021]: https://github.com/home-assistant/core/pull/55021 +[#55022]: https://github.com/home-assistant/core/pull/55022 +[#55023]: https://github.com/home-assistant/core/pull/55023 +[#55027]: https://github.com/home-assistant/core/pull/55027 +[#55032]: https://github.com/home-assistant/core/pull/55032 +[#55033]: https://github.com/home-assistant/core/pull/55033 +[#55034]: https://github.com/home-assistant/core/pull/55034 +[#55036]: https://github.com/home-assistant/core/pull/55036 +[#55037]: https://github.com/home-assistant/core/pull/55037 +[#55038]: https://github.com/home-assistant/core/pull/55038 +[#55039]: https://github.com/home-assistant/core/pull/55039 +[#55040]: https://github.com/home-assistant/core/pull/55040 +[#55042]: https://github.com/home-assistant/core/pull/55042 +[#55045]: https://github.com/home-assistant/core/pull/55045 +[#55047]: https://github.com/home-assistant/core/pull/55047 +[#55049]: https://github.com/home-assistant/core/pull/55049 +[#55050]: https://github.com/home-assistant/core/pull/55050 +[#55051]: https://github.com/home-assistant/core/pull/55051 +[#55053]: https://github.com/home-assistant/core/pull/55053 +[#55054]: https://github.com/home-assistant/core/pull/55054 +[#55055]: https://github.com/home-assistant/core/pull/55055 +[#55056]: https://github.com/home-assistant/core/pull/55056 +[#55057]: https://github.com/home-assistant/core/pull/55057 +[#55058]: https://github.com/home-assistant/core/pull/55058 +[#55059]: https://github.com/home-assistant/core/pull/55059 +[#55063]: https://github.com/home-assistant/core/pull/55063 +[#55064]: https://github.com/home-assistant/core/pull/55064 +[#55065]: https://github.com/home-assistant/core/pull/55065 +[#55066]: https://github.com/home-assistant/core/pull/55066 +[#55067]: https://github.com/home-assistant/core/pull/55067 +[#55068]: https://github.com/home-assistant/core/pull/55068 +[#55069]: https://github.com/home-assistant/core/pull/55069 +[#55070]: https://github.com/home-assistant/core/pull/55070 +[#55071]: https://github.com/home-assistant/core/pull/55071 +[#55075]: https://github.com/home-assistant/core/pull/55075 +[#55077]: https://github.com/home-assistant/core/pull/55077 +[#55079]: https://github.com/home-assistant/core/pull/55079 +[#55082]: https://github.com/home-assistant/core/pull/55082 +[#55084]: https://github.com/home-assistant/core/pull/55084 +[#55085]: https://github.com/home-assistant/core/pull/55085 +[#55086]: https://github.com/home-assistant/core/pull/55086 +[#55087]: https://github.com/home-assistant/core/pull/55087 +[#55088]: https://github.com/home-assistant/core/pull/55088 +[#55089]: https://github.com/home-assistant/core/pull/55089 +[#55091]: https://github.com/home-assistant/core/pull/55091 +[#55092]: https://github.com/home-assistant/core/pull/55092 +[#55093]: https://github.com/home-assistant/core/pull/55093 +[#55094]: https://github.com/home-assistant/core/pull/55094 +[#55096]: https://github.com/home-assistant/core/pull/55096 +[#55099]: https://github.com/home-assistant/core/pull/55099 +[#55102]: https://github.com/home-assistant/core/pull/55102 +[#55106]: https://github.com/home-assistant/core/pull/55106 +[#55108]: https://github.com/home-assistant/core/pull/55108 +[#55109]: https://github.com/home-assistant/core/pull/55109 +[#55110]: https://github.com/home-assistant/core/pull/55110 +[#55111]: https://github.com/home-assistant/core/pull/55111 +[#55114]: https://github.com/home-assistant/core/pull/55114 +[#55115]: https://github.com/home-assistant/core/pull/55115 +[#55118]: https://github.com/home-assistant/core/pull/55118 +[#55119]: https://github.com/home-assistant/core/pull/55119 +[#55120]: https://github.com/home-assistant/core/pull/55120 +[#55121]: https://github.com/home-assistant/core/pull/55121 +[#55124]: https://github.com/home-assistant/core/pull/55124 +[#55125]: https://github.com/home-assistant/core/pull/55125 +[#55126]: https://github.com/home-assistant/core/pull/55126 +[#55127]: https://github.com/home-assistant/core/pull/55127 +[#55128]: https://github.com/home-assistant/core/pull/55128 +[#55129]: https://github.com/home-assistant/core/pull/55129 +[#55131]: https://github.com/home-assistant/core/pull/55131 +[#55134]: https://github.com/home-assistant/core/pull/55134 +[#55136]: https://github.com/home-assistant/core/pull/55136 +[#55137]: https://github.com/home-assistant/core/pull/55137 +[#55139]: https://github.com/home-assistant/core/pull/55139 +[#55140]: https://github.com/home-assistant/core/pull/55140 +[#55141]: https://github.com/home-assistant/core/pull/55141 +[#55143]: https://github.com/home-assistant/core/pull/55143 +[#55145]: https://github.com/home-assistant/core/pull/55145 +[#55147]: https://github.com/home-assistant/core/pull/55147 +[#55148]: https://github.com/home-assistant/core/pull/55148 +[#55149]: https://github.com/home-assistant/core/pull/55149 +[#55153]: https://github.com/home-assistant/core/pull/55153 +[#55154]: https://github.com/home-assistant/core/pull/55154 +[#55157]: https://github.com/home-assistant/core/pull/55157 +[#55158]: https://github.com/home-assistant/core/pull/55158 +[#55159]: https://github.com/home-assistant/core/pull/55159 +[#55161]: https://github.com/home-assistant/core/pull/55161 +[#55162]: https://github.com/home-assistant/core/pull/55162 +[#55163]: https://github.com/home-assistant/core/pull/55163 +[#55164]: https://github.com/home-assistant/core/pull/55164 +[#55165]: https://github.com/home-assistant/core/pull/55165 +[#55166]: https://github.com/home-assistant/core/pull/55166 +[#55169]: https://github.com/home-assistant/core/pull/55169 +[#55175]: https://github.com/home-assistant/core/pull/55175 +[#55177]: https://github.com/home-assistant/core/pull/55177 +[#55180]: https://github.com/home-assistant/core/pull/55180 +[#55181]: https://github.com/home-assistant/core/pull/55181 +[#55183]: https://github.com/home-assistant/core/pull/55183 +[#55184]: https://github.com/home-assistant/core/pull/55184 +[#55185]: https://github.com/home-assistant/core/pull/55185 +[#55186]: https://github.com/home-assistant/core/pull/55186 +[#55187]: https://github.com/home-assistant/core/pull/55187 +[#55188]: https://github.com/home-assistant/core/pull/55188 +[#55189]: https://github.com/home-assistant/core/pull/55189 +[#55193]: https://github.com/home-assistant/core/pull/55193 +[#55194]: https://github.com/home-assistant/core/pull/55194 +[#55195]: https://github.com/home-assistant/core/pull/55195 +[#55196]: https://github.com/home-assistant/core/pull/55196 +[#55197]: https://github.com/home-assistant/core/pull/55197 +[#55199]: https://github.com/home-assistant/core/pull/55199 +[#55201]: https://github.com/home-assistant/core/pull/55201 +[#55202]: https://github.com/home-assistant/core/pull/55202 +[#55203]: https://github.com/home-assistant/core/pull/55203 +[#55204]: https://github.com/home-assistant/core/pull/55204 +[#55205]: https://github.com/home-assistant/core/pull/55205 +[#55208]: https://github.com/home-assistant/core/pull/55208 +[#55209]: https://github.com/home-assistant/core/pull/55209 +[#55210]: https://github.com/home-assistant/core/pull/55210 +[#55211]: https://github.com/home-assistant/core/pull/55211 +[#55213]: https://github.com/home-assistant/core/pull/55213 +[#55214]: https://github.com/home-assistant/core/pull/55214 +[#55215]: https://github.com/home-assistant/core/pull/55215 +[#55217]: https://github.com/home-assistant/core/pull/55217 +[#55219]: https://github.com/home-assistant/core/pull/55219 +[#55221]: https://github.com/home-assistant/core/pull/55221 +[#55231]: https://github.com/home-assistant/core/pull/55231 +[#55235]: https://github.com/home-assistant/core/pull/55235 +[#55236]: https://github.com/home-assistant/core/pull/55236 +[#55238]: https://github.com/home-assistant/core/pull/55238 +[#55239]: https://github.com/home-assistant/core/pull/55239 +[#55242]: https://github.com/home-assistant/core/pull/55242 +[#55245]: https://github.com/home-assistant/core/pull/55245 +[#55248]: https://github.com/home-assistant/core/pull/55248 +[#55249]: https://github.com/home-assistant/core/pull/55249 +[#55250]: https://github.com/home-assistant/core/pull/55250 +[#55251]: https://github.com/home-assistant/core/pull/55251 +[#55269]: https://github.com/home-assistant/core/pull/55269 +[#55271]: https://github.com/home-assistant/core/pull/55271 +[#55278]: https://github.com/home-assistant/core/pull/55278 +[#55279]: https://github.com/home-assistant/core/pull/55279 +[#55280]: https://github.com/home-assistant/core/pull/55280 +[#55281]: https://github.com/home-assistant/core/pull/55281 +[#55282]: https://github.com/home-assistant/core/pull/55282 +[#55286]: https://github.com/home-assistant/core/pull/55286 +[#55294]: https://github.com/home-assistant/core/pull/55294 +[#55297]: https://github.com/home-assistant/core/pull/55297 +[#55299]: https://github.com/home-assistant/core/pull/55299 +[#55300]: https://github.com/home-assistant/core/pull/55300 +[#55306]: https://github.com/home-assistant/core/pull/55306 +[#55308]: https://github.com/home-assistant/core/pull/55308 +[#55309]: https://github.com/home-assistant/core/pull/55309 +[#55316]: https://github.com/home-assistant/core/pull/55316 +[#55318]: https://github.com/home-assistant/core/pull/55318 +[#55329]: https://github.com/home-assistant/core/pull/55329 +[#55333]: https://github.com/home-assistant/core/pull/55333 +[#55336]: https://github.com/home-assistant/core/pull/55336 +[#55341]: https://github.com/home-assistant/core/pull/55341 +[#55342]: https://github.com/home-assistant/core/pull/55342 +[#55343]: https://github.com/home-assistant/core/pull/55343 +[#55344]: https://github.com/home-assistant/core/pull/55344 +[#55345]: https://github.com/home-assistant/core/pull/55345 +[#55348]: https://github.com/home-assistant/core/pull/55348 +[#55349]: https://github.com/home-assistant/core/pull/55349 +[#55359]: https://github.com/home-assistant/core/pull/55359 +[#55360]: https://github.com/home-assistant/core/pull/55360 +[#55363]: https://github.com/home-assistant/core/pull/55363 +[#55364]: https://github.com/home-assistant/core/pull/55364 +[#55368]: https://github.com/home-assistant/core/pull/55368 +[#55371]: https://github.com/home-assistant/core/pull/55371 +[#55379]: https://github.com/home-assistant/core/pull/55379 +[#55385]: https://github.com/home-assistant/core/pull/55385 +[#55391]: https://github.com/home-assistant/core/pull/55391 +[#55409]: https://github.com/home-assistant/core/pull/55409 +[#55424]: https://github.com/home-assistant/core/pull/55424 +[#55425]: https://github.com/home-assistant/core/pull/55425 +[#55430]: https://github.com/home-assistant/core/pull/55430 +[#55432]: https://github.com/home-assistant/core/pull/55432 +[#55434]: https://github.com/home-assistant/core/pull/55434 +[#55436]: https://github.com/home-assistant/core/pull/55436 +[#55438]: https://github.com/home-assistant/core/pull/55438 +[#55441]: https://github.com/home-assistant/core/pull/55441 +[#55447]: https://github.com/home-assistant/core/pull/55447 +[#55457]: https://github.com/home-assistant/core/pull/55457 +[#55459]: https://github.com/home-assistant/core/pull/55459 +[#55460]: https://github.com/home-assistant/core/pull/55460 +[#55463]: https://github.com/home-assistant/core/pull/55463 +[#55464]: https://github.com/home-assistant/core/pull/55464 +[#55466]: https://github.com/home-assistant/core/pull/55466 +[#55468]: https://github.com/home-assistant/core/pull/55468 +[#55470]: https://github.com/home-assistant/core/pull/55470 +[#55472]: https://github.com/home-assistant/core/pull/55472 +[#55473]: https://github.com/home-assistant/core/pull/55473 +[#55477]: https://github.com/home-assistant/core/pull/55477 +[#55480]: https://github.com/home-assistant/core/pull/55480 +[#55483]: https://github.com/home-assistant/core/pull/55483 +[#55490]: https://github.com/home-assistant/core/pull/55490 +[#55492]: https://github.com/home-assistant/core/pull/55492 +[#55493]: https://github.com/home-assistant/core/pull/55493 +[#55498]: https://github.com/home-assistant/core/pull/55498 +[#55502]: https://github.com/home-assistant/core/pull/55502 +[#55504]: https://github.com/home-assistant/core/pull/55504 +[#55505]: https://github.com/home-assistant/core/pull/55505 +[#55508]: https://github.com/home-assistant/core/pull/55508 +[#55497]: https://github.com/home-assistant/core/pull/55497 +[#55206]: https://github.com/home-assistant/core/pull/55206 +[#55510]: https://github.com/home-assistant/core/pull/55510 +[@AaronDavidSchneider]: https://github.com/AaronDavidSchneider +[@Adminiuga]: https://github.com/Adminiuga +[@Bert-R]: https://github.com/Bert-R +[@Bre77]: https://github.com/Bre77 +[@DCSBL]: https://github.com/DCSBL +[@Danielhiversen]: https://github.com/Danielhiversen +[@Ernst79]: https://github.com/Ernst79 +[@GrumpyMeow]: https://github.com/GrumpyMeow +[@GuyKh]: https://github.com/GuyKh +[@Hyralex]: https://github.com/Hyralex +[@JasperPlant]: https://github.com/JasperPlant +[@JasperS2307]: https://github.com/JasperS2307 +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@JonasPed]: https://github.com/JonasPed +[@Kane610]: https://github.com/Kane610 +[@LonePurpleWolf]: https://github.com/LonePurpleWolf +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@OttoWinter]: https://github.com/OttoWinter +[@Schmidsfeld]: https://github.com/Schmidsfeld +[@Shutgun]: https://github.com/Shutgun +[@SmaginPV]: https://github.com/SmaginPV +[@StevenLooman]: https://github.com/StevenLooman +[@TastyPi]: https://github.com/TastyPi +[@TheJulianJES]: https://github.com/TheJulianJES +[@TheZoker]: https://github.com/TheZoker +[@Tigger2014]: https://github.com/Tigger2014 +[@TomBrien]: https://github.com/TomBrien +[@ViViDboarder]: https://github.com/ViViDboarder +[@adamjernst]: https://github.com/adamjernst +[@allenporter]: https://github.com/allenporter +[@amelchio]: https://github.com/amelchio +[@andre-richter]: https://github.com/andre-richter +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bnordli]: https://github.com/bnordli +[@bogdal]: https://github.com/bogdal +[@bramkragten]: https://github.com/bramkragten +[@brianegge]: https://github.com/brianegge +[@bsmappee]: https://github.com/bsmappee +[@carstenschroeder]: https://github.com/carstenschroeder +[@cdce8p]: https://github.com/cdce8p +[@cdheiser]: https://github.com/cdheiser +[@cgtobi]: https://github.com/cgtobi +[@chemelli74]: https://github.com/chemelli74 +[@cnico]: https://github.com/cnico +[@cpw]: https://github.com/cpw +[@crkochan]: https://github.com/crkochan +[@ctalkington]: https://github.com/ctalkington +[@danielperna84]: https://github.com/danielperna84 +[@deiger]: https://github.com/deiger +[@denismilanovic]: https://github.com/denismilanovic +[@dependabot[bot]]: https://github.com/apps/dependabot +[@dermotduffy]: https://github.com/dermotduffy +[@dgomes]: https://github.com/dgomes +[@ehendrix23]: https://github.com/ehendrix23 +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@esev]: https://github.com/esev +[@farmio]: https://github.com/farmio +[@felipediel]: https://github.com/felipediel +[@firstof9]: https://github.com/firstof9 +[@flacjacket]: https://github.com/flacjacket +[@frenck]: https://github.com/frenck +[@gianklug]: https://github.com/gianklug +[@giannello]: https://github.com/giannello +[@gjong]: https://github.com/gjong +[@gtdiehl]: https://github.com/gtdiehl +[@hunterjm]: https://github.com/hunterjm +[@janiversen]: https://github.com/janiversen +[@janjurca]: https://github.com/janjurca +[@jbouwh]: https://github.com/jbouwh +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@jorgror]: https://github.com/jorgror +[@jshank]: https://github.com/jshank +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@ludeeus]: https://github.com/ludeeus +[@lukewaite]: https://github.com/lukewaite +[@maschel]: https://github.com/maschel +[@mdz]: https://github.com/mdz +[@meyerrj]: https://github.com/meyerrj +[@mib1185]: https://github.com/mib1185 +[@micha91]: https://github.com/micha91 +[@milanmeu]: https://github.com/milanmeu +[@mjg59]: https://github.com/mjg59 +[@mkrasowski]: https://github.com/mkrasowski +[@mplemay]: https://github.com/mplemay +[@muchtall]: https://github.com/muchtall +[@muppet3000]: https://github.com/muppet3000 +[@natekspencer]: https://github.com/natekspencer +[@nickovs]: https://github.com/nickovs +[@nickstamat]: https://github.com/nickstamat +[@nielstron]: https://github.com/nielstron +[@ollo69]: https://github.com/ollo69 +[@oxan]: https://github.com/oxan +[@pdcemulator]: https://github.com/pdcemulator +[@posixx]: https://github.com/posixx +[@ppetru]: https://github.com/ppetru +[@prwood80]: https://github.com/prwood80 +[@pszafer]: https://github.com/pszafer +[@pvizeli]: https://github.com/pvizeli +[@r-t-s]: https://github.com/r-t-s +[@rajlaud]: https://github.com/rajlaud +[@raman325]: https://github.com/raman325 +[@rdfurman]: https://github.com/rdfurman +[@realPy]: https://github.com/realPy +[@rikroe]: https://github.com/rikroe +[@rjulius23]: https://github.com/rjulius23 +[@rutkai]: https://github.com/rutkai +[@rytilahti]: https://github.com/rytilahti +[@samueltardieu]: https://github.com/samueltardieu +[@scop]: https://github.com/scop +[@serenewaffles]: https://github.com/serenewaffles +[@slovdahl]: https://github.com/slovdahl +[@squishykid]: https://github.com/squishykid +[@starkillerOG]: https://github.com/starkillerOG +[@thomasloven]: https://github.com/thomasloven +[@timmo001]: https://github.com/timmo001 +[@tkdrob]: https://github.com/tkdrob +[@uvjustin]: https://github.com/uvjustin +[@yuvalabou]: https://github.com/yuvalabou +[@zhulik]: https://github.com/zhulik +[@zoeisnowooze]: https://github.com/zoeisnowooze +[abode docs]: /integrations/abode/ +[actiontec docs]: /integrations/actiontec/ +[adax docs]: /integrations/adax/ +[adguard docs]: /integrations/adguard/ +[advantage_air docs]: /integrations/advantage_air/ +[aemet docs]: /integrations/aemet/ +[airly docs]: /integrations/airly/ +[airtouch4 docs]: /integrations/airtouch4/ +[airvisual docs]: /integrations/airvisual/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[analytics docs]: /integrations/analytics/ +[anthemav docs]: /integrations/anthemav/ +[api docs]: /integrations/api/ +[apprise docs]: /integrations/apprise/ +[arest docs]: /integrations/arest/ +[arlo docs]: /integrations/arlo/ +[asuswrt docs]: /integrations/asuswrt/ +[atag docs]: /integrations/atag/ +[atome docs]: /integrations/atome/ +[august docs]: /integrations/august/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[bbox docs]: /integrations/bbox/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bitcoin docs]: /integrations/bitcoin/ +[blink docs]: /integrations/blink/ +[bme280 docs]: /integrations/bme280/ +[bme680 docs]: /integrations/bme680/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[broadlink docs]: /integrations/broadlink/ +[buienradar docs]: /integrations/buienradar/ +[camera docs]: /integrations/camera/ +[cloudflare docs]: /integrations/cloudflare/ +[coinbase docs]: /integrations/coinbase/ +[comed_hourly_pricing docs]: /integrations/comed_hourly_pricing/ +[config docs]: /integrations/config/ +[danfoss_air docs]: /integrations/danfoss_air/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[deluge docs]: /integrations/deluge/ +[demo docs]: /integrations/demo/ +[device_automation docs]: /integrations/device_automation/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[dht docs]: /integrations/dht/ +[directv docs]: /integrations/directv/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dovado docs]: /integrations/dovado/ +[dsmr docs]: /integrations/dsmr/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[ecobee docs]: /integrations/ecobee/ +[edl21 docs]: /integrations/edl21/ +[emoncms docs]: /integrations/emoncms/ +[emonitor docs]: /integrations/emonitor/ +[emulated_kasa docs]: /integrations/emulated_kasa/ +[energy docs]: /integrations/energy/ +[enocean docs]: /integrations/enocean/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[envirophat docs]: /integrations/envirophat/ +[epson docs]: /integrations/epson/ +[esphome docs]: /integrations/esphome/ +[fido docs]: /integrations/fido/ +[filter docs]: /integrations/filter/ +[fints docs]: /integrations/fints/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flexit docs]: /integrations/flexit/ +[flipr docs]: /integrations/flipr/ +[flunearyou docs]: /integrations/flunearyou/ +[folder_watcher docs]: /integrations/folder_watcher/ +[foobot docs]: /integrations/foobot/ +[forecast_solar docs]: /integrations/forecast_solar/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[gc100 docs]: /integrations/gc100/ +[gios docs]: /integrations/gios/ +[github docs]: /integrations/github/ +[goalzero docs]: /integrations/goalzero/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_maps docs]: /integrations/google_maps/ +[google_pubsub docs]: /integrations/google_pubsub/ +[google_wifi docs]: /integrations/google_wifi/ +[group docs]: /integrations/group/ +[growatt_server docs]: /integrations/growatt_server/ +[gtfs docs]: /integrations/gtfs/ +[guardian docs]: /integrations/guardian/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[history docs]: /integrations/history/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[honeywell docs]: /integrations/honeywell/ +[http docs]: /integrations/http/ +[htu21d docs]: /integrations/htu21d/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[image_processing docs]: /integrations/image_processing/ +[integration docs]: /integrations/integration/ +[ios docs]: /integrations/ios/ +[iotawatt docs]: /integrations/iotawatt/ +[ipp docs]: /integrations/ipp/ +[iqvia docs]: /integrations/iqvia/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[juicenet docs]: /integrations/juicenet/ +[keba docs]: /integrations/keba/ +[knx docs]: /integrations/knx/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[launch_library docs]: /integrations/launch_library/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[litterrobot docs]: /integrations/litterrobot/ +[logi_circle docs]: /integrations/logi_circle/ +[lutron docs]: /integrations/lutron/ +[lyric docs]: /integrations/lyric/ +[magicseaweed docs]: /integrations/magicseaweed/ +[manual_mqtt docs]: /integrations/manual_mqtt/ +[marytts docs]: /integrations/marytts/ +[matrix docs]: /integrations/matrix/ +[melcloud docs]: /integrations/melcloud/ +[mhz19 docs]: /integrations/mhz19/ +[miflora docs]: /integrations/miflora/ +[mill docs]: /integrations/mill/ +[mitemp_bt docs]: /integrations/mitemp_bt/ +[modbus docs]: /integrations/modbus/ +[motioneye docs]: /integrations/motioneye/ +[mqtt docs]: /integrations/mqtt/ +[myq docs]: /integrations/myq/ +[mysensors docs]: /integrations/mysensors/ +[nam docs]: /integrations/nam/ +[nanoleaf docs]: /integrations/nanoleaf/ +[neato docs]: /integrations/neato/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netio docs]: /integrations/netio/ +[network docs]: /integrations/network/ +[nextbus docs]: /integrations/nextbus/ +[nmap_tracker docs]: /integrations/nmap_tracker/ +[norway_air docs]: /integrations/norway_air/ +[notion docs]: /integrations/notion/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nzbget docs]: /integrations/nzbget/ +[ombi docs]: /integrations/ombi/ +[onewire docs]: /integrations/onewire/ +[onvif docs]: /integrations/onvif/ +[openevse docs]: /integrations/openevse/ +[openuv docs]: /integrations/openuv/ +[ovo_energy docs]: /integrations/ovo_energy/ +[p1_monitor docs]: /integrations/p1_monitor/ +[panasonic_viera docs]: /integrations/panasonic_viera/ +[philips_js docs]: /integrations/philips_js/ +[pi_hole docs]: /integrations/pi_hole/ +[pilight docs]: /integrations/pilight/ +[plex docs]: /integrations/plex/ +[point docs]: /integrations/point/ +[powerwall docs]: /integrations/powerwall/ +[prometheus docs]: /integrations/prometheus/ +[prosegur docs]: /integrations/prosegur/ +[proxmoxve docs]: /integrations/proxmoxve/ +[pushbullet docs]: /integrations/pushbullet/ +[pvoutput docs]: /integrations/pvoutput/ +[python_script docs]: /integrations/python_script/ +[qbittorrent docs]: /integrations/qbittorrent/ +[qnap docs]: /integrations/qnap/ +[rachio docs]: /integrations/rachio/ +[radarr docs]: /integrations/radarr/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[rainmachine docs]: /integrations/rainmachine/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[reddit docs]: /integrations/reddit/ +[renault docs]: /integrations/renault/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ring docs]: /integrations/ring/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roomba docs]: /integrations/roomba/ +[rtorrent docs]: /integrations/rtorrent/ +[sabnzbd docs]: /integrations/sabnzbd/ +[saj docs]: /integrations/saj/ +[script docs]: /integrations/script/ +[select docs]: /integrations/select/ +[sense docs]: /integrations/sense/ +[sensehat docs]: /integrations/sensehat/ +[sensor docs]: /integrations/sensor/ +[sesame docs]: /integrations/sesame/ +[shelly docs]: /integrations/shelly/ +[shopping_list docs]: /integrations/shopping_list/ +[sht31 docs]: /integrations/sht31/ +[simplisafe docs]: /integrations/simplisafe/ +[siren docs]: /integrations/siren/ +[sma docs]: /integrations/sma/ +[smappee docs]: /integrations/smappee/ +[smart_meter_texas docs]: /integrations/smart_meter_texas/ +[smartthings docs]: /integrations/smartthings/ +[smarty docs]: /integrations/smarty/ +[sms docs]: /integrations/sms/ +[solaredge docs]: /integrations/solaredge/ +[solaredge_local docs]: /integrations/solaredge_local/ +[solarlog docs]: /integrations/solarlog/ +[solax docs]: /integrations/solax/ +[sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spider docs]: /integrations/spider/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[startca docs]: /integrations/startca/ +[stream docs]: /integrations/stream/ +[surepetcare docs]: /integrations/surepetcare/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[syncthru docs]: /integrations/syncthru/ +[synology_dsm docs]: /integrations/synology_dsm/ +[synology_srm docs]: /integrations/synology_srm/ +[system_bridge docs]: /integrations/system_bridge/ +[tado docs]: /integrations/tado/ +[tasmota docs]: /integrations/tasmota/ +[tautulli docs]: /integrations/tautulli/ +[temper docs]: /integrations/temper/ +[template docs]: /integrations/template/ +[thinkingcleaner docs]: /integrations/thinkingcleaner/ +[tibber docs]: /integrations/tibber/ +[timer docs]: /integrations/timer/ +[todoist docs]: /integrations/todoist/ +[toon docs]: /integrations/toon/ +[tplink docs]: /integrations/tplink/ +[traccar docs]: /integrations/traccar/ +[tractive docs]: /integrations/tractive/ +[tradfri docs]: /integrations/tradfri/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[transmission docs]: /integrations/transmission/ +[travisci docs]: /integrations/travisci/ +[tuya docs]: /integrations/tuya/ +[universal docs]: /integrations/universal/ +[upcloud docs]: /integrations/upcloud/ +[updater docs]: /integrations/updater/ +[upnp docs]: /integrations/upnp/ +[uptimerobot docs]: /integrations/uptimerobot/ +[usb docs]: /integrations/usb/ +[utility_meter docs]: /integrations/utility_meter/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[version docs]: /integrations/version/ +[volkszaehler docs]: /integrations/volkszaehler/ +[volumio docs]: /integrations/volumio/ +[watson_tts docs]: /integrations/watson_tts/ +[webostv docs]: /integrations/webostv/ +[wemo docs]: /integrations/wemo/ +[wink docs]: /integrations/wink/ +[wirelesstag docs]: /integrations/wirelesstag/ +[withings docs]: /integrations/withings/ +[wolflink docs]: /integrations/wolflink/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yeelight docs]: /integrations/yeelight/ +[youless docs]: /integrations/youless/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ \ No newline at end of file diff --git a/source/images/blog/2021-09/energy-battery.gif b/source/images/blog/2021-09/energy-battery.gif new file mode 100644 index 00000000000..789b766e7c7 Binary files /dev/null and b/source/images/blog/2021-09/energy-battery.gif differ diff --git a/source/images/blog/2021-09/energy-gas.png b/source/images/blog/2021-09/energy-gas.png new file mode 100644 index 00000000000..ea98cce03dd Binary files /dev/null and b/source/images/blog/2021-09/energy-gas.png differ diff --git a/source/images/blog/2021-09/energy-month.png b/source/images/blog/2021-09/energy-month.png new file mode 100644 index 00000000000..63dfff2e2d2 Binary files /dev/null and b/source/images/blog/2021-09/energy-month.png differ diff --git a/source/images/blog/2021-09/social.png b/source/images/blog/2021-09/social.png new file mode 100644 index 00000000000..b1e6a6af74a Binary files /dev/null and b/source/images/blog/2021-09/social.png differ diff --git a/source/images/blog/2021-09/statistics-for-all.png b/source/images/blog/2021-09/statistics-for-all.png new file mode 100644 index 00000000000..3a5a29d9d09 Binary files /dev/null and b/source/images/blog/2021-09/statistics-for-all.png differ diff --git a/source/images/blog/2021-09/usb-zwavejs.png b/source/images/blog/2021-09/usb-zwavejs.png new file mode 100644 index 00000000000..a1464a0be3e Binary files /dev/null and b/source/images/blog/2021-09/usb-zwavejs.png differ diff --git a/source/images/energy/hero.jpg b/source/images/energy/hero.jpg index 4fd474cefb2..f6659188299 100644 Binary files a/source/images/energy/hero.jpg and b/source/images/energy/hero.jpg differ diff --git a/source/images/integrations/tractive/device_tracker.png b/source/images/integrations/tractive/device_tracker.png new file mode 100644 index 00000000000..6ee371425da Binary files /dev/null and b/source/images/integrations/tractive/device_tracker.png differ