diff --git a/.textlintrc.json b/.textlintrc.json index aaf0c0dcc69..6476a18fd0f 100644 --- a/.textlintrc.json +++ b/.textlintrc.json @@ -271,7 +271,6 @@ "Vultr", "WebDAV", "WeMo", - "Wink", "WLED", "WWLLN", "Xiaomi", diff --git a/CODEOWNERS b/CODEOWNERS index 83b0b3c047c..eedc7d89a3b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -65,10 +65,10 @@ source/_integrations/blink.markdown @fronzbot source/_integrations/blueprint.markdown @home-assistant/core source/_integrations/bmp280.markdown @belidzs source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe -source/_integrations/bond.markdown @prystupa @joshs85 +source/_integrations/bond.markdown @bdraco @prystupa @joshs85 source/_integrations/bosch_shc.markdown @tschamm source/_integrations/braviatv.markdown @bieniu @Drafteed -source/_integrations/broadlink.markdown @danielhiversen @felipediel +source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am source/_integrations/brother.markdown @bieniu source/_integrations/brunt.markdown @eavanvalkenburg source/_integrations/bsblan.markdown @liudger @@ -104,7 +104,7 @@ source/_integrations/debugpy.markdown @frenck source/_integrations/deconz.markdown @Kane610 source/_integrations/delijn.markdown @bollewolle @Emilv2 source/_integrations/demo.markdown @home-assistant/core -source/_integrations/denonavr.markdown @scarface-4711 @starkillerOG +source/_integrations/denonavr.markdown @ol-iver @starkillerOG source/_integrations/derivative.markdown @afaucogney source/_integrations/device_automation.markdown @home-assistant/core source/_integrations/devolo_home_control.markdown @2Fake @Shutgun @@ -127,7 +127,7 @@ source/_integrations/ecovacs.markdown @OverloadUT source/_integrations/edl21.markdown @mtdcr source/_integrations/efergy.markdown @tkdrob source/_integrations/egardia.markdown @jeroenterheerdt -source/_integrations/eight_sleep.markdown @mezz64 +source/_integrations/eight_sleep.markdown @mezz64 @raman325 source/_integrations/elgato.markdown @frenck source/_integrations/elkm1.markdown @gwww @bdraco source/_integrations/elv.markdown @majuss @@ -139,13 +139,12 @@ source/_integrations/enigma2.markdown @fbradyirl source/_integrations/enocean.markdown @bdurrer source/_integrations/enphase_envoy.markdown @gtdiehl source/_integrations/entur_public_transport.markdown @hfurubotten -source/_integrations/environment_canada.markdown @michaeldavie +source/_integrations/environment_canada.markdown @gwww @michaeldavie source/_integrations/ephember.markdown @ttroy50 source/_integrations/epson.markdown @pszafer source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/eq3btsmart.markdown @rytilahti source/_integrations/esphome.markdown @OttoWinter @jesserockz -source/_integrations/essent.markdown @TheLastProject source/_integrations/evohome.markdown @zxdavb source/_integrations/ezviz.markdown @RenierM26 @baqs source/_integrations/faa_delays.markdown @ntilley905 @@ -162,6 +161,7 @@ source/_integrations/flo.markdown @dmulcahey source/_integrations/flock.markdown @fabaff source/_integrations/flume.markdown @ChrisMandich @bdraco source/_integrations/flunearyou.markdown @bachya +source/_integrations/flux_led.markdown @icemanch source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck source/_integrations/forked_daapd.markdown @uvjustin source/_integrations/fortios.markdown @kimfrellsen @@ -169,7 +169,7 @@ source/_integrations/foscam.markdown @skgsergio source/_integrations/freebox.markdown @hacf-fr @Quentame source/_integrations/freedompro.markdown @stefano055415 source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 -source/_integrations/fritzbox.markdown @mib1185 +source/_integrations/fritzbox.markdown @mib1185 @flabbamann source/_integrations/fronius.markdown @nielstron source/_integrations/frontend.markdown @home-assistant/frontend source/_integrations/garages_amsterdam.markdown @klaasnicolaas @@ -196,6 +196,7 @@ source/_integrations/growatt_server.markdown @indykoning @muppet3000 @JasperPlan source/_integrations/guardian.markdown @bachya source/_integrations/habitica.markdown @ASMfreaK @leikoilja source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan +source/_integrations/hassio.markdown @home-assistant/supervisor source/_integrations/heatmiser.markdown @andylockran source/_integrations/heos.markdown @andrewsayre source/_integrations/here_travel_time.markdown @eifinger @@ -214,9 +215,8 @@ source/_integrations/homematic.markdown @pvizeli @danielperna84 source/_integrations/honeywell.markdown @rdfurman source/_integrations/http.markdown @home-assistant/core source/_integrations/huawei_lte.markdown @scop @fphammerle -source/_integrations/huawei_router.markdown @abmantis source/_integrations/hue.markdown @balloob @frenck -source/_integrations/huisbaasje.markdown @denniss17 +source/_integrations/huisbaasje.markdown @dennisschroer source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka source/_integrations/hunterdouglas_powerview.markdown @bdraco source/_integrations/hvv_departures.markdown @vigonotion @@ -272,6 +272,7 @@ source/_integrations/litterrobot.markdown @natekspencer source/_integrations/local_ip.markdown @issacg source/_integrations/logger.markdown @home-assistant/core source/_integrations/logi_circle.markdown @evanjd +source/_integrations/lookin.markdown @ANMalko source/_integrations/loopenergy.markdown @pavoni source/_integrations/luci.markdown @mzdrale source/_integrations/luftdaten.markdown @fabaff @@ -320,7 +321,6 @@ 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 source/_integrations/ness_alarm.markdown @nickw444 source/_integrations/nest.markdown @allenporter source/_integrations/netatmo.markdown @cgtobi @@ -345,10 +345,11 @@ source/_integrations/nsw_rural_fire_service_feed.markdown @exxamalte source/_integrations/nuki.markdown @pschmitt @pvizeli @pree source/_integrations/numato.markdown @clssn source/_integrations/number.markdown @home-assistant/core @Shulyaka -source/_integrations/nut.markdown @bdraco +source/_integrations/nut.markdown @bdraco @ollo69 source/_integrations/nws.markdown @MatthewFlamm source/_integrations/nzbget.markdown @chriscla source/_integrations/obihai.markdown @dshokouhi +source/_integrations/octoprint.markdown @rfleming71 source/_integrations/ohmconnect.markdown @robbiet480 source/_integrations/ombi.markdown @larssont source/_integrations/omnilogic.markdown @oliver84 @djtimca @gentoosu @@ -407,6 +408,7 @@ source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert source/_integrations/rainmachine.markdown @bachya source/_integrations/random.markdown @fabaff source/_integrations/recollect_waste.markdown @bachya +source/_integrations/recorder.markdown @home-assistant/core source/_integrations/rejseplanen.markdown @DarkFox source/_integrations/renault.markdown @epenet source/_integrations/repetier.markdown @MTrab @@ -481,7 +483,7 @@ source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk source/_integrations/statistics.markdown @fabaff source/_integrations/stiebel_eltron.markdown @fucm -source/_integrations/stookalert.markdown @fwestenberg +source/_integrations/stookalert.markdown @fwestenberg @frenck source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter source/_integrations/stt.markdown @pvizeli source/_integrations/subaru.markdown @G-Two @@ -517,7 +519,6 @@ source/_integrations/tile.markdown @bachya source/_integrations/time_date.markdown @fabaff source/_integrations/tmb.markdown @alemuro source/_integrations/todoist.markdown @boralyl -source/_integrations/toon.markdown @frenck source/_integrations/totalconnect.markdown @austinmroczek source/_integrations/tplink.markdown @rytilahti @thegardenmonkey source/_integrations/traccar.markdown @ludeeus @@ -527,7 +528,7 @@ source/_integrations/trafikverket_train.markdown @endor-force source/_integrations/trafikverket_weatherstation.markdown @endor-force source/_integrations/transmission.markdown @engrbm87 @JPHutchins source/_integrations/tts.markdown @pvizeli -source/_integrations/tuya.markdown @Tuya @zlinoliver @METISU +source/_integrations/tuya.markdown @Tuya @zlinoliver @METISU @frenck source/_integrations/twentemilieu.markdown @frenck source/_integrations/twinkly.markdown @dr1rrb source/_integrations/ubus.markdown @noltari @@ -545,6 +546,7 @@ source/_integrations/utility_meter.markdown @dgomes source/_integrations/vallox.markdown @andre-richter source/_integrations/velbus.markdown @Cereal2nd @brefra source/_integrations/velux.markdown @Julius2342 +source/_integrations/venstar.markdown @garbled1 source/_integrations/vera.markdown @pavoni source/_integrations/verisure.markdown @frenck source/_integrations/versasense.markdown @flamm3blemuff1n @@ -554,7 +556,7 @@ source/_integrations/vicare.markdown @oischinger source/_integrations/vilfo.markdown @ManneW source/_integrations/vivotek.markdown @HarlemSquirrel source/_integrations/vizio.markdown @raman325 -source/_integrations/vlc_telnet.markdown @rodripf @dmcc +source/_integrations/vlc_telnet.markdown @rodripf @dmcc @MartinHjelmare source/_integrations/volkszaehler.markdown @fabaff source/_integrations/volumio.markdown @OnFreund source/_integrations/wake_on_lan.markdown @ntilley905 diff --git a/_config.yml b/_config.yml index 35843df6e7a..8cb816d0039 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2021 -current_minor_version: 10 -current_patch_version: 7 -date_released: 2021-11-01 +current_minor_version: 11 +current_patch_version: 0 +date_released: 2021-11-03 # 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/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index c8e24c09584..0e81810c7d2 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -43,10 +43,6 @@ http: ifttt: key: ["nope"] -wink: - access_token: ["wouldn't you"] - refresh_token: ["like to know"] - zwave: usb_path: "/dev/ttyUSB0" config_path: "/usr/local/share/python-openzwave/config" diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 34b7ce86ed7..a75db47168b 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -237,33 +237,43 @@ The same thing can also be expressed as a filter: - `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. +- `area_entities(area_name_or_id)` returns the list of entity IDs tied to a given area ID or name. Can also be used as a filter. +- `area_devices(area_name_or_id)` returns the list of device IDs tied to a given area ID or name. Can also be used as a filter. #### Areas examples {% raw %} ```text -{{ area_id('Living Room') }} # deadbeefdeadbeefdeadbeefdeadbeef +{{ area_id('Living Room') }} # 'deadbeefdeadbeefdeadbeefdeadbeef' ``` ```text -{{ area_id('my_device_id') }} # deadbeefdeadbeefdeadbeefdeadbeef +{{ area_id('my_device_id') }} # 'deadbeefdeadbeefdeadbeefdeadbeef' ``` ```text -{{ area_id('sensor.sony') }} # deadbeefdeadbeefdeadbeefdeadbeef +{{ area_id('sensor.sony') }} # 'deadbeefdeadbeefdeadbeefdeadbeef' ``` ```text -{{ area_name('deadbeefdeadbeefdeadbeefdeadbeef') }} # Living Room +{{ area_name('deadbeefdeadbeefdeadbeefdeadbeef') }} # 'Living Room' ``` ```text -{{ area_name('my_device_id') }} # Living Room +{{ area_name('my_device_id') }} # 'Living Room' ``` ```text -{{ area_name('sensor.sony') }} # Living Room +{{ area_name('sensor.sony') }} # 'Living Room' +``` + +```text +{{ area_entities('deadbeefdeadbeefdeadbeefdeadbeef') }} # ['sensor.sony'] +``` + +```text +{{ area_devices('Living Room') }} # ['my_device_id'] ``` {% endraw %} @@ -278,6 +288,17 @@ The same thing can also be expressed as a filter: - `utcnow()` returns a datetime object of the current time in the UTC timezone. - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. - Using `utcnow()` will cause templates to be refreshed at the start of every new minute. +- `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone. + + {% raw %} + + ```yaml + # Is the current time past 10:15? + {{ now() > today_at("10:15") }} + ``` + + {% endraw %} + - `as_datetime()` converts a string containing a timestamp to a datetime object. - `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted `None`. This function also be used as a filter. - `as_local()` converts datetime object to local time. This function also be used as a filter. @@ -525,6 +546,7 @@ The numeric functions and filters will not fail if the input is not a valid numb - `round(1, "half", default)` will always round to the nearest .5 value. `precision` should be 1 for this mode - Filter `[x, y, ...] | max` will obtain the largest item in a sequence. - Filter `[x, y, ...] | min` will obtain the smallest item in a sequence. +- Filter `[x, y, ...] | average` will return the average value of the sequence. - Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values. - Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values. - Filter `ord` will return for a string of length one an integer representing the Unicode code point of the character when the argument is a Unicode object, or the value of the byte when the argument is an 8-bit string. diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 286ef972f35..6210a70f7fb 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -290,6 +290,7 @@ Supported abbreviations: Supported abbreviations for device registry configuration: ```txt + 'cu': 'configuration_url' 'cns': 'connections', 'ids': 'identifiers', 'name': 'name', diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index bb65a50c8f7..8088732119e 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -108,6 +108,23 @@ data: ``` {% endraw %} + +You can use a template returning a native dictionary as well, which is useful if the attributes to be set depend on the situation. + +{% raw %} + +```yaml +service: climate.set_temperature +data: > + {% if states('sensor.temperature_living') < 19 %} + {"hvac_mode": "heat", "temperature": 19 } + {% else %} + {"hvac_mode": "auto" } + {% endif %} +``` + +{% endraw %} + ### `homeassistant` services There are four `homeassistant` services that aren't tied to any single domain, these are: diff --git a/source/_integrations/advantage_air.markdown b/source/_integrations/advantage_air.markdown index b4731d97bf0..10965c54883 100644 --- a/source/_integrations/advantage_air.markdown +++ b/source/_integrations/advantage_air.markdown @@ -14,6 +14,7 @@ ha_platforms: - climate - cover - sensor + - select - switch --- @@ -52,6 +53,10 @@ The `advantage_air` binary sensor platform will create a binary sensor for each The `advantage_air` switch platform will create a switch entity to toggle fresh air mode, if it is supported. +### Select + +The `advantage_air` select platform allows you to change the zone used for the "MyZone" feature. + ## Services ### Service `advantage_air.set_time_to` diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index d48f6e5c9a4..917808420c9 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -67,7 +67,7 @@ availability_topic: required: false type: string code: - description: If defined, specifies a code to enable or disable the alarm in the frontend. + description: If defined, specifies a code to enable or disable the alarm in the frontend. Note that the code is validated locally and blocks sending MQTT messages to the remote device. For remote code validation, the code can be configured to either of the special values `REMOTE_CODE` (numeric code) or `REMOTE_CODE_TEXT` (text code). In this case, local code validation is bypassed but the frontend will still show a numeric or text code dialog. Use `command_template` to send the code to the remote device. Example configurations for remote code validation [can be found here](./#configurations-with-remote-code-validation). required: false type: string code_arm_required: @@ -94,6 +94,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -131,6 +135,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -211,3 +220,64 @@ value_template: required: false type: template {% endconfiguration %} + +## Examples + +In this section you find some real-life examples of how to use this alarm control panel. + +### Configuration with local code validation + +The example below shows a full configuration with local code validation. + +{% raw %} + +```yaml +# Example using text based code with local validation configuration.yaml +alarm_control_panel: + - platform: mqtt + name: "Alarm Panel With Numeric Keypad" + state_topic: "alarmdecoder/panel" + value_template: "{{value_json.state}}" + command_topic: "alarmdecoder/panel/set" + code: mys3cretc0de +``` + +{% endraw %} + +### Configurations with remote code validation + +The example below shows a full configuration with local code validation and `command_template`. + +{% raw %} + +```yaml +# Example using text code with remote validation configuration.yaml +alarm_control_panel: + - platform: mqtt + name: "Alarm Panel With Text Code Dialog" + state_topic: "alarmdecoder/panel" + value_template: "{{ value_json.state }}" + command_topic: "alarmdecoder/panel/set" + code: REMOTE_CODE_TEXT + command_template: "{ action: '{{ action }}', code: '{{ code }}'}" +``` + +```yaml +# Example using numeric code with remote validation configuration.yaml +alarm_control_panel: + - platform: mqtt + name: "Alarm Panel With Numeric Keypad" + state_topic: "alarmdecoder/panel" + value_template: "{{ value_json.state }}" + command_topic: "alarmdecoder/panel/set" + code: REMOTE_CODE + command_template: "{ action: '{{ action }}', code: '{{ code }}'}" +``` + +{% endraw %} + +
+ +When your MQTT connection is not secured, this will send your secret code over the network unprotected! + +
diff --git a/source/_integrations/arcam_fmj.markdown b/source/_integrations/arcam_fmj.markdown index 65d6ff2ebd5..9264aa259a0 100644 --- a/source/_integrations/arcam_fmj.markdown +++ b/source/_integrations/arcam_fmj.markdown @@ -17,10 +17,18 @@ The `arcam_fmj` integration allows you to control [Arcam FMJ Receivers](https:// Supported devices: +- SR 250 - AVR 380 +- AVR 390 - AVR 450 +- AVR 550 - AVR 750 -- Likely other AVRs +- AVR 850 +- AVR 860 +- AV 860 +- SA 10 +- SA 20 +- SA 30 {% include integrations/config_flow.md %} diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index e0ab3265ead..03f1f7840cf 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -1,5 +1,5 @@ --- -title: Aurora ABB Solar PV +title: Aurora ABB PowerOne Solar PV description: Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant. ha_category: - Sensor @@ -11,6 +11,7 @@ ha_codeowners: ha_domain: aurora_abb_powerone ha_platforms: - sensor +ha_config_flow: true --- This implements a direct RS485 connection to a solar inverter in the @@ -20,44 +21,14 @@ The inverter was formerly made by PowerOne who got taken over by ABB. The TCP/IP method of communicating with inverters is supported by the Python library, but not by this implementation in this integration. -This integration provides a single sensor which reports the live power output -in watts. +This integration creates the inverter as a device with two sensors, reporting live power output in Watts and device temperature. -Note the PV inverter will be unresponsive to communications when in darkness, -so the value 'unknown' will be displayed during the night. -## Configuration +Note the PV inverter will be unresponsive to communications when in darkness, +so the sensors will report 'Unavailable' during the night. -Add the following to your `configuration.yaml` file: +The RS485 connection can be made using a low-cost USB-RS485 converter. It works using a 2-wire interface but an interface with a separate ground reference may be more reliable. -```yaml -# Example configuration.yaml entry -sensor: - - platform: aurora_abb_powerone - device: "SERIAL_PORT" -``` +{% include integrations/config_flow.md %} -{% configuration %} -device: - description: The serial port your RS485 adapter is connected to. - required: true - type: string -address: - description: The address of the inverter - only need to set this if you have changed your inverter away from the default address of 2. - required: false - type: integer - default: 2 -name: - description: Name of the sensor to use in the frontend. - required: false - default: Solar PV - type: string -{% endconfiguration %} - -```yaml -# Example configuration.yaml entry for aurora_abb_powerone platform -sensor: - - platform: aurora_abb_powerone - address: 2 - device: "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0" -``` +The inverter will need to be on (i.e. in daylight) and connected correctly in order to do the first-time setup. Normally it is sufficient to select the correct serial port and leave the default address `2`. diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index 24416256067..f2b43de27ed 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -63,10 +63,11 @@ The full list of supported binary sensor device classes is below - **power**: `on` means power detected, `off` means no power - **presence**: `on` means home, `off` means away - **problem**: `on` means problem detected, `off` means no problem (OK) +- **running**: `on` means running, `off` means not running - **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 +- **tamper**: `on` means tampering detected, `off` means no tampering (clear) - **vibration**: `on` means vibration detected, `off` means no vibration (clear) - **window**: `on` means open, `off` means closed diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index 458bbf01056..5b157f66614 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -64,6 +64,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." required: false @@ -105,6 +109,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None expire_after: description: Defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. required: false diff --git a/source/_integrations/binary_sensor.rest.markdown b/source/_integrations/binary_sensor.rest.markdown index 800007b6231..2575ee740de 100644 --- a/source/_integrations/binary_sensor.rest.markdown +++ b/source/_integrations/binary_sensor.rest.markdown @@ -86,7 +86,7 @@ name: type: string default: REST Binary Sensor device_class: - description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend. + description: Sets the [class of the device](/integrations/binary_sensor/#device-class), changing the device state and icon that is displayed on the frontend. required: false type: string value_template: diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index e1b1f519707..db3887d39b6 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -147,6 +147,10 @@ The air condition of the vehicle can be activated with the service `bmw_connecte What exactly is started here depends on the type of vehicle. It might range from just ventilation over auxiliary heating to real air conditioning. If your vehicle is equipped with auxiliary heating, only trigger this service if the vehicle is parked in a location where it is safe to use it (e.g., not in an underground parking or closed garage). +Some newer cars also support stopping an active air conditioning with the service `bmw_connected_drive.deactivate_air_conditioning`. + +This will only work if you have the option to stop the AC in the *MyBMW* app. If your car doesn't support this service, nothing will happen. + The vehicle is identified via the parameter `vin`. ### Sound the horn diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index 308d9d1e7d2..f57d85d4fa1 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -11,6 +11,7 @@ ha_iot_class: Local Push ha_release: 0.113 ha_domain: bond ha_codeowners: + - '@bdraco' - '@prystupa' - '@joshs85' ha_config_flow: true diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 089482ebd1e..8a403d769a8 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -10,9 +10,11 @@ ha_iot_class: Local Polling ha_codeowners: - '@danielhiversen' - '@felipediel' + - '@L-I-Am' ha_domain: broadlink ha_config_flow: true ha_platforms: + - light - remote - sensor - switch diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index 7654562a68e..8a2b2b22474 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -57,6 +57,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' required: false @@ -94,6 +98,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index d7af81076d2..d30809f571c 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -96,6 +96,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -133,6 +137,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None fan_mode_command_template: description: A template to render the value sent to the `fan_mode_command_topic` with. required: false diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 02cc25721a8..c79c1695329 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -74,6 +74,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' required: false @@ -115,6 +119,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 98cf981de0b..fd9123a6aed 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -29,6 +29,7 @@ ha_platforms: - fan - light - lock + - number - scene - sensor - siren diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 2870ac6d642..68130e8d6fa 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -7,7 +7,7 @@ ha_iot_class: Local Polling ha_release: 0.7.2 ha_domain: denonavr ha_codeowners: - - '@scarface-4711' + - '@ol-iver' - '@starkillerOG' ha_config_flow: true ha_ssdp: true diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index b8130a2abf0..dcadd46692f 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -113,6 +113,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." required: false diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown index c7846538818..f1f71eda1eb 100644 --- a/source/_integrations/device_trigger.mqtt.markdown +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -48,6 +48,10 @@ device: required: true type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." required: false diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index e5f61e1c15f..2a3fc1721e8 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -12,6 +12,7 @@ ha_codeowners: ha_domain: dlna_dmr ha_platforms: - media_player +ha_ssdp: true --- The `dlna_dmr` platform allows you to control a [DLNA Digital Media Renderer](https://www.dlna.org/), such as DLNA enabled TVs or radios. diff --git a/source/_integrations/efergy.markdown b/source/_integrations/efergy.markdown index 0c1405b5ce3..f30a53107b9 100644 --- a/source/_integrations/efergy.markdown +++ b/source/_integrations/efergy.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Efergy devices within Home Assista ha_category: - Energy ha_release: pre 0.7 +ha_config_flow: true ha_iot_class: Cloud Polling ha_domain: efergy ha_platforms: @@ -14,6 +15,8 @@ ha_codeowners: Integrate your [Efergy](https://efergy.com) meter information into Home Assistant. +{% include integrations/config_flow.md %} + ## Setup To get an app token: @@ -23,64 +26,17 @@ To get an app token: 3. Click on App tokens 4. Click "Add token" -## Configuration +## Integration Entities -To enable the sensor, add the following lines to your `configuration.yaml`: +The following sensors will be created: -```yaml -# Example configuration.yaml entry -sensor: - - platform: efergy - app_token: APP_TOKEN - utc_offset: UTC_OFFSET - monitored_variables: - - type: instant_readings - - type: budget - - type: cost - period: day - currency: $ - - type: amount - period: day - - type: current_values -``` - -{% configuration %} -app_token: - description: The App Token for your account. - required: true - type: string -utc_offset: - description: Some variables (currently only the daily_cost) require that the negative number of minutes your timezone is ahead/behind UTC time. - required: false - default: 0 - type: string -monitored_variables: - description: Variables to monitor. - required: true - type: list - keys: - type: - description: Name of the variable. - required: true - type: list - keys: - instant_readings: - description: Instant energy consumption. - budget: - description: Monthly budget. - cost: - description: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period. - amount: - description: The amount of energy consumed over a given period. - current_values: - description: This returns the current energy usage of each device on your account. If you only have one device in your account, this is effectively the same as `instant_readings`. - period: - description: Some variables take a period argument. Valid options are "day", "week", "month", and "year". - required: false - default: year - type: string - currency: - description: This is used to display the cost/period as the unit when monitoring the cost. It should correspond to the actual currency used in your dashboard. - required: false - type: string -{% endconfiguration %} +- **Power Usage**: Shows the aggregate instant value of power consumption. An entity will also be created for each sensor attached to the household. If only one sensor is detected, it will be disabled by default. +- **Daily Consumption**: Shows the current day's energy consumption. (disabled by default) +- **Weekly Consumption**: Shows the current week's energy consumption. (disabled by default) +- **Monthly Consumption**: Shows the current month's energy consumption. +- **Yearly Consumption**: Shows the current year's energy consumption. (disabled by default) +- **Energy Budget**: Shows the current status of the budget set for the month. +- **Daily Cost**: Shows the current day's cost of consumption. (disabled by default) +- **Weekly Cost**: Shows the current week's cost of consumption. (disabled by default) +- **Monthly Cost**: Shows the current month's cost of consumption. +- **Yearly Cost**: Shows the current year's cost of consumption. (disabled by default) diff --git a/source/_integrations/eight_sleep.markdown b/source/_integrations/eight_sleep.markdown index a8564b7bb39..c0eed2c3ab3 100644 --- a/source/_integrations/eight_sleep.markdown +++ b/source/_integrations/eight_sleep.markdown @@ -9,6 +9,7 @@ ha_release: 0.44 ha_iot_class: Cloud Polling ha_codeowners: - '@mezz64' + - '@raman325' ha_domain: eight_sleep ha_platforms: - binary_sensor diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown index 4542a7114e6..099a8d90e2f 100644 --- a/source/_integrations/elkm1.markdown +++ b/source/_integrations/elkm1.markdown @@ -58,6 +58,15 @@ Force arm away and stay are available in 5.3.0 or higher. Many features will work with lower versions of the ElkM1. Check the "ElkM1 RS232 Protocol" manual for details. +### ELK-M1XEP Version + +The ELK-M1XEP is the Ethernet controller board for the ElkM1. If connecting the integration +in secure mode the version of the ELK-M1XEP determines which secure protocol is supported. +ELK-M1XEP versions less than 2.0.46 support TLS 1.0, while version 2.0.46 and above support +TLS 1.2. When adding the ElkM1 integration in the user interface use `secure` for TLS 1.0 and +use `TLS 1.2` for TLS 1.2. Note that ELK-M1XEP does not support auto-negotiation of the +version of the TLS protocol, the user must specify the TLS version to connect. + ### Global Setting 35 The ElkM1 integration tracks the user number and name of the last user name to @@ -150,15 +159,15 @@ elkm1: {% configuration %} host: - description: Connection string to Elk of the form `://
[:port]`. `` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `
` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `` is the port to connect to on the Elk, defaulting to 2101 for `elk` and 2601 for `elks`. For `serial` method, _address_ is the path to the tty _/dev/ttyS1_ for example and `[:baud]` is the baud rate to connect with (Elk systems default to 115200 baud, but this can be changed during Elk system configuration). You may have multiple host sections for connecting multiple controllers. + description: Connection string to Elk of the form `://
[:port]`. `` is `elk` for non-secure connection, `elks` for secure TLS 1.0 connection, `elksv1_2` for secure TLS 1.2 connection, and `serial` for serial port connection. `
` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `` is the port to connect to on the Elk, defaulting to 2101 for `elk` and 2601 for `elks` and `elksv1_2`. For `serial` method, _address_ is the path to the tty _/dev/ttyS1_ for example and `[:baud]` is the baud rate to connect with (Elk systems default to 115200 baud, but this can be changed during Elk system configuration). See ELK-M1XEP section above for information on selecting the appropriate secure version. You may have multiple host sections for connecting multiple controllers. required: true type: string username: - description: Username to login to Elk. Only required if using `elks` connection method. + description: Username to login to Elk. Required if using a secure connection method. required: false type: string password: - description: Password to login to Elk. Only required if using `elks` connection method. + description: Password to login to Elk. Required if using a secure connection method. required: false type: string prefix: diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index 3d781f1d60a..e0504bf76be 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -5,216 +5,110 @@ ha_category: - Weather - Sensor - Camera -ha_release: 0.95 -ha_iot_class: Cloud Polling -ha_codeowners: - - '@michaeldavie' -ha_domain: environment_canada ha_platforms: - camera - sensor - weather +ha_release: 0.95 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@gwww' + - '@michaeldavie' +ha_domain: environment_canada +ha_config_flow: true --- -The `environment_canada` weather platforms provide meteorological data for Canadian locations from [Environment Canada](https://weather.gc.ca/index_e.html). +The Environment Canada integration provides meteorological data for Canadian locations from [Environment and Climate Change Canada](https://weather.gc.ca/index_e.html). -The following device types and data are supported: - -- [Location Selection](#location-selection) -- [Weather](#weather) -- [Sensor](#sensor) - - [Alert TTS Script](#alert-tts-script) -- [Camera](#camera) +{% include integrations/config_flow.md %} ## Location Selection -The `weather` and `sensor` platforms automatically determine which weather station's data to use. However, as station coordinates provided by Environment Canada are somewhat imprecise, in some cases you may need to override the automatic selection to use the desired station. +The integration automatically determines the closest weather station based on the latitude and longitude specified. If integration-specific coordinates are not provided, the coordinates configured for Home Assistant are used. -For these platforms, the location to use is determined according to the following hierarchy: +You can also specify a weather station to use by providing a identification code of the form `AB/s0000123`, based on those listed in [this CSV file](https://dd.weather.gc.ca/citypage_weather/docs/site_list_towns_en.csv). -- Location ID specified in platform configuration (optional) -- Closest station to latitude/longitude specified in platform configuration (optional) -- Closest station to latitude/longitude specified in Home Assistant configuration (default) +## Entities -The `camera` platform dynamically builds imagery using a latitude/longitude as a center point. Radar station IDs are also supported for backwards compatibility. +The integration will create the entities listed below. Note that many of the entities are disabled by default and can be enabled via the Configuration / Entities screen. -For this platform, the location to use is determined according to the following hierarchy: +### Weather -- Station ID specified in platform configuration (optional) -- Latitude/longitude specified in platform configuration (optional) -- Latitude/longitude specified in Home Assistant configuration (default) +- Current conditions and daily forecast +- Current conditions and hourly forecast +### Camera -## Weather +- Loop of radar imagery from the last 3 hours -The `environment_canada` weather platform populates a weather card with Environment Canada current conditions and forecast [data](https://weather.gc.ca/canada_e.html). +By default, the radar entity uses the rain layer from 1 April to 30 November and the snow layer from 1 December to 31 March. -To add Environment Canada weather to your installation, add the following to your `configuration.yaml` file: +### Sensors -```yaml -# Example configuration.yaml entry -weather: - - platform: environment_canada -``` +#### Conditions and Forecasts -- The platform checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. -- If no name is given, the weather entity will be named `weather.`. -- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: - - A specific station code of the form `AB/s0000123` based on those listed in [this CSV file](https://dd.weather.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or - - A specific latitude/longitude +- Current condition +- Forecast summary +- [Icon code](https://dd.weather.gc.ca/citypage_weather/docs/Current_Conditions_Icons-Icones_conditions_actuelles.pdf) of current condition +- Barometric pressure +- Pressure tendency +- Humidity +- Visibility +- UV index -{% configuration %} -latitude: - description: Part of a set of coordinates to use when finding the closest weather station. - required: inclusive - type: float -longitude: - description: Part of a set of coordinates to use when finding the closest weather station. - required: inclusive - type: float -station: - description: The station code of a specific weather station to use. Station codes must be in the form `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. - required: false - type: string -name: - description: Name to be used for the entity ID, e.g., `weather.`. - required: false - type: string -forecast: - description: Specify hourly or daily forecasts. Valid values are 'daily' and 'hourly'. - required: false - type: string - default: daily -{% endconfiguration %} +#### Temperature -## Sensor +- Temperature +- Wind chill +- Humidex +- Forecast high temperature +- Forecast low temperature +- Dewpoint -The `environment_canada` sensor platform creates sensors based on Environment Canada [current conditions](https://weather.gc.ca/canada_e.html) and [alerts](https://weather.gc.ca/warnings/index_e.html). +#### Wind -To add Environment Canada sensors to your installation, add the desired lines from the following example to your `configuration.yaml` file: +- Wind speed +- Wind gust +- Wind direction +- Wind bearing -```yaml -# Example configuration.yaml entry -sensor: - - platform: environment_canada -``` +#### Precipitation -- A sensor will be created for each of the following conditions, with a default name like `sensor.temperature`: - - `temperature` - The current temperature, in ºC. - - `dew_point` - The current dewpoint, in ºC. - - `wind_chill` - The current wind chill, in ºC. - - `humidex` - The current humidex, in ºC. - - `air_quality_health_index` - The current Air Quality Health Index score - - `pressure` - The current air pressure, in kPa. - - `tendency` - The current air pressure tendency, e.g., "Rising". - - `humidity` - The current humidity, in %. - - `visibility` - The current visibility, in km. - - `condition` - A brief text statement of the current weather conditions, e.g., "Sunny". - - `icon_code` - A two-digit number corresponding to a condition icon, as specified in these [image to description](https://dd.weather.gc.ca/citypage_weather/docs/Current_Conditions_Icons-Icones_conditions_actuelles.pdf) and [code to description](https://dd.weather.gc.ca/citypage_weather/docs/current_conditions_icon_code_descriptions_e.csv) mappings. - - `wind_speed` - The current sustained wind speed, in km/h. - - `wind_gust` - The current wind gust, in km/h. - - `wind_direction` - The current cardinal wind direction, e.g., "SSW". - - `wind_bearing` - The current wind direction in degrees. - - `high_temperature` - The next forecast high temperature, in ºC. - - `low_temperature` - The next forecast low temperature, in ºC. - - `uv_index` - The next forecast UV index. - - `chance_of_precip` - The next forecast probability of precipitation, in %. - - `forecast` - A textual description of the next forecast period, e.g., "Tonight. Mainly cloudy. Low -12." - - `precipitation_yesterday` - The total amount of precipitation that fell the previous day. - - `warnings` - Current warning alerts. - - `watches` - Current watch alerts. - - `advisories` - Current advisory alerts. - - `statements` - Current special weather statements. - - `endings` - Alerts that have recently ended. -- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: - - A specific station code of the form `AB/s0000123` based on those listed in [this CSV file](https://dd.weather.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or - - A specific latitude/longitude -- In the case of multiple alerts in the same category, the titles of each are concatenated together with a pipe (`|`) separator. +- Probability of precipitation +- Precipitation yesterday -{% configuration %} -latitude: - description: Part of a set of coordinates to use when finding the closest weather station. - required: inclusive - type: float -longitude: - description: Part of a set of coordinates to use when finding the closest weather station. - required: inclusive - type: float -station: - description: The station code of a specific weather station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. Station codes must be in the form of `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code. - required: false - type: string -language: - description: Language to use for entity display names and textual data (English or French). - required: false - type: string - default: english -scan_interval: - description: The time between updates in seconds. - required: false - type: integer - default: 600 -{% endconfiguration %} +#### Alerts -### Alert TTS Script +- Warnings +- Watches +- Advisories +- Statements +- Endings -If you would like to have alerts announced via a text-to-speech service, you can use a script similar to the following: +The alert sensors use the number of current alerts as their state, with an attribute containing the title of each alert. + +## Template Sensors + +The configuration snippet below adds a useful [template sensors](/integrations/template/) showing the current "feels like" temperature among air temperature, humidex, and wind chill. + +Replace `NAME` with the name used to configure your integration. {% raw %} ```yaml -weather_alert_tts: - sequence: - - service: tts.amazon_polly_say - data: - message: "{{ states('sensor.warnings') }} in effect." +template: + - sensor: + - name: "Feels Like" + device_class: temperature + unit_of_measurement: "°C" + state: > + {% if not is_state('sensor.NAME_humidex', 'unknown') %} + {{ states('sensor.NAME_humidex') }} + {% elif not is_state('sensor.NAME_wind_chill', 'unknown') %} + {{ states('sensor.NAME_wind_chill') }} + {% else %} + {{ states('sensor.NAME_temperature') | round(0) }} + {% endif %} ``` {% endraw %} - -## Camera - -The `environment_canada` camera platform displays Environment Canada meteorological [radar imagery](https://weather.gc.ca/radar/index_e.html). - -To add Environment Canada radar imagery to your installation, add the desired lines from the following example to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: environment_canada -``` - -- If no name is given, the camera entity will be named `camera.environment_canada_radar`. -- The platform dynamically builds imagery based on a latitude/longitude center point. This center point can be specified using: - - The latitude/longitude of the Home Assistant installation (default) - - A specific latitude/longitude for the platform (optional) - - A specific radar station ID from [this table](https://en.wikipedia.org/wiki/Canadian_weather_radar_network#List_of_radars). The code must be in the form `XXX` or `CXXXX`, i.e., remove the leading `C` only if the result forms a three-letter code, otherwise, include it. Valid values include `XFT` for Ottawa or `CASBV` for Montreal. (optional, for backwards compatibility) - -{% configuration %} -latitude: - description: Part of a set of coordinates to use as the center point. - required: inclusive - type: float -longitude: - description: Part of a set of coordinates to use as the center point. - required: inclusive - type: float -station: - description: The station code of a specific radar station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. Must be in the form `XXX` or `CXXXX`. - required: false - type: string -name: - description: Name to be used for the entity ID, e.g., `camera.`. - required: false - type: string -loop: - description: Boolean setting to determine whether to display an animated GIF of images from the last 2 hours. If `false`, the latest still image will be displayed. - required: false - default: true - type: boolean -precip_type: - description: Determines whether to use the intensity bands for rain or snow. Valid values are RAIN and SNOW. - required: false - type: string - default: RAIN from April to October, SNOW from November to March -{% endconfiguration %} diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown deleted file mode 100644 index 4ed37c36a9b..00000000000 --- a/source/_integrations/essent.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Essent -description: Instructions on how to integrate Essent within Home Assistant. -ha_category: - - Energy - - Sensor -ha_release: 0.93 -ha_iot_class: Cloud Polling -ha_codeowners: - - '@TheLastProject' -ha_domain: essent -ha_platforms: - - sensor ---- - -The `essent` platform uses [PyEssent](https://github.com/TheLastProject/PyEssent/) to communicate with the (undocumented) API of Dutch energy provider Essent. It provides sensors for each of your meters and tariffs, updated daily. - -To add Essent to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: essent - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - required: true - description: Your username for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/). - type: string -password: - required: true - description: Your password for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/). - type: string -{% endconfiguration %} diff --git a/source/_integrations/fan.group.markdown b/source/_integrations/fan.group.markdown new file mode 100644 index 00000000000..13051b06a9a --- /dev/null +++ b/source/_integrations/fan.group.markdown @@ -0,0 +1,44 @@ +--- +title: "Fan Group" +description: "Instructions how to setup grouped fans in Home Assistant." +ha_category: + - Fan +ha_release: 2021.11 +ha_iot_class: Local Push +ha_quality_scale: internal +ha_domain: group +--- + +The `group` platform can create a fan that combines several fan entities into one. + +To enable `Fan Groups` in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +fan: + - platform: group + entities: + - fan.lanai_west + - fan.lanai_south + - fan.lanai_east +``` + +{% configuration %} +entities: + description: List of all fan entities you want to control. + required: true + type: [string, list] +name: + description: Name to use in the frontend. + required: false + type: string + default: "Fan Group" +unique_id: + description: An ID that uniquely identifies this fan group. If two fans have the same unique ID, Home Assistant will raise an error. + required: false + type: string +{% endconfiguration %} + +## Functionality + +It works best if you group fans with the same supported features together (like support for `percentage`/`direction`/`oscillation`), but is not limited to it. In case you have bundled fans with different features together, the controls will only affect those fans that support the actions. diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 4de4d1ec7f6..c9822ad3875 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -69,6 +69,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -106,6 +110,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/fjaraskupan.markdown b/source/_integrations/fjaraskupan.markdown index 725e52f23f2..bd64c000128 100644 --- a/source/_integrations/fjaraskupan.markdown +++ b/source/_integrations/fjaraskupan.markdown @@ -15,6 +15,7 @@ ha_platforms: - binary_sensor - fan - light + - number - sensor --- diff --git a/source/_integrations/flux_led.markdown b/source/_integrations/flux_led.markdown index 9fe9e68cf7f..0741ecc4502 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -1,16 +1,25 @@ --- -title: Flux LED/MagicLight +title: Flux LED/MagicHome description: Instructions on how to setup Flux led/MagicHome/MagicLight within Home Assistant. ha_category: - Light -ha_iot_class: Local Polling + - Switch +ha_iot_class: Local Push ha_release: 0.25 ha_domain: flux_led ha_platforms: - light + - switch +ha_codeowners: + - '@icemanch' +ha_quality_scale: platinum +ha_config_flow: true +ha_dhcp: true --- -The `flux_led` support is integrated into Home Assistant as a light platform. Several brands of both bulbs and controllers use the same protocol and they have the HF-LPB100 chipset in common. The chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app. +The Flux LED integration supports several brands of switches, bulbs, and controllers that use the same protocol and have the HF-LPB100 chipset in common. Chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work with this integration if you can control the device with the MagicHome app. + +This integration will provide local control over your LED lights/strips and can be configured to auto-scan your network for controllers or for you to manually configure individual lights by their IP address. Example of bulbs: @@ -23,137 +32,19 @@ Examples of controllers: - [Ledenet WiFi RGBW Controller](https://amzn.to/2WZKXNa) - [SUPERNIGHT WiFi Wireless LED Smart Controller](https://amzn.to/2WURx7w) -## Configuration -To enable those lights, add the following lines to your `configuration.yaml` file: -```yaml -# Example configuration.yaml entry -light: - - platform: flux_led -``` +{% include integrations/config_flow.md %} -{% configuration %} -automatic_add: - description: To enable the automatic addition of lights on startup. - required: false - default: false - type: boolean -devices: - description: A list of devices with their IP address. - required: false - type: list - keys: - name: - description: A friendly name for the device. - required: false - type: string - mode: - description: "The chosen brightness mode, options are: `rgbw`, `rgb` and `w`." - required: false - default: rgbw - type: string - protocol: - description: Set this to `ledenet` if you are using a ledenet bulb. - required: false - type: string - custom_effect: - description: A definition of the custom effect. - required: false - type: map - keys: - colors: - description: A list of 1 to 16 colors, used in the effect loop (see example below). Defined as three comma-separated integers between 0 and 255 that represent the color in RGB. There is no way to set brightness, but you can define lower RGB values to simulate lower brightness. E.g., if you want 50% red, define it as `[127,0,0]` instead of `[255,0,0]`. - required: true - type: list - speed_pct: - description: A speed in percents (100 being the fastest), at which controller will transition between the colors. - required: false - type: integer - default: 50 - transition: - description: "A type of transition, which will be used to transition between the colors. Supported values are: `gradual`, `jump` and `strobe`." - required: false - type: string - default: gradual -{% endconfiguration %} +After the devices have been added they can be configured with different effects listed below. These settings can be accessed by navigating to the integration settings in Configuration -> Integrations and selecting the "Flux Led/Magic Home" configuration for the bulb or controller. -
-Depending on your controller or bulb type, there are two ways to configure brightness. -The integration defaults to rgbw. If your device has a separate white channel, you do not need to specify anything else; changing the white value will adjust the brightness of white channel keeping rgb color constant. However, if your device does not have a separate white channel, you will need to set the mode to rgb. In this mode, the device will keep the same color, and adjust the rgb values to dim or brighten the color. +**Custom Effect**\ +A list of RGB colors can be entered to create an effect. The effect speed can be adjusted using the slider underneath. -
+**Custom Effect Type**\ +This determines the transition between each color. -### Example configuration - -Will automatically search and add all lights on start up: - -```yaml -# Example configuration.yaml entry -light: - - platform: flux_led - automatic_add: true -``` - -Will add two lights with given name and create an automation rule to randomly set color each 45 seconds: - -```yaml -light: -# Example configuration.yaml entry - - platform: flux_led - devices: - 192.168.0.106: - name: flux_lamppost - 192.168.0.109: - name: flux_living_room_lamp - -automation: - alias: random_flux_living_room_lamp - trigger: - platform: time_pattern - seconds: '/45' - action: - service: light.turn_on - data: - entity_id: light.flux_living_room_lamp - effect: random -``` - -Will add a light without the white mode: - -```yaml - 192.168.1.10: - name: NAME - mode: "rgb" -``` - -Will add a light with rgb+white mode (default). White and RGB channels can be adjusted independently using a slider and color picker respectively. - -```yaml - 192.168.1.10: - name: NAME - mode: "rgbw" -``` - -Will add a light with white mode only. This is useful when only W channel is connected to an RGBW controller and allows the white level to be controlled via brightness value. - -```yaml - 192.168.1.10: - name: NAME - mode: "w" -``` - -Some devices such as the Ledenet RGBW controller use a slightly different protocol for communicating the brightness to each color channel. If your device is only turning on or off but not changing color or brightness try adding the LEDENET protocol. - -```yaml -light: - - platform: flux_led - devices: - 192.168.1.10: - name: NAME - protocol: 'ledenet' -``` ### Effects @@ -170,23 +61,26 @@ The Flux LED light offers a number of effects which are not included in other li | `gb_cross_fade` | Fades between green and blue. | | `red_strobe`, `green_strobe`, `blue_strobe`, `yellow_strobe`, `cyan_strobe`, `purple_strobe`, `white_strobe` | Strobes the color indicated by the effect name. | | `random` | Chooses a random color by selecting random values for R, G, and B. | -| `custom` | Custom effect (if defined, see below). | -Users can define their own custom effect. It consists of three parameters: a list of 1 to 16 colors, speed and type of transition. The controller will transition between the colors in a loop, with specified transition and speed. Here is an example of a custom effect that will quickly flash red, yellow, green, cyan, blue, magenta in a loop: + +### Custom Effects - Service `flux_led.set_custom_effect` + +The integration offers a custom service to enable you to set the lights to a custom light effect. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | The entity_id of the LED light to set the effect on. | +| `colors` | List of RGB colors to transition between in your effect. (Max 16, Required) | +| `speed_pct` | The speed of the effect in % (0-100. Default 50) | +| `transition` | The transition effect you would like. Valid options are `gradual`, `jump`, or `strobe`. (Default `gradual`) | ```yaml -light: - - platform: flux_led - devices: - 192.168.1.10: - custom_effect: - speed_pct: 100 - transition: 'strobe' - colors: - - [255,0,0] - - [255,255,0] - - [0,255,0] - - [0,255,255] - - [0,0,255] - - [255,0,255] +#Example Service Call +entity_id: light.led_strip +colors: + - [255,0,0] + - [0,255,0] + - [0,0,255] +speed_pct: 80 +transition: "jump" ``` diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index d1b52bd39ad..ef937a63923 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -46,6 +46,7 @@ Currently supported services are Platform specific: - `fritz.reconnect` - `fritz.reboot` +- `fritz.cleanup` ### Platform Services @@ -53,8 +54,6 @@ Currently supported services are Platform specific: Reboot the router. - - | Service data attribute | Optional | Description | | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `entity_id` | no | Only act on a specific router | @@ -68,6 +67,15 @@ If you have a dynamic IP address, most likely it will change. | ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `entity_id` | no | Only act on a specific router | +#### Service `fritz.cleanup` + +Remove all stale devices from Home Assistant. +A device is identified as stale when it's still present on Home Assistant but not on the FRITZ!Box. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Only act on a specific router | + ## Integration Options It is possible to change some behaviors through the integration options. diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 979a21767d0..21dd1be7b8e 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate AVM Fritz!DECT components into Hom ha_category: - Binary Sensor - Climate + - Light - Sensor - Switch ha_release: 0.68 @@ -14,10 +15,12 @@ ha_ssdp: true ha_platforms: - binary_sensor - climate + - light - sensor - switch ha_codeowners: - '@mib1185' + - '@flabbamann' --- The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [FRITZ!DECT](https://en.avm.de/products/fritzdect/) devices like switches, sensors and thermostats. @@ -26,6 +29,7 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor - Climate +- Light - Sensor - Switch @@ -38,7 +42,9 @@ There is currently support for the following device types within Home Assistant: - [FRITZ!Box 7430](https://en.avm.de/service/fritzbox/fritzbox-7430/overview/) - [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) - [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/) +- [FRITZ!DECT 500](https://en.avm.de/products/fritzdect/fritzdect-500/) - [Eurotronic Comet DECT](https://eurotronic.org/produkte/elektronische-heizkoerperthermostate/sparmatic-comet/) +- [Magenta SmartHome LED E27](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss) {% include integrations/config_flow.md %} @@ -76,3 +82,11 @@ There are several attributes that can be useful for automations and templates. | --------- | ----------- | | `device_locked` | The state of the key lock at the device. | `locked` | The state of the lock for configuring the device via the app or the FRITZ!Box web interface. + +## Light + +To get AVM FRITZ!DECT lightbulbs (e.g., FRITZ!DECT 500) follow the [configuration instructions](#configuration) above. + +
+The FRITZ!DECT 500 lightbulb supports only 36 colors. When a color is picked in home assistant that is not supported by the device, a color that comes close will be activated. +
diff --git a/source/_integrations/gogogate2.markdown b/source/_integrations/gogogate2.markdown index 6a324a0ab03..d4bd1a5f999 100644 --- a/source/_integrations/gogogate2.markdown +++ b/source/_integrations/gogogate2.markdown @@ -21,3 +21,10 @@ ha_dhcp: true The `gogogate2` cover platform lets you control Gogogate2 and iSmartGate enabled garage doors and gates through Home Assistant. Device names in Home Assistant are generated based on the names defined in the GogoGate2 or iSmartGate mobile app. {% include integrations/config_flow.md %} + +### Supported Devices + +- Gogogate 2 +- ismartgate PRO +- ismartgate LITE +- ismartgate MINI diff --git a/source/_integrations/google.markdown b/source/_integrations/google.markdown index 9318be436bd..ae5e1c4d77c 100644 --- a/source/_integrations/google.markdown +++ b/source/_integrations/google.markdown @@ -1,11 +1,13 @@ --- -title: "Google Calendar Event" -description: "Instructions on how to use Google Calendars in Home Assistant." +title: Google Calendars +description: Instructions on how to use Google Calendars in Home Assistant. ha_category: - Calendar ha_iot_class: Cloud Polling ha_release: 0.33 ha_domain: google +ha_platforms: + - calendar --- The `google` calendar platform allows you to connect to your diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index fd59692e83c..32fb1b35f4c 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -12,6 +12,7 @@ ha_domain: group ha_platforms: - binary_sensor - cover + - fan - light - media_player - notify diff --git a/source/_integrations/hassio.markdown b/source/_integrations/hassio.markdown index c8beaf282c4..d1ce74cf5bc 100644 --- a/source/_integrations/hassio.markdown +++ b/source/_integrations/hassio.markdown @@ -1,15 +1,17 @@ --- -title: Supervisor +title: Home Assistant Supervisor description: Control Supervisor Add-ons and OS from Home Assistant ha_category: - Binary Sensor - Sensor ha_iot_class: Local Polling -ha_release: 2021.4 +ha_release: 0.42 ha_domain: hassio ha_platforms: - binary_sensor - sensor +ha_codeowners: + - '@home-assistant/supervisor' --- Supervisor integration allows you to monitor and control Supervisor add-ons and operating system from Home Assistant. @@ -23,6 +25,8 @@ For each installed add-on Supervisor provides following sensors: | ------- | ------------------ | ----------- | | Version | no | Current version of the add-on | Newest Version | no | Latest version of the add-on currently available +| CPU Percent| no | The CPU Percent usage of the add-on +| Memory Percent| no | The Memory (RAM) Percent usage of the add-on For Home Assistant OS Supervisor provides following sensors: @@ -38,6 +42,7 @@ For each installed add-on Supervisor provides following binary sensors: | Sensor | Enabled by default | Description | | ------- | ------------------ | ----------- | | Update Available | no | Whether there is an update available for this add-on +| Running | no | Whether the add-on is running or not. For Home Assistant OS Supervisor provides following binary sensors: diff --git a/source/_integrations/huawei_router.markdown b/source/_integrations/huawei_router.markdown deleted file mode 100644 index 3fa3d833ab7..00000000000 --- a/source/_integrations/huawei_router.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Huawei Router -description: Instructions on how to integrate Huawei Routers into Home Assistant. -ha_category: - - Presence Detection -ha_iot_class: Local Polling -ha_release: 0.51 -ha_codeowners: - - '@abmantis' -ha_domain: huawei_router -ha_platforms: - - device_tracker ---- - -The `huawei` device tracker platform offers presence detection by looking at connected devices to a [Huawei router](http://m.huawei.com/enmobile/enterprise/products/network/access/pon-one/hw-371813.htm). - -Currently, this was only tested with the Huawei HG8245W5, HG8247H, HS8247W and HG8247Q Smart Router (used by Vodafone Portugal). - -## Configuration - -To use a Huawei router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: huawei_router - host: 192.168.1.1 - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -host: - description: The IP address of your router, e.g., 192.168.1.1. - required: true - type: string -username: - description: The username to login into the router (the same used through the router's web interface). - required: true - type: string -password: - description: The password for the specified username. - required: true - type: string -{% endconfiguration %} - -See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_integrations/huisbaasje.markdown b/source/_integrations/huisbaasje.markdown index 459ca2fff2a..402d8e5e742 100644 --- a/source/_integrations/huisbaasje.markdown +++ b/source/_integrations/huisbaasje.markdown @@ -8,7 +8,7 @@ ha_release: 2021.2 ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - - '@denniss17' + - '@dennisschroer' ha_domain: huisbaasje ha_platforms: - sensor diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown index c98f622a596..7e7b9155c63 100644 --- a/source/_integrations/humidifier.mqtt.markdown +++ b/source/_integrations/humidifier.mqtt.markdown @@ -70,6 +70,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -112,6 +116,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 5c48ecda8b1..302c0953692 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -424,6 +424,11 @@ context_timeout: required: false type: float default: None +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ### Support for automations @@ -724,6 +729,11 @@ max_temp: description: Override the maximum temperature. required: false type: float +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Cover @@ -810,6 +820,11 @@ device_class: description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend. required: false type: string +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Fan @@ -855,6 +870,11 @@ max_step: description: The maximum amount of steps for a step-controlled fan. If set, the integration will convert percentages to steps automatically. required: false type: integer +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Light @@ -998,6 +1018,11 @@ max_kelvin: required: false type: integer default: 6000 +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} Many KNX devices can change their state internally without a message to the switch address on the KNX bus, e.g., if you configure a scene or a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given `state_address` (in most cases from the light actuator), it will overwrite the state of the object. @@ -1143,6 +1168,8 @@ knx: type: temperature min: 20 max: 24.5 + step: 0.1 + mode: slider ``` {% configuration %} @@ -1175,6 +1202,20 @@ max: description: Maximum value that can be sent. Defaults to the `type` DPT maximum value. required: false type: float +step: + description: Step value. Defaults to the step size defined for the DPT in the KNX specifications. + required: false + type: float +mode: + description: Specifies the mode used in the UI. `auto`, `box` or `slider` are valid. + required: false + type: string + default: auto +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Scene @@ -1203,6 +1244,11 @@ name: description: A name for this device used within Home Assistant. required: false type: string +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Select @@ -1288,6 +1334,11 @@ sync_state: required: false type: [boolean, string, integer] default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Sensor @@ -1344,6 +1395,11 @@ 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 +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ### Value Types @@ -1552,6 +1608,11 @@ respond_to_read: required: false type: boolean default: false +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} The optional `state_address` can be used to inform Home Assistant about state changes not triggered by a telegram to the `address` e.g., if you configure a timer on a channel. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. @@ -1648,6 +1709,11 @@ sync_state: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None {% endconfiguration %} ## Troubleshooting / Common issues diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index e183f47dde6..cbe84aa36be 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -128,6 +128,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -165,6 +169,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None effect_command_topic: description: "The MQTT topic to publish commands to change the light's effect state." required: false @@ -497,6 +506,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -526,6 +539,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None effect: description: Flag that defines if the light supports effects. required: false @@ -835,6 +853,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -864,6 +886,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None effect_list: description: List of possible effects. required: false diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index f2b54c28c8a..6bb982fe96c 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -65,6 +65,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -102,6 +106,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/lookin.markdown b/source/_integrations/lookin.markdown new file mode 100644 index 00000000000..3f1383c1bba --- /dev/null +++ b/source/_integrations/lookin.markdown @@ -0,0 +1,27 @@ +--- +title: LOOKin +description: Instructions on how to integrate LookIN devices into Home Assistant. +ha_category: + - Climate + - Sensor +ha_release: 2021.11 +ha_iot_class: Local Push +ha_codeowners: + - '@ANMalko' +ha_domain: lookin +ha_config_flow: true +ha_platforms: + - climate + - sensor +ha_zeroconf: true +--- + +Integrates LOOKin devices into Home Assistant. + +[LOOKin](https://look-in.club/en/devices) focuses on providing devices that integrate with a local api and can be used internet free. + +### Supported devices + +LOOKin Remote2: internet free Wi-Fi+IR Smart Home Control + +{% include integrations/config_flow.md %} diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown deleted file mode 100644 index 0fd858ed8e5..00000000000 --- a/source/_integrations/lyft.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Lyft -description: How to integrate Lyft in Home Assistant -ha_category: - - Transport -ha_iot_class: Cloud Polling -ha_release: 0.41 -ha_domain: lyft -ha_platforms: - - sensor ---- - -
-The Lyft integration has been marked deprecated and is pending removal in Home Assistant Core 2021.10. -It is considered impossible to obtain the needed API keys to use this integration. -
- - -The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/docs). - -You must create an application [here](https://www.lyft.com/developers/apps) to obtain a `client_id` and `client_secret`. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lyft - client_id: CLIENT_ID - client_secret: CLIENT_SECRET -``` - -{% configuration %} -client_id: - description: "A client id obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/apps)." - required: true - type: string -client_secret: - description: "A client secret obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/apps)." - required: true - type: string -start_latitude: - description: The starting latitude for a trip. - required: false - type: float - default: "The latitude defined under the `homeassistant` key in `configuration.yaml`." -start_longitude: - description: The starting longitude for a trip. - required: false - type: float - default: "The longitude defined under the `homeassistant` key in `configuration.yaml`." -end_latitude: - description: The ending latitude for a trip. While `end_latitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time. - required: false - type: float -end_longitude: - description: The ending longitude for a trip. While `end_longitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time. - required: false - type: float -product_ids: - description: A list of Lyft product IDs. - required: false - type: [list, string] -{% endconfiguration %} - -A full configuration entry could look like the sample below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lyft - client_id: CLIENT_ID - client_secret: CLIENT_SECRET - start_latitude: 37.8116380 - start_longitude: -122.2648050 - end_latitude: 37.615223 - end_longitude: -122.389977 - product_ids: - - 'lyft' - - 'lyft_plus' -``` diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 203d8f5a8d1..be026171c05 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -42,7 +42,7 @@ type: description: "The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support#text-to-speech)." required: false type: string - default: "`ZiraRUS`" + default: "`JennyNeural`" rate: description: "Change the rate of speaking in percentage. Example values: `25`, `50`." required: false @@ -72,6 +72,8 @@ region:
Not all Azure regions support high-quality neural voices. Use [this overview](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions#neural-and-standard-voices) to determine the availability of standard and neural voices by region/endpoint. + +New users ([any newly created Azure Speech resource after August 31st, 2021](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/text-to-speech#migrate-to-neural-voice)) can only use neural voices. Existing resources can continue using standard voices through August 31st, 2024.
@@ -92,7 +94,7 @@ tts: api_key: YOUR_API_KEY language: en-gb gender: Male - type: George, Apollo + type: RyanNeural rate: 20 volume: -50 pitch: high diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 007593a6345..f36fecbd610 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -111,3 +111,28 @@ If using separate VLANs, make sure the 238.0.0.18:32100 and 238.0.0.18:32101 por For some routers "IGMP snooping" on the used wireless interface needs to be disabled to let the IGMP/multicast messages through. For Ubiquiti routers/access points the "Enable multicast enhancement (IGMPv3)" should be disabled. + +### Bypassing UDP multicast + +If UDP Multicast does not work in your setup (due to network limitations), this integration can be used in local polling mode. +Go to Settings -> Integrations -> on the already set up Motion Blinds integration click "configure" --> disable the "Wait for push" option (disabled by default). + +The default update interval of the Motion Blinds integration is every 10 minutes. When UDP multicast pushes do not work, this polling interval can be a bit high. +To increase the polling interval: +Go to Settings -> Integrations -> on the already set up Motion Blinds integration click more options (three dots) and select "System options" -> disable "polling for updates". +Now create an automation with as trigger a time pattern and select your desired polling time. +As the action select "Call service" and select "Update entity", select one of the motion blinds covers as entity. +You only have to create one automation with only one motion blind cover as entity, the rest will update at the same time. + +Example YAML automation for custom polling interval (every minute): +```yaml +alias: Motion blinds polling automation +mode: single +trigger: + - platform: time_pattern + minutes: "/1" +action: + - service: homeassistant.update_entity + target: + entity_id: cover.motion_shade +``` diff --git a/source/_integrations/nam.markdown b/source/_integrations/nam.markdown index adc704c521b..28cf384dfe7 100644 --- a/source/_integrations/nam.markdown +++ b/source/_integrations/nam.markdown @@ -20,6 +20,7 @@ The Nettigo Air Monitor integration allows you to read temperature, humidity, pr The integration currently has support for the following sensors: - BME280 +- BMP180 - BMP280 - DHT22 - HECA diff --git a/source/_integrations/nanoleaf.markdown b/source/_integrations/nanoleaf.markdown index ebd26c84ff6..3e365040c8d 100644 --- a/source/_integrations/nanoleaf.markdown +++ b/source/_integrations/nanoleaf.markdown @@ -13,9 +13,10 @@ ha_domain: nanoleaf ha_platforms: - light ha_zeroconf: true +ha_ssdp: true --- -The Nanoleaf integration allows you to control and monitor Nanoleaf Light Panels, Canvas and Shapes. +The Nanoleaf integration allows you to control and monitor Nanoleaf Light Panels, Canvas, Shapes and Elements. This integration does not support the Nanoleaf Remote and Essentials lights. diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown deleted file mode 100644 index d12a2266277..00000000000 --- a/source/_integrations/nello.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Nello -description: Instructions on how to integrate Nello intercom devices. -ha_category: - - Lock -ha_release: 0.52 -ha_iot_class: Cloud Polling -ha_codeowners: - - '@pschmitt' -ha_domain: nello -ha_platforms: - - lock ---- - -The `nello` platform allows you to control [Nello](https://www.nello.io) intercoms. - -To get started you need to create a secondary Nello account and authorize it to access your lock(s). - -
-Be aware that if you use your main account for Home Assistant you may not be able to use it with the App. -
- -## Configuration - -To add your Nello locks to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -lock: - - platform: nello - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username of your Nello account. - required: true - type: string -password: - description: The password of your Nello account. - required: true - type: string -{% endconfiguration %} - -## Events - -### Event `nello_bell_ring` - -Every time someone rings the bell, a `nello_bell_ring` event will be fired. - -Field | Description ------ | ----------- -`address` | Postal address of the lock. -`date` | Date when the event occurred. -`description` | Human readable string describing the event. -`location_id` | Nello ID of the location where the bell has been rung. -`short_id` | Shorter Nello ID. diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index bb99e78e8be..3e82ea209c7 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -49,7 +49,7 @@ Home Assistant is integrated with the following devices through the SDM API: - Display, Camera, and Doorbell Devices - The camera live stream is available as a `camera` entity - Device Triggers for use in automations such as Person detected, Motion detected and Doorbell pressed - - Example devices: All Google Nest Cam models, Google Nest Hello Video Doorbell, Google Nest Hub Max + - Example devices: All wired & battery Google Nest Cam models, wired & battery Nest Doorbells, and Google Nest Hub Max. You are in control of the information and capabilities exposed to Home Assistant. You can authorize a single device, multiple devices, or different levels of functionality such as motion events, live streams, for any particular device. The integration is flexible enough to adapt based on what you allow. @@ -379,10 +379,12 @@ logger: ## Camera -All Google Nest Cam models, Google Nest Hello Video Doorbell, Google Nest Hub Max expose a [CameraLiveStream](https://developers.google.com/nest/device-access/traits/device/camera-live-stream) via the SDM API, which returns a RTSP live stream which can be viewed from Home Assistant. +All Google Nest Cam models, Google Nest Doorbell models, Google Nest Hub Max expose a [CameraLiveStream](https://developers.google.com/nest/device-access/traits/device/camera-live-stream) via the SDM API. Given a camera named `Front Yard` then the camera is created with a name such as `camera.front_yard`. +Cameras either support an `RTSP` stream served via `HLS` by Home Assistant, or support a `WebRTC` stream. See the [Nest SDM API: CameraLiveStream Schema](https://developers.google.com/nest/device-access/traits/device/camera-live-stream) for details on which camera devices support which types of streams. WebRTC cameras do not support image previews or stream recording in Home Assistant as the stream communication is client-side, directly from the browser to the device. + ## Climate All Google Nest Thermostat models are exposed as a `climate` entity that use the [Thermostat Traits](https://developers.google.com/nest/device-access/traits/device/thermostat-hvac) in the SDM API. State changes to the thermostat are reported to Home Assistant through the Cloud Pubsub subscriber. diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index bee4a689649..21d655ee2d3 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -59,6 +59,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' required: false @@ -96,6 +100,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -127,6 +136,11 @@ optimistic: required: false type: boolean default: "`true` if no `state_topic` defined, else `false`." +payload_reset: + description: A special payload that resets the state to `None` when received on the `state_topic`. + required: false + type: string + default: '"None"' qos: description: The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. required: false @@ -150,6 +164,10 @@ unique_id: description: An ID that uniquely identifies this Number. If two Numbers have the same unique ID Home Assistant will raise an exception. required: false type: string +unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." required: false diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index 23924ddadfb..4fe6c4afa43 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -9,6 +9,7 @@ ha_domain: nut ha_config_flow: true ha_codeowners: - '@bdraco' + - '@ollo69' ha_zeroconf: true ha_platforms: - sensor diff --git a/source/_integrations/octoprint.markdown b/source/_integrations/octoprint.markdown index 33fb1da55a8..73eaa686e04 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -1,13 +1,17 @@ --- title: OctoPrint -description: Instructions on how to setup the OctoPrint in Home Assistant. +description: Integration between OctoPrint and Home Assistant. ha_category: - - Hub - Binary Sensor - Sensor +ha_config_flow: true ha_release: 0.19 +ha_codeowners: + - '@rfleming71' ha_iot_class: Local Polling ha_domain: octoprint +ha_zeroconf: true +ha_ssdp: true ha_platforms: - binary_sensor - sensor @@ -15,119 +19,30 @@ ha_platforms: [OctoPrint](https://octoprint.org/) is a web interface for your 3D printer. This is the main integration to integrate OctoPrint sensors. -There is currently support for the following device types within Home Assistant: +{% include integrations/config_flow.md %} -- [Binary Sensor](#binary-sensor) -- [Sensor](#sensor) +### API Key -## Configuration +The Octoprint integration will attempt to register itself via the [application keys plugin](https://docs.octoprint.org/en/master/bundledplugins/appkeys.html). After submitting the configuration UI in Home Assistant, open the Octoprint UI and click allow on the prompt. -To get started with the OctoPrint API, please follow the directions on their [site](https://docs.octoprint.org/en/master/api/general.html). Once OctoPrint is configured you will need to add your API key and host to your `configuration.yaml`. +## Binary Sensor -```yaml -octoprint: - host: YOUR_OCTOPRINT_HOST - api_key: YOUR_API_KEY -``` +The OctoPrint integration provides the following binary sensors: -{% configuration %} -host: - description: IP address or hostname of Octoprint host. - required: true - type: string -api_key: - description: The retrieved API key. - required: true - type: string -name: - description: The name for this printer, must be unique if multiple printers are defined. - required: false - type: string - default: OctoPrint -port: - description: The port of the Octoprint server. - required: false - type: integer - default: 80 -path: - description: The URL path of the Octoprint instance. - required: false - type: string - default: / -ssl: - description: Enable or disable SSL/TLS. - required: false - type: boolean - default: false -bed: - description: If the printer has a heated bed. - required: false - type: boolean - default: false -number_of_tools: - description: Number of temperature adjustable tools, e.g., nozzle. - required: false - type: integer - default: 0 -sensors: - description: Configuration for the sensors. - required: false - type: map - keys: - monitored_conditions: - description: The sensors to activate. - type: list - default: all (`Current State`, `Temperatures`, `Job Percentage`, `Time Elapsed`, `Time Remaining`) - keys: - "Current State": - description: Text of current state. - "Temperatures": - description: Temperatures of all available tools, e.g., `print`, `head`, `print bed`, etc. These will be displayed as `tool0`, `tool1`, or `toolN` please refer to your OctoPrint frontend to associate the tool number with an actual device. - "Job Percentage": - description: Percentage of the job. - "Time Elapsed": - description: Time elapsed on current print job, in seconds. - "Time Remaining": - description: Time remaining on current print job, in seconds. -binary_sensors: - description: Configuration for the binary sensors. - required: false - type: map - keys: - monitored_conditions: - description: The sensors to activate. - type: list - default: all (`Printing`, `Printing Error`) - keys: - "Printing": - description: State of the printer. - "Printing Error": - description: Error while printing. -{% endconfiguration %} +- Printing +- Print Error -
+## Sensor -If you are tracking temperature it is recommended to set `bed` and/or `number_of_tools` in your octoprint configuration. This will allow the octoprint sensors to load if the printer is offline during Home Assistant startup. +The OctoPrint integration lets you monitor various states of your 3D printer and its print jobs. +Supported sensors: -
+- Current Printer State +- Job Completed Percentage +- Estimated Finish Time +- Estimated Start Time -Example with multiple printers: - -```yaml -octoprint: - - host: YOUR_OCTOPRINT_HOST - api_key: YOUR_API_KEY - name: PRINTER_NAME_1 - number_of_tools: 2 - sensors: - monitored_conditions: - - 'Current State' - - 'Job Percentage' - - host: YOUR_OCTOPRINT_HOST - api_key: YOUR_API_KEY - name: PRINTER_NAME_2 - number_of_tools: 1 -``` +## Camera If the OctoPrint host is equipped with a web camera it is possible to add this as well. @@ -138,38 +53,3 @@ camera: still_image_url: http://YOUR_OCTOPRINT_HOST_IP/webcam/?action=snapshot mjpeg_url: http://YOUR_OCTOPRINT_HOST_IP/webcam/?action=stream ``` - -## Binary Sensor - -The `octoprint` binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -binary_sensor: - - platform: octoprint - monitored_conditions: - - Printing - - Printing Error -``` - -{% configuration %} -monitored_conditions: - description: States to monitor. - required: true - type: list - keys: - printing: - description: State of the printer. - printing error: - description: Error while printing. -name: - description: The name of the sensor. - required: false - type: string - default: OctoPrint -{% endconfiguration %} - -## Sensor - -The `octoprint` sensor platform let you monitor various states of your 3D printer and its print jobs. diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index c147abd29bf..2b739b05ae4 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -32,6 +32,7 @@ Each 1-wire component data sheet describes the different properties the componen | -------|:-----|:-----| | 12 | [DS2406](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) | 2 sensed (sensed.A/B) [4](#note_4) | | 29 | [DS2408](https://datasheets.maximintegrated.com/en/ds/DS2408.pdf) | 8 sensed (sensed.0-7) [4](#note_4) | +| 3A | [DS2413](https://datasheets.maximintegrated.com/en/ds/DS2413.pdf) | 2 sensed (sensed.A/B) [4](#note_4) | #### Sensors: @@ -55,6 +56,7 @@ Each 1-wire component data sheet describes the different properties the componen | 05 | [DS2405](https://datasheets.maximintegrated.com/en/ds/DS2405.pdf) | 1 PIO [4](#note_4) | | 12 | [DS2406](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) | 2 latches (latch.A/B) and 2 PIOs (PIO.A/B) [4](#note_4) | | 29 | [DS2408](https://datasheets.maximintegrated.com/en/ds/DS2408.pdf) | 8 latches (latch.0-7) and 8 PIOs (PIO.0/7) [4](#note_4) | +| 3A | [DS2413](https://datasheets.maximintegrated.com/en/ds/DS2413.pdf) | 2 PIOs (PIO.A/B) [4](#note_4) | #### Bridges: diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index dad99333066..108355acc0b 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -11,10 +11,12 @@ ha_config_flow: true ha_codeowners: - '@danielhiversen' ha_platforms: + - binary_sensor - cover + - sensor --- -The `opengarage` cover platform lets you control the open-source [OpenGarage.io](https://opengarage.io/) device through Home Assistant. +The OpenGarage integration lets you control the open-source [OpenGarage.io](https://opengarage.io/) device through Home Assistant. {% include integrations/config_flow.md %} diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index 253f0a25410..1f1fa3cf57e 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -79,6 +79,8 @@ As this platform supports different types of GPIO pinouts for difference Orange | `zeroplus2` | Supports the Orange Pi Zero Plus 2 | | `duo` | Supports the NanoPi Duo | | `neocore2` | Supports the NanoPi Neocore 2 | +| `pi4` | Supports the Orange pi 4 | +| `pi4B` | Supports the Orange pi 4B | ## Additional steps @@ -102,6 +104,8 @@ This integration uses interrupts to catch changes on your pins. However, it depe You can find the pinouts of all the supported Orange Pi devices [here](https://pascalroeleven.nl/2020/04/13/orange-pi-gpio-pinouts/). The pinouts for the [NanoPi Duo](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_Duo) and [NanoPi NEO Core2](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO_Core2) can be found on the [FriendlyARM wiki](http://wiki.friendlyarm.com/). For example: If a pin is named PA01, the pin bank is PA. If this pin bank is in the following table after your chipset, this particular pin is supported. +For the orange pi4 and pi4B, using the Rockchip RK3399 chip, a manual and technical doc can be found [here](https://drive.google.com/drive/folders/1QMU5n-7fCx28cQPH_lu2L0wrFWeC3G45). + | Chipset | Pin banks which support external interrupts | | ------- | ------------------------------------------- | | H2+ | PA, PG, PL | @@ -123,3 +127,4 @@ In the table below you can see the number of usable pins for sensors per device. | H6 (Lite 2, One Plus) | 3/17 | | H6 (PI 3) | 8/17 | | A64 (Win Plus) | 18/28 | +| RK3399 (PI4, PI4B) | 28/28 | diff --git a/source/_integrations/ozw.markdown b/source/_integrations/ozw.markdown index 1ad01cd2f9a..9685123f0dd 100644 --- a/source/_integrations/ozw.markdown +++ b/source/_integrations/ozw.markdown @@ -1,5 +1,5 @@ --- -title: OpenZWave (beta) +title: OpenZWave (deprecated) description: Instructions on how to integrate OpenZWave with Home Assistant. ha_category: - Switch @@ -22,14 +22,15 @@ ha_platforms: - switch --- -This integration allows you to utilize OpenZWave's ozwdaemon to control a Z-Wave network over MQTT. -
- As of mid-2021 this integration, as well as the upstream ozwdaemon project, are not currently maintained. If you're starting out with Z-Wave in Home Assistant, we recommend that you use [the Z-Wave JS integration](/integrations/zwave_js). + This integration is deprecated. We recommend using [the Z-Wave JS integration](/integrations/zwave_js). + + The OpenZWave integration will no longer receive any updates. The technical dependencies may render this integration unusable in the future, at which time it may be removed.
+This integration allows you to utilize OpenZWave's ozwdaemon to control a Z-Wave network over MQTT. ## Requirements diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 6347beaac64..8e9343bfeed 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -14,6 +14,7 @@ ha_domain: plex ha_platforms: - media_player - sensor +ha_zeroconf: true --- The Plex integration allows you to connect Home Assistant to a [Plex Media Server](https://plex.tv). Once configured, actively streaming [Plex Clients](https://www.plex.tv/apps-devices/) show up as [Media Players](/integrations/media_player/) and report playback status and library sizes via [Sensors](/integrations/sensor/) in Home Assistant. Media Players will allow you to control media playback and see the current playing item. @@ -63,7 +64,7 @@ Alternatively, you can manually configure a Plex server connection by selecting The activity sensor provides a count of users currently watching media from the Plex server. Clicking the sensor shows details for the active users and media streams. -The library sensors show a count of items in each library. Depending on the library contents, the sensor will show extra detail in its attributes. For example, a library sensor for TV shows will represent the total number of episodes in the library and its attributes will also report the number of shows and seasons it contains. +The library sensors show a count of items in each library. Depending on the library contents, the sensor will show extra detail in its attributes. For example, a library sensor for TV shows will represent the total number of episodes in the library and its attributes will also report the number of shows and seasons it contains. The last added media item (movie, album, or episode) and a timestamp showing when it was added to its respective library are also provided. In addition to the item count, the last added media item (movie, album, or episode) and a timestamp showing when it was added are also provided with each library sensor. @@ -103,9 +104,14 @@ By default, the Plex integration will create Media Player entities for all local ### Service `media_player.play_media` -Plays a song, album, artist, playlist, TV show/season/episode, movie, or video on a connected client. +Play media hosted on a Plex server on a Plex client or other supported device. -Required fields within the `media_content_id` payloads are marked as such, others are optional. +Required fields within the `media_content_id` payloads are marked as such, others are optional. There are special parameters that can be added to any query: + +- `shuffle`: Shuffles the playback order of the media. Accepts `1` or `true` to enable. +- `allow_multiple`: A search must find one specific item to succeed. This parameter accepts multiple matches in a search and enqueues all found items for playback. Accepts `1` or `true` to enable. + +Simplified examples are provided for [music](#music), [TV episodes](#tv-episode), and [movies](#movie). See [advanced searches](#advanced-searches) for complex/smart search capabilities.
@@ -118,7 +124,7 @@ Refer to these links if casting to non-Plex players:
- The integration must be configured with a token for playback commands to work. This can occur if using the `List of IP addresses and networks that are allowed without auth` option on the Plex server. If that feature is required, it's recommended to configure the integration with that feature temporarily disabled. +The integration must be configured with a token for playback commands to work. This can occur if using the `List of IP addresses and networks that are allowed without auth` option on the Plex server. If that feature is required, it's recommended to configure the integration with that feature temporarily disabled.
@@ -127,7 +133,7 @@ Refer to these links if casting to non-Plex players: | Service data attribute | Description | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity_id` | `entity_id` of the client | -| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `artist_name` (Required)
  • `album_name`
  • `track_name`
  • `track_number`
  • `shuffle` (0 or 1)
| +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `artist_name` or `artist.title`
  • `album_name` or `album.title`
  • `track_name` or `track.title`
  • `track_number` or `track.index`
  • `shuffle` (0 or 1)
  • `allow_multiple` (0 or 1)
| | `media_content_type` | `MUSIC` | ##### Examples: @@ -163,7 +169,7 @@ media_content_id: '{ "playlist_name": "The Best of Disco", "shuffle": "1" }' | Service data attribute | Description | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity_id` | `entity_id` of the client | -| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `show_name` (Required)
  • `season_number`
  • `episode_number`
  • `shuffle` (0 or 1)
| +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `show_name` or `show.title`
  • `season_number` or `season.index`
  • `episode_number` or `episode.index`
  • `shuffle` (0 or 1)
  • `allow_multiple` (0 or 1)
| | `media_content_type` | `EPISODE` | ##### Examples: @@ -184,12 +190,24 @@ media_content_id: '{ "library_name": "Kid TV", "show_name": "Sesame Street", "sh | Service data attribute | Description | | ---------------------- | ------------------------------------------------------------------------------------------------------- | | `entity_id` | `entity_id` of the client | -| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `title` (Required)
  • `` (optional)
| +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `title`
| | `media_content_type` | `movie` | -For movies it's usually sufficient to provide the title. However, if the title you provide has multiple matches (such as with remakes), more search keys may be necessary. These optional keys can be included in the `media_content_id` JSON payload to restrict the search: +##### Examples: -* `unwatched`: Restrict search to unwatched items only (`True`, `False`) +```yaml +entity_id: media_player.plex_player +media_content_type: movie +media_content_id: '{ "library_name": "Adult Movies", "title": "Blade" }' +``` + +#### Advanced Searches + +Instead of searching for a specific known piece of media, many additional parameters are available to run more powerful searches. This can also be used when a simple search for a title has multiple matches, such as with movie remakes. + +These are examples of optional keys that can be included in the `media_content_id` JSON payload customize the search: + +* `unwatched`: Restrict search to unwatched items only (`true`, `false`) * `actor`: Restrict search for movies that include a specific actor * `collection`: Restrict search within a named Plex collection ("Back to the Future", "Indiana Jones") * `contentRating`: Restrict search to a specific content rating ("PG", "R") @@ -200,27 +218,43 @@ For movies it's usually sufficient to provide the title. However, if the title y * `resolution`: Restrict search to a specific video resolution (480, 720, 1080, "4k") * `year`: Restrict search to a specific year -##### Examples: +More parameters and additional details can be found in the `plexapi` library [documentation](https://python-plexapi.readthedocs.io/en/latest/modules/library.html#plexapi.library.LibrarySection.search). -```yaml -entity_id: media_player.plex_player -media_content_type: movie -media_content_id: '{ "library_name": "Adult Movies", "title": "Blade" }' -``` +##### Examples -```yaml -entity_id: media_player.plex_player -media_content_type: movie -media_content_id: '{ "library_name": "Adult Movies", "title": "The Manchurian Candidate", year=1962 }' -# Would find the original instead of the 2004 remake -``` +Below are examples of advanced searches. All examples show what can be sent in the `media_content_id` parameter. -"Lazy" searches are also possible: -```yaml -entity_id: media_player.plex_player -media_content_type: movie -media_content_id: '{ "library_name": "Adult Movies", "title": "die hard", year=1995 }' -# Would find the sequel, "Die Hard: With a Vengeance" +Note that some searches may require `"maxresults": 1` to limit the result to a single item. However, an "item" may be a group of media, such as an album, season, artist, show, etc. + +The search will attempt to guess the type of media based on the search parameters by using the most specific media type provided. For example, a search using `artist.title` and `album.year` will search for albums for the artist that were released in a specific year. If you add `track.title` to the search, it will instead try to find the track. You may specify the type of media to search for with the `libtype` parameter which can be one of `movie`, `episode`, `season`, `show`, `track`, `album`, or `artist`. This could be useful if searching for an album where you only know the name of a specific track (see example below). + +```json +# Play the original instead of the 2004 remake: +{ "library_name": "Movies", "title": "The Manchurian Candidate", "year": 1962 } + +# "Lazy" searches are also possible (would find the sequel, "Die Hard: With a Vengeance"): +{ "library_name": "Movies", "title": "die hard", "year": 1995 } + +# Play for an artist's album where only a track name is known: +{ "library_name": "Music", "artist.title": "Stevie", "track.title": "Higher Ground" } + +# Play all albums with "orange" in the title: +{ "library_name": "Music", "album.title": "orange", "allow_multiple": true } + +# Watch the most recently added movie +{ "library_name": "Movies", "sort": "addedAt:desc", "maxresults": 1 } + +# Play an unwatched movie from the "Bond" collection which was released in the 2000s +{ "library_name": "Movies", "collection": "Bond", "decade": 2000, "unwatched": true } + +# Play the most recently added TV show which has been partially watched +{ "library_name": "TV Shows", "inProgress": true, "sort": "addedAt:desc", "maxresults": 1 } + +# Listen to a random electronic album which was added over 3 years ago but hasn't been listened to for at least 3 months +{ "library_name": "Music", "addedAt<<": "3y", "album.genre": "Electronic", "album.lastViewedAt<<": "3mon", "sort": "random", "maxresults": 1 } + +# Watch the worst rated movie from the 2000s starring either Nicolas Cage or Danny Devito +{ "library_name": "Movies", "actor": ["Nicolas Cage", "Danny DeVito"], "decade": 2000, "sort": "audienceRating:asc", "maxresults": 1 } ``` ### Compatibility diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index fbcb1cbdaa8..65ce3309a14 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -34,64 +34,86 @@ Note that some entities are disabled by default. If you are missing a sensor or ## Services +Services accept either device IDs or entity IDs, depending on the nature of the service: + +- Services that require a device ID as a target: + - `rainmachine.pause_watering` + - `rainmachine.push_weather_data` + - `rainmachine.stop_all` + - `rainmachine.unpause_watering` +- Services that require an entity ID as a target (note that the correct entity ID type must be provided, such as a program for a program-related service) + - `rainmachine.disable_program` + - `rainmachine.disable_zone` + - `rainmachine.enable_program` + - `rainmachine.enable_zone` + - `rainmachine.start_program` + - `rainmachine.start_zone` + - `rainmachine.stop_program` + - `rainmachine.stop_zone` + ### `rainmachine.disable_program` Disable a RainMachine program. This will mark the program switch as `Unavailable` in the UI. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `program_id ` | no | The program to disable | - ### `rainmachine.disable_zone` Disable a RainMachine zone. This will mark the zone switch as `Unavailable` in the UI. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `zone_id ` | no | The program to disable | - ### `rainmachine.enable_program` Enable a RainMachine program. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `program_id ` | no | The program to enable | - ### `rainmachine.enable_zone` Enable a RainMachine zone. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `zone_id ` | no | The zone to enable | - ### `rainmachine.pause_watering` Pause all watering activities for a number of seconds. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `seconds` | no | The number of seconds to pause | +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------ | +| `seconds` | no | The number of seconds to pause | + +### `rainmachine.push_weather_data` + +Push Weather Data from Home Assistant to the RainMachine device. + +Local Weather Push service should be enabled from Settings > Weather > Developer tab for RainMachine to consider the values being sent. Units must be sent in metric; no conversions are performed by the integration. Note: RAIN and QPF values shouldn't be sent as cumulative values but the measured/forecasted values for each hour or day. The RainMachine Mixer will sum all RAIN or QPF values in the current day to have the day total RAIN or QPF. + +See details of RainMachine API here: + + +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | +| `timestamp` | no | UNIX Timestamp for the Weather Data. If omitted, the RainMachine device's local time at the time of the call is used. | +| `mintemp` | no | Minimum Temperature (°C) | +| `maxtemp` | no | Maximum Temperature (°C) | +| `temperature` | no | Current Temperature (°C) | +| `wind` | no | Wind Speed (m/s) | +| `solarrad` | no | Solar Radiation (MJ/m²/h) | +| `et` | no | Evapotranspiration (mm) | +| `qpf` | no | Quantitative Precipitation Forecast (mm), or QPF | +| `rain` | no | Measured Rainfail (mm) | +| `minrh` | no | Min Relative Humidity (%RH) | +| `maxrh` | no | Max Relative Humidity (%RH) | +| `condition` | no | Current weather condition code (WNUM). See [here][wnum reference] for options. | +| `pressure` | no | Barametric Pressure (kPa) | +| `dewpoint` | no | Dew Point (°C) | ### `rainmachine.start_program` -Start a RainMachine program. - -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `program_id ` | no | The program to start | +Start a RainnMachine program. ### `rainmachine.start_zone` Start a RainMachine zone for a set number of seconds. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `zone_id` | no | The zone to start | -| `zone_run_time` | yes | The number of seconds to run; defaults to 60 seconds | +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------- | +| `zone_run_time` | yes | The number of seconds to run; defaults to 60 seconds | ### `rainmachine.stop_all` @@ -101,18 +123,10 @@ Stop all watering activities. Stop a RainMachine program. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `program_id ` | no | The program to stop | - ### `rainmachine.stop_zone` Stop a RainMachine zone. -| Service Data Attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------------| -| `zone_id ` | no | The zone to stop | - ### `rainmachine.unpause_watering` Unpause all watering activities. @@ -129,3 +143,5 @@ After Home Assistant loads, new switches will be added for every enabled program - Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for) Programs and zones are linked. While a program is running, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app). + +[wnum reference]: https://github.com/sprinkler/rainmachine-developer-resources/blob/d47e1ad59dee59e34094ad41636ae289275eb973/sdk-parsers/RMDataFramework/rmWeatherData.py#L13 diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 0eff8d6d93f..3a8f822a855 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -7,6 +7,8 @@ ha_release: pre 0.7 ha_quality_scale: internal ha_domain: recorder ha_iot_class: Local Push +ha_codeowners: + - '@home-assistant/core' --- The `recorder` integration is responsible for storing details in a database, which then are handled by the [`history`](/integrations/history/) integration. diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown index 0b1428a22bf..5adcd8e61ef 100644 --- a/source/_integrations/scene.mqtt.markdown +++ b/source/_integrations/scene.mqtt.markdown @@ -59,6 +59,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: Icon for the scene. required: false diff --git a/source/_integrations/screenlogic.markdown b/source/_integrations/screenlogic.markdown index c2770291cf1..f94235da592 100644 --- a/source/_integrations/screenlogic.markdown +++ b/source/_integrations/screenlogic.markdown @@ -17,6 +17,7 @@ ha_domain: screenlogic ha_platforms: - binary_sensor - climate + - light - sensor - switch --- diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown index 73229ce0eb0..d9b03afeb33 100644 --- a/source/_integrations/select.mqtt.markdown +++ b/source/_integrations/select.mqtt.markdown @@ -63,6 +63,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' required: false @@ -100,6 +104,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index 1e382953f78..a1acc6a5f26 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -55,6 +55,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -97,6 +101,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None expire_after: description: Defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. required: false diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown index fe03fddffc6..4ff4d2e04b5 100644 --- a/source/_integrations/sensor.rest.markdown +++ b/source/_integrations/sensor.rest.markdown @@ -65,7 +65,11 @@ name: type: string default: REST Sensor device_class: - description: Sets the [class of the device](/integrations/sensor/), changing the device state and icon that is displayed on the frontend. + description: Sets the [class of the device](/integrations/sensor#device-class), changing the device state and icon that is displayed on the frontend. + required: false + type: string +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 value_template: diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index c9018056afe..7fc14341a9c 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -27,7 +27,7 @@ There is currently support for the following device types within Home Assistant: - **Freeze Sensor**: reports on the freeze sensor temperature*. - **Glass Break Sensor**: reports on the glass breakage sensor status*. - **Lock**: reports on `Door Locks` and can be used to lock and unlock a lock. -- **Motion Sensor**: reports on motion detected. +- **Motion Sensor**: reports on motion detected*. - **Siren**: reports on the siren status*. - **Smoke Detector**: reports on the smoke sensor status*. - **Water Sensor**: reports on water sensor status*. @@ -36,6 +36,28 @@ There is currently support for the following device types within Home Assistant: {% include integrations/config_flow.md %} +## Getting an Authorization Code + +
+Because of a technical limitation, the below instructions will not work for iOS users as-is. It is recommended that you set up the SimpliSafe integration from a desktop browser. If you must use an iOS device, please ensure that the SimpliSafe app is not installed before beginning; the app can be re-installed after the integration is set up. +
+ +Starting in 2021, SimpliSafe has moved to a new authentication mechanism via its web app. Below are instructions on retrieving the authorization code needed to finish setting the integration up. + +1. Initiate adding the integration via the instructions above. +2. When prompted, click the link that opens the SimpliSafe web app. +3. Input your SimpliSafe credentials. You will see "Verification Pending" – leave this browser tab open. +4. Check your email for a message from SimpliSafe. When you have received that email, click "Verify Device" – note that this will open a second browser tab/window. +5. After the verification is successful, return to the first browser tab/window. The browser will show an error about not being able to navigate to the page; ignore it. + +At this stage, take a look at the address bar and note the `code` parameter at the very end of the URL: + +```txt +com.simplisafe.mobile://auth.simplisafe.com/ios/com.simplisafe.mobile/callback?code= +``` + +Copy/paste this code parameter into Home Assistant to finish setting up the integration. + ## Services Note that the `system_id` parameter required by the below service calls can be discovered @@ -45,7 +67,8 @@ entity. ### `simplisafe.clear_notifications` Clear any existing notifications within the SimpliSafe cloud; this will mark existing -notifications as "read" in the SimpliSafe web and mobile apps. +notifications as "read" in the SimpliSafe web and mobile apps, as well as prevent them +from triggering future `SIMPLISAFE_NOTIFICATION` events. ### `simplisafe.remove_pin` @@ -91,6 +114,69 @@ For any property denoting a volume, the following values should be used: ## Events +### `SIMPLISAFE_EVENT` + +`SIMPLISAFE_EVENT` events represent events that appear on the timeline of the SimpliSafe +web and mobile apps. When received, they come with event data that contains the +following keys: + +* `changed_by`: the PIN that triggered the event (if appropriate) +* `event_type`: the type of event +* `info`: a human-friendly string describing the event in more detail +* `sensor_name`: the sensor that triggered the event (if appropriate) +* `sensor_serial`: the serial number of the sensor that triggered the event (if appropriate) +* `sensor_type`: the type of sensor that triggered the event (if appropriate) +* `system_id`: the system ID to which the event belongs +* `timestamp`: the UTC datetime at which the event was received + +For example, when someone rings the doorbell, a +`SIMPLISAFE_EVENT` event will fire with the following event data: + +```python +{ + "event_type": "SIMPLISAFE_EVENT", + "data": { + "last_event_changed_by": "", + "last_event_type": "doorbell_detected", + "last_event_info": "Someone is at your \"Front Door\"", + "last_event_sensor_name": "Front Door", + "last_event_sensor_serial": "", + "last_event_sensor_type": "doorbell", + "system_id": [systemid], + "last_event_timestamp": "2021-01-28T22:01:32+00:00" + }, + "origin": "LOCAL", + "time_fired": "2021-01-28T22:01:37.478539+00:00", + "context": { + "id": "[id]", + "parent_id": null, + "user_id": null + } +} +``` + +`last_event_type` can have the following values: + +* `automatic_test` +* `camera_motion_detected` +* `doorbell_detected` +* `device_test` +* `secret_alert_triggered` +* `sensor_paired_and_named` +* `user_initiated_test` + +To build an automation using one of these, use `SIMPLISAFE_EVENT` +as an event trigger, with `last_event_type` as the `event_data`. +For example, the following will trigger when the doorbell rings: + +```yaml +trigger: + - platform: event + event_type: SIMPLISAFE_EVENT + event_data: + last_event_type: doorbell_detected +``` + ### `SIMPLISAFE_NOTIFICATION` `SIMPLISAFE_NOTIFICATION` events represent system notifications that would appear in the diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 7e6561ebebe..f4a8a75d15f 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -25,6 +25,13 @@ The `sonos` integration allows you to control your [Sonos](https://www.sonos.com {% include integrations/config_flow.md %} +## Feature controls + +Speaker-level features are exposed as `switch` entities which allow direct control and indicate if the features are currently enabled. + +- **All devices**: Crossfade, Status Light, Touch Controls +- **Home theater devices**: Night Sound & Speech Enhancement + ## Battery support Battery sensors are fully supported for the `Sonos Roam` and `Sonos Move` devices on S2 firmware. `Sonos Move` speakers still on S1 firmware are supported but may update infrequently. @@ -181,21 +188,6 @@ Update an existing Sonos alarm. | `enabled` | yes | Boolean for whether or not to enable this alarm. | `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players. -### Service `sonos.set_option` - -Set Sonos speaker options. - -Night Sound and Speech Enhancement modes are only supported when playing from the TV source of products like Sonos Playbar and Sonos Beam. Other speaker types will ignore these options. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of `entity_id`s that will have their options set. -| `buttons_enabled` | yes | Boolean to control the functioning of hardware buttons on the device. -| `crossfade` | yes | Boolean to control crossfading between songs. -| `night_sound` | yes | Boolean to control Night Sound mode. -| `speech_enhance` | yes | Boolean to control Speech Enhancement mode. -| `status_light` | yes | Boolean to control the Status (LED) Light. - ### Service `sonos.play_queue` Starts playing the Sonos queue. diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index 182df4edf55..ff4b94aa29d 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -37,6 +37,7 @@ The following integrations are automatically discovered by the SSDP integration: - [Keenetic NDMS2 Router](/integrations/keenetic_ndms2/) - [Konnected.io](/integrations/konnected/) - [Logitech Harmony](/integrations/harmony/) + - [OctoPrint](/integrations/octoprint/) - [Philips Hue](/integrations/hue/) - [Roku](/integrations/roku/) - [Samsung SyncThru Printer](/integrations/syncthru/) diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown index ac83b69fb21..8e792ebe977 100644 --- a/source/_integrations/stookalert.markdown +++ b/source/_integrations/stookalert.markdown @@ -8,31 +8,13 @@ ha_release: 0.104 ha_iot_class: Cloud Polling ha_codeowners: - '@fwestenberg' + - '@frenck' ha_domain: stookalert +ha_config_flow: true ha_platforms: - binary_sensor --- -The `stookalert` sensor platform queries the [RIVM Stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. +The Stookalert integration queries the [RIVM Stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. -## Configuration - -To enable the platform, add the following lines to your `configuration.yaml` file: - -```yaml -binary_sensor: - - platform: stookalert - province: YOUR_NL_PROVINCE -``` - -{% configuration %} -province: - description: A province to use for the binary sensor's state. Currently only provinces in the Netherlands are supported. Valid values are `Drenthe`, `Flevoland`, `Friesland`, `Gelderland`, `Groningen`, `Limburg`, `Noord-Brabant`, `Noord-Holland`, `Overijssel`, `Utrecht`, `Zeeland` or `Zuid-Holland`. - required: true - type: string -name: - description: The sensor name to use in the frontend. - required: false - default: "Stookalert" - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index 28ff0338d34..296121f9d2c 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -65,6 +65,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false @@ -102,6 +106,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false diff --git a/source/_integrations/switch.rest.markdown b/source/_integrations/switch.rest.markdown index 1457f6986ad..87784976f55 100644 --- a/source/_integrations/switch.rest.markdown +++ b/source/_integrations/switch.rest.markdown @@ -40,6 +40,10 @@ name: required: false type: string default: REST Switch +device_class: + description: Sets the [class of the device](/integrations/switch/#device-class), changing the device state and icon that is displayed on the frontend. + required: false + type: string timeout: description: Timeout for the request. required: false diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index c3753dfbaad..56c068f290f 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -41,6 +41,10 @@ This integration provides the following sensors: | Name | Description | | ---------------------- | --------------------------------------------------- | | Battery | Battery level of the device | +| Displays Connected | Number of displays connected | +| Display Resolution X | Display resolution (across) | +| Display Resolution Y | Display resolution (down) | +| Display Refresh Rate | Display refresh rate | | CPU Speed | The current CPU speed | | Filesystem(s) | Space used for each drive letter / filesystem mount | | GPU Memory Free | GPU memory free in GB | diff --git a/source/_integrations/tag.mqtt.markdown b/source/_integrations/tag.mqtt.markdown index de36f509b0b..85cf5dd2e1f 100644 --- a/source/_integrations/tag.mqtt.markdown +++ b/source/_integrations/tag.mqtt.markdown @@ -29,6 +29,10 @@ device: required: true type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." required: false diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index d8fa995b334..8e0cfa3d044 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -147,10 +147,6 @@ binary_sensor: required: false type: map keys: - icon: - description: Defines a template for the icon of the sensor. - required: false - type: template picture: description: Defines a template for the entity picture of the sensor. required: false @@ -228,13 +224,17 @@ select: type: map keys: name: - description: Defines a template to get the name of the sensor. + description: Defines a template to get the name of the entity. 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. + description: An ID that uniquely identifies this entity. 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 entity. + required: false + type: template availability: description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns either of `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"` or a non-zero number, the entity is `available`. If the template returns any other value, the device will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed. required: false diff --git a/source/_integrations/toon.markdown b/source/_integrations/toon.markdown index cd9b8f0a1f1..9f906c50990 100644 --- a/source/_integrations/toon.markdown +++ b/source/_integrations/toon.markdown @@ -10,8 +10,6 @@ ha_category: ha_release: 0.56 ha_iot_class: Cloud Push ha_config_flow: true -ha_codeowners: - - '@frenck' ha_domain: toon ha_dhcp: true ha_platforms: diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 561426e7317..cceb1187300 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -10,10 +10,12 @@ ha_category: - Light - Sensor - Switch + - Fan ha_domain: tradfri ha_homekit: true ha_platforms: - cover + - fan - light - sensor - switch @@ -80,4 +82,3 @@ Do not use the `api_key` variable in `configuration.yaml`. The API key is only n ## Known limitations - The TRÅDFRI Shortcut button, Remotes and motion sensor only send information about their battery status, no events, to Home Assistant and thus can't be used to automate with. If you want to automate with these devices, you need to use something like [ZHA](/integrations/zha/). - diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 25321c71b8d..cbf196ed5da 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -1,12 +1,21 @@ --- title: Tuya -description: Instructions on how to setup the Tuya hub within Home Assistant. +description: Instructions on how to set up the Tuya hub within Home Assistant. ha_category: + - Binary Sensor + - Camera - Climate + - Cover + - Doorbell - Fan + - Humidifier - Light + - Number - Scene + - Select + - Siren - Switch + - Vacuum ha_iot_class: Cloud Push ha_release: 0.74 ha_config_flow: true @@ -15,32 +24,36 @@ ha_codeowners: - '@Tuya' - '@zlinoliver' - '@METISU' - - '@tsutsuku' + - '@frenck' ha_platforms: + - binary_sensor + - camera - climate + - cover - fan + - humidifier - light + - number - scene + - sensor + - select + - siren - switch + - vacuum +ha_dhcp: true --- -The Tuya integration allows integrating all Powered by Tuya devices you have added to the Tuya Smart and Tuya Smart Life apps. This integration is officially maintained by Tuya. +The Tuya integration integrates all Powered by Tuya devices you have added to the Tuya Smart and Tuya Smart Life apps. Tuya officially maintains this integration. -## Supported platforms - -- **Climate**: air conditioner, heater, thermostat. -- **Fan**: fan, air purifier, humidifier, dehumidifier. -- **Light**: light, light strip, ambient light, light string, humidifier's light, ceiling light. -- **Scene**: smart scene. -- **Switch**: switch, socket, power strip, smart kettle, breaker, pet water feeder, air purifier, diffuser. +All Home Assistant platforms are supported by the Tuya integration, except the lock and remote platform. ## Configuration of the Tuya IoT Platform ### Prerequisites -- Your devices need to first be added in the [Tuya Smart or Smart Life app](https://developer.tuya.com/en/docs/iot/tuya-smart-app-smart-life-app-advantages?id=K989rqa49rluq#title-1-Download). +- Your devices need first to be added in the [Tuya Smart or Smart Life app](https://developer.tuya.com/en/docs/iot/tuya-smart-app-smart-life-app-advantages?id=K989rqa49rluq#title-1-Download). - You will also need to create an account in the [Tuya IoT Platform](https://iot.tuya.com/). -This is a separate account to the one you made for the app. You cannot log in with your app's credentials. +This is a separate account from the one you made for the app. You cannot log in with your app's credentials. ### Create a project @@ -49,7 +62,7 @@ This is a separate account to the one you made for the app. You cannot log in wi 3. On the page that appears, click `Create Cloud Project`. 4. In the `Create Cloud Project` dialog box, configure `Project Name`, `Description`, `Industry`, and `Data Center`. For the `Development Method` field, select `Smart Home` from the dropdown list. For the `Data Center` field, select the zone you are located in. ![](/images/integrations/tuya/image_001.png) -5. Click `Create` to continue with project configuration. +5. Click `Create` to continue with the project configuration. 6. In Configuration Wizard, make sure you add `Device Status Notification` API. The list of API should look like this: ![](/images/integrations/tuya/image_002.png) 7. Click `Authorize`. diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 0c1c00bb4d5..0bc9c0ccca0 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -64,6 +64,14 @@ If Home Assistant and the UniFi controller are running on separate machines or V ## Services +### Service unifi.reconnect_client + +Try to get a wireless client to reconnect to the network. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------- | +| `device_id` | No | String representing a device ID related to a UniFi integration. | + ### Service unifi.remove_clients Clean up clients on the UniFi Controller that has only been associated with the controller for a short period of time. The difference between first seen and last seen needs to be less than 15 minutes and the client can not have a fixed IP, hostname or name associated with it. diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 289f3a37985..67575f28ab6 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -70,6 +70,10 @@ tariffs: type: list {% endconfiguration %} +

+When using the `offset` configuration parameter, the defined period must not be longer then 28 days. +

+ ### Time period dictionary example ```yaml diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index 60b83f82b34..9565d37229e 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -98,6 +98,11 @@ enabled_by_default: required: false type: boolean default: true +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None error_template: description: Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum. This is required if `error_topic` is set. required: false @@ -337,6 +342,10 @@ device: required: false type: map keys: + configuration_url: + description: 'A link to the webpage that can manage the configuration of this device. Can be either an HTTP or HTTPS link.' + required: false + type: string connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index 251662ac140..7364c023110 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -8,6 +8,9 @@ ha_iot_class: Local Polling ha_domain: venstar ha_platforms: - climate +ha_codeowners: + - '@garbled1' +ha_config_flow: true --- The `venstar` climate platform allows you to control [Venstar](https://www.venstar.com/) thermostats from Home Assistant. @@ -36,16 +39,9 @@ Note - Please ensure that you update your thermostat to the latest firmware. Ini Local API mode needs to be enabled via the thermostat's *Menu > WiFi > Local API Options > Local API - ON* -To set it up, add the following information to your `configuration.yaml` file: +{% include integrations/config_flow.md %} -```yaml -# Example configuration.yaml entry -climate: - - platform: venstar - host: IP_OR_HOSTNAME_OF_THERMOSTAT -``` - -{% configuration %} +{% configuration_basic %} host: description: Address of your thermostat, e.g., 192.168.1.32. required: true @@ -77,19 +73,4 @@ humidifier: required: false type: boolean default: true -{% endconfiguration %} - -## Full configuration sample - -```yaml -# Example configuration.yaml entry -climate: - - platform: venstar - host: IP_OR_HOSTNAME_OF_THERMOSTAT - ssl: true - username: OPTIONAL_AUTH_USER_HERE - password: OPTIONAL_AUTH_PASS_HERE - pin: LOCKSCREEN_PIN - timeout: 5 - humidifier: false -``` +{% endconfiguration_basic %} diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index c2bb70ce6c8..6d7cf2d7385 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -65,10 +65,6 @@ name: required: false default: ViCare type: string -circuit: - description: Heating circuit of your heating device if multiple exist - required: false - type: integer heating_type: description: One of `generic`, `gas`, `heatpump` or `fuelcell`. Specifying the heating_type provides additional attributes and sensors specific for the heating system. required: false @@ -81,8 +77,7 @@ scan_interval: type: integer {% endconfiguration %} -Two components will be created: `climate.vicare_heating` and `water_heater.vicare_water` (for domestic hot water). -Unless you specify a `circuit` parameter, it will pick up the first heating circuit of your installation. +Multiple device instances might be generated depending on the number of burners and/or circuits of your installation. If there is more than a single instance all devices are suffixed with the circuit or burner ID. ## Viessmann API limits @@ -136,7 +131,7 @@ Set the mode for the climate device as defined by Viessmann (see [set_hvac_mode] | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. To target all entities, use `all` keyword instead of entity_id. -| `vicare_mode` | no | New value of ViCare mode, one of: "dhw", "dhwAndHeating", "dhwAndHeatingCooling", "forcedReduced", "forcedNormal" or "standby" +| `vicare_mode` | no | New value of ViCare mode. For supported values see the `vicare_modes` attribute of the climate entity. #### Service `set_preset_mode` diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index 7a981418307..af74840b0ad 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -8,6 +8,8 @@ ha_iot_class: Local Polling ha_codeowners: - '@rodripf' - '@dmcc' + - '@MartinHjelmare' +ha_config_flow: true ha_domain: vlc_telnet ha_platforms: - media_player @@ -15,61 +17,20 @@ ha_platforms: The `vlc_telnet` platform allows you to control a [VLC media player](https://www.videolan.org/vlc/index.html) using the built in telnet interface. -To add a VLC media player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: vlc_telnet - host: IP_ADDRESS - password: PASSWORD -``` - -{% configuration %} -name: - default: VLC-TELNET - description: The name to use in the frontend. - required: false - type: string -password: - description: The password to control the VLC through the telnet interface. - required: true - type: string -host: - description: The hostname or IP address where the VLC Player is running. - required: true - type: string -port: - default: 4212 - description: The port number where the VLC Player is running. - required: false - type: integer -{% endconfiguration %} - -Only the "music" media type is supported for now. - -This service will control any instance of VLC player on the network with the telnet interface activated. +This service will control any instance of VLC player on the network with the telnet interface activated. To activate the telnet interface on your VLC Player please read the [official VLC documentation](https://wiki.videolan.org/Documentation:Modules/telnet/). Also remember to add a firewall rule allowing inbound connections for the port used in the device running VLC. In case the VLC is running on a host with a locale other than English, you may get some errors during the volume change. This is related to the different use of the decimal separator in other countries. Consider to set the locale to `en_US` before starting VLC. -## Full configuration +{% include integrations/config_flow.md %} -A full configuration for VLC could look like the one below: +## Services -```yaml -# Example configuration.yaml entry -media_player: - - platform: vlc_telnet - name: Remote Player - host: 192.168.1.48 - port: 4212 - password: your-secure-password -``` +When using the `media_player.play_media` service, only the "music" media type is supported for now. ## Home Assistant Add-on -You can run a VLC Media Player on your Home Assistant installation using the a community provided [add-on](https://github.com/rodripf/hassio-local-vlc). -Using it you can play files on the local network, Internet or files and playlist locally saved to the `/share` folder of your Home Assistant installation. +You can run a VLC Media Player on your Home Assistant installation using the official [VLC add-on](https://github.com/home-assistant/addons/blob/master/vlc/DOCS.md). +Using it you can play files on the local network, Internet or files and playlist locally saved to the `/share` and `/media` folder of your Home Assistant installation. diff --git a/source/_integrations/wallbox.markdown b/source/_integrations/wallbox.markdown index f5d8092d282..dc99433ae68 100644 --- a/source/_integrations/wallbox.markdown +++ b/source/_integrations/wallbox.markdown @@ -7,6 +7,7 @@ ha_release: 2021.6 ha_iot_class: Cloud Polling ha_domain: wallbox ha_platforms: + - number - sensor ha_config_flow: true ha_codeowners: @@ -32,3 +33,12 @@ The integration adds the following sensors: - Max Available Power - State of Charge - Status Description +- Max Charging Current + +## Number + +The integration adds the following number entity: + +- Max Charging Current + +The number entity is only loaded if the supplied username has sufficient rights to change the Max. Charging Current. diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index b18a116c668..c659e7fbd1e 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -106,3 +106,13 @@ Say with break: Watson ``` + +Optionally, specify a voice for the message: + +```yaml +- service: tts.watson_tts_say + data: + message: "Hello from Watson" + options: + voice: en-US_EmilyV3Voice +``` diff --git a/source/_integrations/wink.markdown b/source/_integrations/wink.markdown deleted file mode 100644 index eea9cf3c11b..00000000000 --- a/source/_integrations/wink.markdown +++ /dev/null @@ -1,689 +0,0 @@ ---- -title: Wink -description: Instructions on how to set up the Wink hub within Home Assistant. -ha_category: - - Hub - - Alarm - - Binary Sensor - - Climate - - Cover - - Fan - - Light - - Lock - - Scene - - Sensor - - Switch - - Water Heater -featured: false -ha_iot_class: Cloud Polling -ha_release: pre 0.7 -ha_domain: wink -ha_platforms: - - alarm_control_panel - - binary_sensor - - climate - - cover - - fan - - light - - lock - - scene - - sensor - - switch - - water_heater ---- - -[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. -
- -Home Assistant integrates with the Wink API and automatically sets up any switches, lights, locks, fans, climate devices (thermostats, air conditioners, and water heaters), covers, sensors, alarms, and sirens. - -There is currently support for the following device types within Home Assistant: - -- [Alarm](#alarm-control-panel) -- [Binary Sensor](#binary-sensor) -- [Climate](#climate) -- [Cover](#cover) -- [Fan](#fan) -- [Light](#light) -- [Lock](#lock) -- Scene -- [Sensor](#sensor) -- [Switch](#switch) -- [Water heater](#water-heater) - -## Authenticate using [developer.wink.com](https://developer.wink.com) - -You need to set up a developer account with Wink. This process can take a few days to get approved. - -Wink requests three pieces of information from the user when they sign up for a developer account. - -1. `Name:` This can be anything, for example, "Home Assistant" -2. `Website:` The external address of your Home Assistant instance. If not externally accessible you can use your email address. -3. `Redirect URI:` This should be `http://192.168.1.5:8123/auth/wink/callback` replacing the IP with the internal IP of your Home Assistant box. - -No settings are required in the `configuration.yaml` other than `wink:`. - -After adding `wink:` to your `configuration.yaml` and restarting Home Assistant you will see a persistent notification on the frontend with a `CONFIGURE` button that will guide you through the setup via the frontend configurator. - -
-When using the configurator make sure the initial setup is performed on the same local network as the Home Assistant instance, if not from the same box Home Assistant is running on. This will allow for authentication redirects to happen correctly. -
- -```yaml -wink: -``` - -## Full oauth authentication (legacy) - -This should be used for users that obtained their client_id and client_secret via email from Wink support prior to [developer.wink.com's](https://developer.wink.com) existence. - -```yaml -wink: - email: YOUR_WINK_EMAIL_ADDRESS - password: YOUR_WINK_PASSWORD - client_id: YOUR_WINK_CLIENT_ID - client_secret: YOUR_WINK_CLIENT_SECRET -``` - -Please pay attention that the required entries are only needed for legacy OAuth access. - -{% configuration %} -email: - description: Your Wink login email address. - required: true - type: string -password: - description: Your Wink login password. - required: true - type: string -client_id: - description: Your provided Wink `client_id`. - required: true - type: string -client_secret: - description: Your provided Wink `client_secret`. - required: true - type: string -local_control: - description: If set to `true` state changes for lights, locks and switches will be issued to the local hub. - required: false - type: boolean - default: false -{% endconfiguration %} - -Local control: - -- Wink's local control API isn't officially documented and therefore could be broken by a hub update. For these reasons `local_control` defaults to `false`. -- Using local control doesn't appear to make commands any quicker, but does function in an internet/Wink outage. -- Local control is also only available for the Wink hub v1 and v2, not the Wink relay. -- Local control isn't used during the start-up of Home Assistant; this means initial setup requires an active internet connection. -- Local control requests are first sent to the controlling hub. If a request fails, that request will attempt to go online. - -
- -It is possible for the hub to get into a bad state where it stops accepting local control request. If this happens, you will notice requests taking significantly longer as they are redirected online. This doesn't happen often, but when it does, it appears to be resolved by rebooting the hub. - -The following error will be logged if the hub is rejecting local requests. - -```txt -Error sending local control request. Sending request online -``` - -
- -## Service `refresh_state_from_wink` - -The Wink integration only obtains the device states from the Wink API once, during startup. All updates after that are pushed via a third party called PubNub. On rare occasions where an update isn't pushed device states can be out of sync. - -You can use the service wink/refresh_state_from_wink to pull the most recent state from the Wink API for all devices. If `local_control` is set to `true` states will be pulled from the devices controlling hub, not the online API. - -## Service `pull_newly_added_devices_from_wink` - -You can use the service wink/add_new_devices to pull any newly paired Wink devices to an already running instance of Home Assistant. Any new devices will also be added if Home Assistant is restarted. - -## Service `delete_wink_device` - -You can use the service wink/delete_wink_device to remove/unpair a device from Wink. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ---------------------------------------------------------- | -| `entity_id` | no | String that points at the `entity_id` of device to delete. | - -## Service `pair_new_device` - -You can use the service wink/pair_new_device to pair a new device to your Wink hub/relay - -| Service data attribute | Optional | Description | -| ---------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `hub_name` | no | The name of the hub to pair a new device to. | -| `pairing_mode` | no | One of the following [zigbee, zwave, zwave_exclusion, zwave_network_rediscovery, lutron, bluetooth, kidde] | -| `kidde_radio_code` | conditional | A string of 8 1s and 0s one for each dip switch on the kidde device left --> right = 1 --> 8 (Required if pairing_mode = kidde) | - -
-Calling service wink/pull_newly_added_wink_devices after a device is paired will add that new device to Home Assistant. The device will also show up on the next restart of Home Assistant. -
- -## Service `rename_wink_device` - -You can use the service wink/rename_wink_device to change the name of a device. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ---------------------------------------------------------- | -| `entity_id` | no | String that points at the `entity_id` of device to rename. | -| `name` | no | The name to change it to. | - -
-Home Assistant entity_ids for Wink devices are based on the Wink device's name. Calling this service will not change the entity_id of the device until Home Assistant is restarted. -
- -
-The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s). -
- -## Custom Wink devices and their services - -- GoControl siren and strobe -- Dome siren/chime/strobe -- Quirky Nimbus (Legacy device) These can no longer be officially added to your Wink account - -### Service `set_siren_auto_shutoff` - -You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shutting off. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | -| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. | - -Example: - -```yaml -script: - set_all_sirens_to_one_minute_auto_shutoff: - sequence: - - service: wink.set_siren_auto_shutoff - data: - auto_shutoff: 60 -``` - -
-The following services only work with the Dome siren/chime. -
- -### Service `set_chime_volume` - -You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------ | -| `volume` | no | String. One of ["low", "medium", "high"] | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of the siren/chime. | - -Example: - -```yaml -script: - set_chime_volume_to_low_for_all_chimes - sequence: - - service: wink.set_chime_volume - data: - volume: "low" -``` - -### Service `set_siren_volume` - -You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------------- | -| `volume` | no | String. One of ["low", "medium", "high"] | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | - -Example: - -```yaml -script: - set_siren_volume_to_low_for_all_sirens - sequence: - - service: wink.set_siren_volume - data: - volume: "low" -``` - -### Service `enable_chime` - -You can use the service wink/enable_chime to set the tone and enable the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | - -Example: - -```yaml -script: - execute_doorbell - sequence: - - service: wink.enable_chime - data: - tone: "doorbell" -``` - -### Service `set_siren_tone` - -You can use the service wink/set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | - -Example: - -```yaml -script: - set_siren_to_alert: - sequence: - - service: wink.set_siren_tone - data: - tone: "alert" -``` - -### Service `set_siren_strobe_enabled` - -You can use the service wink/set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------------- | -| `enabled` | no | Boolean. True or False. | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. | - -Example: - -```yaml -script: - disable_siren_strobe: - sequence: - - service: wink.set_siren_strobe_enabled - data: - enabled: false -``` - -### Service `set_chime_strobe_enabled` - -You can use the service wink/set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------------- | -| `enabled` | no | Boolean. True or False. | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. | - -Example: - -```yaml -script: - disable_chime_strobe: - sequence: - - service: wink.set_chime_strobe_enabled - data: - enabled: false -``` - -### Service `set_nimbus_dial_state` - -You can use the service wink/set_nimbus_dial_state to update an individual dial's value/position and its labels - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. | -| `value` | no | A number, should be between the dials min and max value (See set_nimbus_dial_configuration below) | -| `labels` | yes | A list of strings the first being the value set on the dial's face and the second being the value on the dial face when the Nimbus is pressed | - -Example: - -```yaml -script: - set_dial_1_value: - sequence: - - service: wink.set_nimbus_dial_state - target: - entity_id: wink.nimbus_dial_1 - data: - value: 150 - labels: - - "Dial 1" - - "150" -``` - -### Service `set_nimbus_dial_configuration` - -You can use the service wink/set_nimbus_dial_configuration to update an individual dial's configuration. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. | -| `rotation` | yes | One of "cw" or "ccw" the direction the dial hand should rotate. | -| `ticks` | yes | A positive number, the number of times the hand should move. | -| `scale` | yes | One of "linear" or "log" How the dial should move in response to higher values. | -| `min_value` | yes | A number, the minimum value that the dial can have. | -| `max_value` | yes | A number, the maximum value that the dial can have. | -| `min_position` | yes | A number generally [0-360], the minimum position for the dial's hand. | -| `max_value` | yes | A number generally [0-360], the maximum position for the dial's hand. | - -Example: - -```yaml -script: - set_dial_1_value: - sequence: - - service: wink.set_nimbus_dial_state - target: - entity_id: wink.nimbus_dial_1 - data: - rotation: "ccw" -``` - -## Alarm Control Panel - -The Wink alarm platform allows you to control your [Wink](https://www.wink.com/) Canary all-in-one security camera. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported devices - -- Canary all-in-one security camera - -
-The above devices are confirmed to work, but others may work as well. -
- -## Binary Sensor - -The Wink binary sensor platform allows you to get data from your [Wink](https://www.wink.com/) binary sensors. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported Binary sensor devices - -- Smoke and CO detectors (No Wink hub required for Nest) -- Window/Door sensors -- Motion sensors -- Ring Door bells (No hub required) -- Liquid presence sensors -- Z-Wave lock key codes -- Lutron connected bulb remote buttons -- Wink Relay buttons and presence detection -- Wink spotter loudness and vibration (No Wink hub required) -- Wink hub devices connection status. This includes any paired hubs like Hue, Wink v1, Wink v2, Wink Relay... -- Dropcam sensors - -
-The above devices are confirmed to work, but others may work as well. -
- -## Climate - -The Wink climate platform allows you to get data from your [Wink](https://www.wink.com/) thermostats and air conditioners. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported climate devices - -- Nest (No Wink hub required) -- Ecobee (No Wink hub required) -- Sensi (No Wink hub required) -- Carrier (Unconfirmed) -- Honeywell (No Wink hub required) -- Generic Z-Wave -- Quirky Aros window AC unit - -
-The above devices are confirmed to work, but others may work as well. -
- -## Cover - -Wink Cover garage door functionality varies on the product. Home Assistant can open, close, and view state of GoControl/Linear openers. For Chamberlain MyQ-enabled openers, Home Assistant is limited to show current state (open or closed) only using this Wink cover. This restriction was imposed by Chamberlain for third party control. Wink suggests that MyQ customers should contact Chamberlain directly to inquire about expanding permissions. - -The [MyQ Cover](/integrations/myq) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported cover devices - -- Bali window treatments -- Lutron shades -- Pella motorized blinds and shades -- GoControl garage door opener -- Chamberlain MyQ (Limited functionality) (No Wink hub required) - -
-The above devices are confirmed to work, but others may work as well. -
- -## Fan - -The Wink fan platform allows you to control your [Wink](https://www.wink.com/) fans. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported fan devices - -- Home Decorator Wink-enabled Gardinier ceiling fan -- Hampton Bay ceiling fan module - -
-The above devices are confirmed to work, but others may work as well. -
- -## Light - -The `wink` light platform allows you to use your [Wink](https://www.wink.com/) lights. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported light devices - -- Z-Wave switches with dimming -- Hue -- Lightify -- GE link -- Wink light groups (User created groups of lights) - -
-The above devices are confirmed to work, but others may work as well. -
- -## Lock - -The Wink lock platform allows you to control your [Wink](https://www.wink.com/) locks. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported lock devices - -- Kwikset -- Schlage -- August (No Wink hub required) (August Connect required) -- Generic Z-Wave - -
-The following services have only been confirmed on Schlage locks. -
- -### Service `set_lock_alarm_mode` - -You can use the service wink/set_lock_alarm_mode to set the alarm mode of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `mode` | no | String one of tamper, activity, or forced_entry | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | - -Example: - -```yaml -script: - set_locks_to_tamper: - sequence: - - service: wink.set_lock_alarm_mode - data: - mode: "tamper" -``` - -### Service `set_lock_alarm_sensitivity` - -You can use the service wink/set_lock_alarm_sensitivity to set the alarm sensitivity of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high. | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | - -Example: - -```yaml -script: - set_locks_to_high_sensitivity: - sequence: - - service: wink.set_lock_alarm_sensitivity - data: - sensitivity: "high" -``` - -### Service `set_lock_alarm_state` - -You can use the service wink/set_lock_alarm_state to set the alarm state of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `enabled` | no | Boolean enabled or disabled, true or false | | | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | | | - -Example: - -```yaml -script: - disable_all_locks_alarm: - sequence: - - service: wink.set_lock_alarm_state - data: - enabled: false -``` - -### Service `set_lock_beeper_state` - -You can use the service wink/set_lock_beeper_state to set the beeper state of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `enabled` | no | Boolean enabled or disabled, true or false | | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | | - -Example: - -```yaml -script: - disable_all_locks_beepers: - sequence: - - service: wink.set_lock_beeper_state - data: - enabled: false -``` - -### Service `set_lock_vacation_mode` - -You can use the service wink/set_lock_vacation_mode to set the vacation mode of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `enabled` | no | Boolean enabled or disabled, true or false | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. | - -Example: - -```yaml -script: - enabled_vacation_mode_on_all_locks: - sequence: - - service: wink.set_lock_vacation_mode - data: - enabled: false -``` - -### Service `add_new_lock_key_code` - -You can use the service wink/add_new_lock_key_code to add a new user code to your Wink lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | -------------------------------------------------------------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of locks. | -| `name` | no | the name of the new key code | -| `code` | no | The new code. Must match length of existing codes. | - -
-Calling service wink/pull_newly_added_wink_devices will add the new key code to Home Assistant. The device will also show up on the next restart of Home Assistant. -
- -
-If supported by your lock, a binary sensor will be created for each user key code you have defined. These key codes will turn on when the code is entered and automatically turn off after a few seconds. -
- -## Sensor - -The Wink sensor platform allows you to get data from your [Wink](https://www.wink.com/) sensors. - -The requirement is that you have setup [Wink](/integrations/wink/) from above. - -### Supported sensor devices - -- Wink Relay temperature, proximity, and humidity -- Wink Spotter temperature, humidity, and brightness (No Wink hub required) -- Wink Porkfolio balance (No Wink hub required) -- Wink eggminder (No Wink hub required) -- Nest protect Smoke and CO severity (No confirmation that this is actually reported) (No Wink hub required) -- Motion sensor temperature -- Quirky refuel propane tank monitor (No Wink hub required) - -
-The above devices are confirmed to work, but others may work as well. -
- -## Switch - -The Wink switch platform allows you to control your [Wink](https://www.wink.com/) switches. - -The requirement is that you have set up [Wink](/integrations/wink/) from above. - -## Supported switch devices - -- Wink Pivot power genius (No Wink hub required) -- non-dimming Z-Wave in-wall switches (dimming switches show up as lights) -- Wink Relay load controlling switches -- Rachio sprinkler controller (No Wink hub required) -- iHome smart plug (No Wink hub required) -- Wink switch groups (User created groups of switches) - -## Water heater - -The Wink water heater platform allows you to get data from your [Wink](https://www.wink.com/) Water Heaters. - -The requirement is that you have set up [Wink](/integrations/wink/) from above. - -## Supported water heaters - -- Rheem Econet water heaters (No Wink hub required) - -
- -Wink water heaters use to live under the `climate` platform prior to release 0.81. - -
diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 3d5e7a6a34a..d8126b800d4 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -15,6 +15,7 @@ ha_domain: wled ha_zeroconf: true ha_platforms: - light + - number - sensor - select - switch @@ -53,7 +54,9 @@ If WLED has 2 or more segments, each segment gets its own light entity in Home Assistant. Additionally, a master light entity is created. This master entity controls the strip power and overall brightness applied to all segments. -## Selects +Additionally, select and number entities described below will be created for each segment. + +## Select Entities This integration provides selects for the following information from WLED: @@ -61,7 +64,14 @@ This integration provides selects for the following information from WLED: - Preset - Color palette (per segment, disabled by default). -## Sensors +## Number Entities + +This integration provides `number` entities to control the following, segment-specific settings: + +- Intensity +- Speed + +## Sensor Entities This integration provides sensors for the following information from WLED: diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 9187e72f5f3..37a7698d20d 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -252,15 +252,16 @@ 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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True +Purify Volume | The volume of purified air in qubic meter | False +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -292,17 +293,18 @@ 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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Illuminance | The current illuminance measured | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True +Purify Volume | The volume of purified air in qubic meter | False +Second Motor Speed | The current second motor speed measured in rpm | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -329,16 +331,17 @@ 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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Illuminance | The current illuminance measured | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True +Second Motor Speed | The current second motor speed measured in rpm | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -364,14 +367,15 @@ 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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -405,15 +409,16 @@ 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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True +Purify Volume | The volume of purified air in qubic meter | False +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -435,12 +440,12 @@ LED Brihtness | Set the LED brightness - Sensor entities -Sensor | Description ------------------------ | ----------------------- -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 -PM2.5 | The current particulate matter 2.5 measured +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Motor Speed | The current motor speed measured in rpm | True +PM2.5 | The current particulate matter 2.5 measured | True - Switch entities @@ -461,15 +466,16 @@ Child Lock | Turn on/off the child lock - `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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +PM2.5 | The current particulate matter 2.5 measured | True +Illuminance | The current illuminance measured | True +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Motor Speed | The current motor speed measured in rpm | True +Second Motor Speed | The current second motor speed measured in rpm | True +Purify Volume | The volume of purified air in qubic meter | False +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -488,15 +494,16 @@ LED | Turn on/off the LED - `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 +Sensor | Description | Enabled by default +----------------------- | ----------------------- | ----------------------- +Carbon Dioxide | The current carbon dioxide measured in ppm | True +Filter Life Remaining | The remaining life of the filter | True +Filter Use | Filter usage time in hours | True +Humidity | The current humidity measured | True +Illuminance | The current illuminance measured | True +PM2.5 | The current particulate matter 2.5 measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Select entities @@ -541,11 +548,12 @@ 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 -Water Level | The current water level percentage measured +Sensor | Description | Enabled by default +----------------------- | -------------------------------------------------------------- | ------------------ +Humidity | The current humidity measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False +Water Level | The current water level percentage measured | True - Switch entities @@ -583,11 +591,12 @@ 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 -Water Level | The current water level percentage measured +Sensor | Description | Enabled by default +----------------------- | -------------------------------------------------------------- | ------------------ +Humidity | The current humidity measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False +Water Level | The current water level percentage measured | True - Switch entities @@ -632,12 +641,13 @@ 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 measured -Temperature | The current temperature measured -Water Level | The current water level percentage measured +Sensor | Description | Enabled by default +----------------------- | -------------------------------------------------------------- | ------------------ +Actual Speed | The current motor speed measured in rpm | True +Humidity | The current humidity measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False +Water Level | The current water level percentage measured | True - Switch entities @@ -681,11 +691,12 @@ 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 -Water Level | The current water level percentage measured +Sensor | Description | Enabled by default +----------------------- | -------------------------------------------------------------- | ------------------ +Humidity | The current humidity measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False +Water Level | The current water level percentage measured | True - Switch entities @@ -719,10 +730,11 @@ 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 +Sensor | Description | Enabled by default +----------------------- | -------------------------------------------------------------- | ------------------ +Humidity | The current humidity measured | True +Temperature | The current temperature measured | True +Use Time | The accumulative number of seconds the device has been in use | False - Switch entities @@ -1363,41 +1375,53 @@ automation: segments: [1, 1] ``` +### Sensors + +{% configuration_basic %} + +DnD Start*: + description: The timestamp when the next DnD will start +DnD End*: + description: The timestamp when the current or next DnD will end +Total duration*: + description: The total cleaning duration in seconds +Total Clean Area*: + description: The total cleaning area in square meters +Total Clean Count*: + description: The total amount of times a clean cycle has been ran +Total Dust Collection Count*: + description: The total amount of dust that has been collected +Filter Left*: + description: How long the filter can be used in seconds +Main Brush Left*: + description: How long the main brush can be used in seconds +Sensor Dirty Left*: + description: How long the sensor can be used in seconds +Last Clean Area*: + description: The last cleaned area in square meters +Last Clean Duration*: + description: The last clean duration in seconds +Last Clean End*: + description: The last clean end time as a timestamp +Last Clean Start*: + description: The last clean start time as a timestamp +Mop Attached**: + description: If the mop is attached +Water Box Attached**: + description: If the watter box is attached +Water Shortage**: + description: If the water box is low on water + +{% endconfiguration_basic %} + +
+* Needs to be manually enabled once the integration has been added.
+** Only enabled if the vacuum has a mop. +
+ ### Attributes -In addition to [all of the attributes provided by the `vacuum` component](/integrations/vacuum/#attributes), -(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, and `params`), the `xiaomi` platform introduces specific attributes. These are: - -- `cleaning_time` -- `do_not_disturb` -- `main_brush_left` -- `side_brush_left` -- `filter_left` -- `sensor_dirty_left` -- `cleaning_count` -- `total_cleaned_area` -- `total_cleaning_time` -- `clean_start` -- `clean_end` -- `mop_attached` - -The following table shows the units of measurement for each attribute: - -| Attribute | Unit of measurement | Description | -|---------------------------|---------------------|----------------------------------------------------------------| -| `do_not_disturb` | | DND mode on / off | -| `cleaning_time` | minutes | Last / actual cleaning time in minutes | -| `cleaned_area` | square meter | Last / actual cleaned area in square meters | -| `main_brush_left` | hours | Hours left until a change of the main brush is needed | -| `side_brush_left` | hours | Hours left until a change of the side brush is needed | -| `filter_left` | hours | Hours left until a change of the filter is needed | -| `sensor_dirty_left` | hours | Hours left until the wall and cliff sensors should be cleaned | -| `cleaning_count` | | Number of total cleaning cycles | -| `total_cleaned_area` | square meter | Total cleaned area in square meters | -| `total_cleaning_time` | minutes | Total cleaning time in minutes | -| `clean_start` | datetime | The last date/time the vacuum started cleaning (offset naive) | -| `clean_stop` | datetime | The last date/time the vacuum finished cleaning (offset naive) | -| `mop_attached` | | A mop and water box are attached / not attached | +The vacuums from the `xiaomi` platform does not expose additional attributes other the ones provided by [the `vacuum` component](/integrations/vacuum/#attributes), ### Example on how to clean a specific room diff --git a/source/_integrations/zwave.markdown b/source/_integrations/zwave.markdown index 503d653bff8..aa5f1f89deb 100644 --- a/source/_integrations/zwave.markdown +++ b/source/_integrations/zwave.markdown @@ -33,7 +33,7 @@ ha_platforms: This integration is deprecated. We recommend using [the Z-Wave JS integration](/integrations/zwave_js). -The Z-Wave integration will no longer receive any updates. It will not be removed unless it becomes incompatible with a future version of Python. +The Z-Wave integration will no longer receive any updates. The technical dependencies may render this integration unusable in the future at which time it may be removed.
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 83587a7bf6d..54a726a6ea0 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -269,7 +269,7 @@ Calling this service forces Z-Wave JS to try to reach a node. This can be used t | `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. +This service can be used in tandem with the node status sensor 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. ```yaml trigger: @@ -493,16 +493,18 @@ You can keep track of the Roadmap for the Z-Wave JS integration [here](https://g If you're new to Home Assistant, use Z-Wave JS. -The `zwave` integration has been marked as deprecated and will no longer receive any updates like new device files. The `ozw` integration will receive new device files if they are provided by upstream. +The `zwave` and `ozw` integrations have been marked as deprecated and will no longer receive any updates. It is perfectly doable to switch over from one of the above mentioned previous integrations to the new Z-Wave JS integration. The good news is that your entire Z-Wave network is **stored on your stick** so you will not have to run through your house to recreate your network. -If you are currently running the [`zwave`](/integrations/zwave/) or [`ozw`](/integrations/ozw/) Z-Wave integration and it works fine, there is **no need to switch over at this time** to Z-Wave JS. What is important to know is that all development focus currently goes to Z-Wave JS. The previous implementations are provided as-is. They will **NOT be removed** without proper notice but in time there *might* come technical dependencies that render one or both of those integrations unusable. +If you are currently running the [`zwave`](/integrations/zwave/) or [`ozw`](/integrations/ozw/) Z-Wave integration we recommend you to migrate to Z-Wave JS. All development focus now goes to Z-Wave JS. The previous implementations are provided as-is. They will not be removed without proper notice but in time there might come technical dependencies that render one or both of those integrations unusable. ### Automatic migration wizard For the `zwave` integration there is a migration wizard that will help you set up the Z-Wave JS integration, remove the `zwave` integration and migrate the entities and devices that can be mapped from the `zwave` integration to the Z-Wave JS integration. Some entities may not be able to migrate automatically and you will need to rename the corresponding available Z-Wave JS entities manually, after the migration. Before completing the migration you will be shown a list of entities that could not be migrated automatically, and you'll have the option to abort or continue with the migration. The migration wizard is available from the `zwave` integration configuration panel in the GUI. +There is no automatic migration wizard for the `ozw` integration. Please follow the manual migration path below if you want to migrate from `ozw` to Z-Wave JS. + ### In a nutshell this is what the migration path looks like 1) Make a **backup** of your Home Assistant configuration. If you're running the supervisor this is very easy to do by creating a backup. You should do this so you'll be able to quickly revert if you may run into unexpected problems. diff --git a/source/_posts/2021-11-03-release-202111.markdown b/source/_posts/2021-11-03-release-202111.markdown new file mode 100644 index 00000000000..2c276b5364d --- /dev/null +++ b/source/_posts/2021-11-03-release-202111.markdown @@ -0,0 +1,3050 @@ +--- +layout: post +title: "2021.11: Icon picker, device links and entity categories" +description: "This release adds a beautiful icon picker, quick links to visit a device or service web interface, and new organization categories for entities!" +date: 2021-11-03 00:00:00 +date_formatted: "November 3, 2021" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2021-11/social.png +--- + + + +Point eleven (`.11`), which means it is November! 🥶 (or 🏖 depending on where +you are in this world, of course.) + +It also means: This is the second last release of the year... + +Hacktoberfest is over! In the month October, people +contribute to projects (like Home Assistant) to celebrate open source. +I've seen lots of new faces and new contributors this month. To those I want +to say: Welcome! Thanks for contributing your free spare time; Thanks for +being a hero! ❤️ + +And, there is more! Something that isn't really visible. In the background, +an army of contributors are improving a tremendous amount of Home +Assistant code, which improves stability, readability, and maintainability of +our project's codebase. As a matter of fact, because of this incredible work, +counted by the number of contributions, this release might just as well be one +of the biggest ever. Work, you generally don't notice, but is still done. +Weird huh? Another group of heroes! ❤️ + +For me personally, this has been a crazy month. After the last release, I was +sad to read about issues people had with the new Tuya integration. I went to +different stores, bought many Tuya devices, and spent a lot of time improving +the experience by extending device support. Hopefully, I've been able to do +enough to make the Tuya integration acceptable. + +This release... a long-time wishlist item of mine is in: The icon picker! 😍 +So cool to see this happening, it is amazing, beautiful, super helpful, +and it also supports third-party icon sets! 🤩 + +Oh, to spoil some inside information, you might want to block your +agenda for the Home Assistant State of the Union 2021 on Saturday 11 December, +8 pm (CEST)! + +Enjoy the release! + +../Frenck + +- [Daylight saving time bug](#daylight-saving-time-bug) +- [Visit devices and services](#visit-devices-and-services) +- [Entity categorization](#entity-categorization) +- [The icon picker](#the-icon-picker) +- [Tuya update](#tuya-update) +- [Some nice new template filters](#some-nice-new-template-filters) +- [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) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +## Daylight saving time bug + +If you have already transitioned daylight saving time (DST), you might have +experienced it already. If you have not switched yet, this message is extra +important for you. + +Last weekend we experienced a bug with daylight saving time transitioning, +causing Home Assistant to crash or have higher CPU loads than usual. +If you experience this, restarting Home Assistant will resolve this issue. + +This release has a more permanent fix for the issue, preventing it from +happening. If you can't upgrade to 2021.11 right now, we have also published +Home Assistant 2021.10.7, which has the same bugfix included. + +So if you still have to transition to a new summer/winter time, be sure to +upgrade! + +## Visit devices and services + +Your device has a web interface, but you don't remember the (IP) address it +has on your network... So you start guessing a couple of addresses; And end up +checking your router, looking it up in an app, or scanning the network... +Sounds familiar? Annoying, right? + +Well, as of today, integrations can provide the URLs to devices or services +where the device can be managed or configured. + +

+Screenshot of WLED that now has a button that links to the WLED web interface of the device directly +Screenshot of WLED that now has a button that links to the WLED web interface of the device directly. +

+ +If an integration provides a single web interface to configure multiple devices, +it can even deep-link to the specific device page for that device. + +Over **50!** integrations have already added support for this feature, which is +fantastic! Just to name a few integrations: MQTT, Tasmota, WLED, Synology, Plex, +Netatmo, Pi-hole, RainMachine, Plugwise, Sure Petcare, Axis, UniFi Controller, +FRITZ!Box, and many more! + +If you are a custom integration developer, you can add support for this feature +too; [Read all about it on our developer blog](https://developers.home-assistant.io/blog/2021/10/26/config-entity#device-configuration-url). + +## Entity categorization + +Since we introduced the concept of devices, we have been seeing more and +more entities being created, which is great! It means we can automate on a lot +more device features. However, this does impose other issues, like: +clutter on a generated dashboard, unused entities exposed to voice assistants, +or turn on/off things in areas as a side-effect. Let me try to explain the +latter issue with an example. + +Let's consider a wall plug. It can be turned on/off using a switch entity, +however, my wall plug also has a switch to enable a child lock that controls +its physical button. Now, if I had this device in my living room area and +turned off all switches in my living room, it would turn off the switch and +the child lock! This is not what we want, right? + +To resolve issues like these (and more), we introduce: Entity categories. + +Entities without a category are now considered primary entities: The entities +we daily use and expect from a device, i.e., the power on/off switch. +Furthermore, entities can be categorized as configuration or diagnostic entities. +A configuration entity provides a setting/configuration option for the device, +while a diagnostic entity provides information about the device. + +Take a light bulb as an example. The light entity itself is a primary entity. +However, the select entity that provides the power on behavior configuration of +the bulb is a setting of the device and thus a configuration entity. While the +sensor providing the signal strength of the light bulb is a diagnostic entity. + +Another, more visual example, from the device page of a Sonos Move speaker: + +

+Screenshot of the Sonos device page that now has entities categorized +Screenshot of the Sonos device page that now has entities categorized. +

+ +In the above screen, you can see the Sonos speaker itself is a primary control +entity, while the entities that provide device configuration options and +entities that provide diagnostic information about the device itself are now +separated nicely. + +With entities that are non-primary (so are either configuration or +diagnostic entities), we now do the following: + +- Non-primary entities are hidden from generated Lovelace dashboards. This + reduces the clutter and makes the generated dashboards more useful for daily + use. +- Non-primary entities are, by default, not exposed to Amazon Alexa or + Google Assistant. You, of course, still can expose them, but by default, + we don't send them to these voice assistants. +- Non-primary entities are not called by service calls that target the device + or area the device is in. They are only called if explicitly called by their + entity ID. + +Please note, the above-listed points are breaking changes, also listed in +the breaking changes section of these release notes. + +Like the previous visit device or service feature, this new organization +capability has been adopted by many of our maintainers: 60+ integrations! +To name a few: Sonos, Z-Wave JS, Shelly, SwitchBot, deCONZ, Neato, Netatmo, +August, MQTT, Hue, Roomba, Tibber, AirVisual, KNX, motionEye, and many more. +Oh, and soon, we can add ESPHome to that list! + +If you are a custom integration developer, you can add support for this feature +too; [Read all about it on our developer blog](https://developers.home-assistant.io/blog/2021/10/26/config-entity#entity-categories). + +## The icon picker + +Adding nice and matching icons to your entities, makes all the difference for +how your Home Assistant interface looks and feels. + +Finding those icons was somewhat clumsy. You'd go to the +[Material Design Icons](https://materialdesignicons.com/) website to find one, +remember its code and add the `mdi:` to your entity. Not a great +experience, especially with the number of icons available your browser doesn't +always like that website. + +Thanks to the great work of [@piitaya](https://github.com/piitaya), we now have +a beautiful, super easy, smart and fast icon picker! Yes, you can now search +and choose icons, straight from the Home Assistant interface. + +

+Screen capture showing the new icon picker in action +Screen capture showing the new icon picker in action. +

+ +When you start typing, it not only looks for icons that match the MDI code, it +also looks for aliases and categories of the icons. That way, you'll always +find the icon you're looking for. + +Third-party custom icon sets can also utilize this feature; however, the author +of that set needs to add compatibility for it. For example, the +[Hue icons](https://github.com/arallsopp/hass-hue-icons) by [arallsopp](https://github.com/arallsopp) +added support for this feature already. + +## Tuya update + +Our previous release included an update to the Tuya integration, making it use +the official API instead of a soon-to-be-removed API. Sadly, this update did +not live up to our standards, for which we want to apologize. + +Tuya had initially planned to deprecate the old API in December, giving users +2 months to migrate. That’s not a lot of time, so we decided to move forward +with releasing the updated integration. Tuya pushed back the timeline for +sunsetting the old API with 6 months; but it was too late for us to change course +and ship the old integration. + +The updated Tuya integration had some bugs and also was missing some features +compared to the previous integration and various available custom components. +This caused some users to have a poor experience. To make up for this, [@frenck] +spent a good chunk of time on bringing the Tuya integration up to the latest +standards and adding [a ton of new features and bug fixes](https://github.com/home-assistant/core/pulls?q=is%3Apr+sort%3Aupdated-desc+author%3Afrenck+label%3A%22integration%3A+tuya%22+is%3Aclosed). + +Almost all Home Assistant entity platforms are supported now, including +(binary) sensors, covers, vacuums, and even cameras! However, be aware that +Tuya has a lot of devices and variations, so there is still work left to be +done; We have done everything we can to provide a solid base this release. + +As a final note: Some people complained about that this integration relies +on the cloud. We have always supported integrations with both local and +cloud APIs. Integrations with cloud APIs allow people to adopt Home Assistant +without having to replace all devices in their house. Although we recommend +local, using devices that require the cloud, or are fully local, +is a choice everyone should make for themselves. + +## Some nice new template filters + +For some of our more advanced users, this release has some helpful template +improvements included as well! + +Let's start with the new `today_at` filter/function that [@Petro31] added. It +allows you to quickly get a DateTime at a certain time of today. This can be +really helpful if you need to compare against another DateTime. For example: + +{% raw %} + +```yaml +# Is the current time past 10:15? +{{ now() > today_at("10:15") }} +``` + +{% endraw %} + +Next up is [@raman325], who added the `area_entities` and `area_devices` filters +and functions which allow you to get all devices or entities that are in an area. +The methods return a list, which you can loop on. + +{% raw %} + +```yaml +{{ area_entities('Living Room') }} # ['light.ceiling', 'media_player.tv', ...] +``` + +{% endraw %} + +Lastly, [@Petro31] added another one: the `average` filter and function. It does +what you think it does... It calculates the average of a list of items you pass +to it. + +{% raw %} + +```yaml +{{ [1, 2, 3, 4, 5] | average }} # Result: 3 +``` + +{% endraw %} + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +- Debug traces of automations and scripts are now stored! So you no longer + lose them when you restart Home Assistant. Thanks [@emontnemery] +- [@frenck] adjusted the number entity and it can now be displayed as a slider + instead of an input box. Home Assistant will automatically figure out which + is the best to use. +- Add support for fan groups! Thanks [@bdraco]! +- Thanks to [@ludeeus], the Supervisor integration now has binary sensors that + can tell you which add-on is running or not. +- [@allenporter] blew our minds this release by adding initial support for + WebRTC streams and cameras to Home Assistant. +- But had a good reason, he added support for Nest Battery Cameras + and Nest battery Doorbell Cameras to Home Assistant! Thanks [@allenporter]! +- When you log in to Home Assistant, there is now a "Keep me logged in" + checkbox! Awesome [@MartinTuroci](http://github.com/MartinTuroci) +- [@goyney](https://github.com/goyney) updated the Material Design Icon to + version v6.4.95 ensuring we have all the latest icons available in our new + beautiful icon picker. +- Sure PetCare now supports the Felaqua devices, thanks [@benleb]! +- The MQTT number platform now has support for providing a unit of measurement + and resetting the number field (by [@frenck] and [@emontnemery]). +- The Broadlink integration added sensors for voltage, current, overload, + and total consumption. Thanks [@felipediel]! +- WLED now has the much requested sliders for speed & intensity controls. + Thanks, [@rytilahti]! +- OpenGarage has seen lots of updates and love from [@Danielhiversen], adding + lots of sensors in the process. +- With the recent improvements made to the VLC media player integration and + add-on, there is now a way to get TTS working by connecting some speakers to + your Blue, ODROID or Raspberry Pi. Thanks, [@mib1185] & [@MartinHjelmare]! + +Adding support for long-term statistics is a much requested feature; This +release adds support for long-term statistics to the following integrations: + +- AEMET (thanks [@Noltari]) +- Efery (thanks [@tkdrob]) +- EnOcean (thanks [@davidlb]) +- Gogogate2 (thanks [@thomas-svrts]) +- Huisbaasje (thanks [@dennisschroer]) +- Nest (thanks [@allenporter]) +- Ondilo ICO (thanks [@TheNogl]) +- OpenWeatherMap (thanks [@dkt01]) +- Plugwise (thanks [@bouwew]) +- REST (thanks [@koying]) +- Scrape sensor (thanks [@lukas-hetzenecker]) +- Tado (thanks [@Noltari]) +- Tado sensors (thanks [#58111]) +- WAQI (thanks [@davidlb]) + +## New Integrations + +We welcome the following new integration this release: + +- [LOOKin][lookin docs], done by [@ANMalko] + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [Aurora ABB Solar PV][aurora_abb_powerone docs], done by [@davet2001] +- [Efergy][efergy docs], done by [@tkdrob] +- [Flux LED][flux_led docs], done by [@icemanch] and [@bdraco] +- [OctoPrint][octoprint docs], done by [@rfleming71] +- [Stookalert][stookalert docs], done by [@frenck] +- [Venstar][venstar docs], done by [@garbled1] +- [VLC Media Player Telnet][vlc_telnet docs], done by [@MartinHjelmare] + +## 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 "All Service Calls" %} + +Entities that are now shown on the device page on the `configuration` or `diagnostic` +section, will **no longer be targeted and called** by service calls that target +the specific device or area the device or entity is in. + +If you need to make a service call to these entities, you will need to call +them by their entity ID explicitly. + +Please note: This does not apply to entity groups, as groups are explicitly +based on entities (unlike areas) and thus still work as before. + +([@emontnemery] - [#57671]) + +{% enddetails %} + +{% details "Amazon Alexa / Google Assistant" %} + +Entities that are now shown on the device page on the `configuration` or `diagnostic` +section, will **no longer be exposed** by default to Amazon Alexa or Google Assistant. + +If you want to expose these entities, you'll need to expose them explicitly. + +([@emontnemery]) + +{% enddetails %} + +{% details "Recorder / Databases" %} + +The Home Assistant project has now explicitly defined a set of databases +that are supported by the recorder. + +We now support the following databases: + +- MariaDB ≥ 10.3 +- MySQL ≥ 8.0 +- PostgreSQL ≥ 12 +- SQLite ≥ 3.32.1 + +All other databases and database versions are now deprecated. + +If your used or configured database doesn't match any of the above requirements, +a warning will be logged. As of Home Assistant 2022.1, the recorder will +no longer connect to an unsupported database. + +([@emontnemery] - [#58161]) ([recorder docs]) + +--- + +It is no longer possible to filter out `state_changed` events from the +recorder's `event_types` exclude filter. + +A warning will be logged in Home Assistant Core 2021.11 and the configuration +will be rejected in Home Assistant Core 2022.2. + +{% enddetails %} + +{% details "Python 3.8: Deprecation warning" %} + +Python 3.8 has been deprecated because Python 3.10 has been released. +Support will be dropped in Home Assistant 2022.1. + +Support for Python 3.10 hasn't completed yet, however we aim to complete +that before the 3.8 deprecation period has ended. It is advised to upgrade +to Python 3.9 at this point. + +If you run Home Assistant OS, Supervised or the Container installation type: +No action is required from your end, we will take care of this for you. + +([@balloob] - [#57079]) + +{% enddetails %} + +{% details "Aurora ABB Solar PV" %} + +The Aurora ABB Solar PV integration migrated to configuration via the UI. +Configuring Aurora ABB Solar PV 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. + +([@davet2001] - [#36300]) ([aurora_abb_powerone docs]) + +{% enddetails %} + +{% details "AVM FRITZ!Box Tools" %} + +AVM FRITZ!Box Tools services now ask for a `device_id` and no longer for an `entity_id`. +Please review your automation and scripts accordingly. + +([@chemelli74] - [#58005]) ([fritz docs]) + +{% enddetails %} + +{% details "DLNA Digital Media Renderer" %} + +The DLNA Digital Media Renderer integration migrated to configuration via the UI. Configuring +DLNA Digital Media Renderer 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; +Please check the integrations configuration page for imported DLNA-DMR configuration. +Once it has been migrated, it can be safely removed from your YAML configuration. + +([@chishm] - [#56886]) ([dlna_dmr docs]) + +{% enddetails %} + +{% details "Efergy" %} + +The Efergy integration has been migrated to configuration via the UI. +Configuring Efergy via YAML configuration has now 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. + +Additionally, the following sensor names have changed: + +- Energy Usage is now Power Usage. +- Any configured energy period, for example, monthly was Energy Consumed is now Monthly Consumption. +- Any configured cost period, for example, monthly was Energy Cost is now Monthly Energy Cost. +- Per-Device Usage is now Power Usage with the sensor id trailing. + +([@tkdrob] - [#56890]) ([efergy docs]) + +{% enddetails %} + +{% details "Environment Canada" %} + +The Environment Canada integration has been migrated to configuration via the UI. +Configuring Environment Canada via YAML configuration has now 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. + +Additionally, non-loop radar images are no longer supported; Sensor entities +now have the location of the station as a part of the sensor's entity name. + +([@gwww] - [#57127]) ([environment_canada docs]) + +{% enddetails %} + +{% details "Flux LED/MagicLight" %} + +The Flux LED integration has been migrated to configuration via the UI. +Configuring Flux LED via YAML configuration has now 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. + +([@icemanch] - [#56354]) ([flux_led docs]) + +{% enddetails %} + +{% details "HomeKit" %} + +The previously deprecated HomeKit configuration options `safe_mode`, +`zeroconf_default_interface`, and `auto_start` have now been removed. + +If you still have these options in your YAML configuration, you must be remove them +from your YAML configuration. + +([@bdraco] - [#58320]) + +{% enddetails %} + +{% details "Input Select / Dropdown Helper" %} + +When the option list of a Dropdown helper / `input_select` is updated, +it will try to maintain the currently selected option, if the selected +option also is present in the new options provided; otherwise it will +reset to the first option from the newly provided list. + +Previously, when a new list of options was provided, it would always +reset to the first item of the list. + +([@frenck] - [#53334]) ([input_select docs]) + +{% enddetails %} + +{% details "IQVIA" %} + +Previously, IQVIA supported long-term statistics for the `Asthma Index: Tomorrow` +sensor. This is incorrect: long-term statistics are meant for actual, +current measurements (not future forecasts). Therefore, long-term statistics +support has been removed for this sensor. + +([@bachya] - [#57687]) ([iqvia docs]) + +{% enddetails %} + +{% details "Itho Daalderop Spider" %} + +The Itho Daalderop Spider integration previously migrated to configuration via the UI. +Configuring Itho Daalderop Spider via YAML configuration has now been deprecated +and will be removed in a future Home Assistant release. + +Your existing YAML configuration has been automatically imported; +and thus can be safely removed from your YAML configuration after upgrading. + +([@peternijssen] - [#57974]) ([spider docs]) + +{% enddetails %} + +{% details "Microsoft Text-to-Speech (TTS)" %} + + +The default voice is changed to `JennyNeural`; The previous default `ZiraRUS` +(Standard Voice) is no longer supported in eastus or any other region that +has rolled out GA neural voices as Standard voices become deprecated. + +([@tylergibson] - [#58499]) ([microsoft docs]) + +{% enddetails %} + +{% details "OctoPrint" %} + +The OctoPrint integration migrated to configuration via the UI. Configuring +OctoPrint 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. + +The following sensors have been removed: + +- `sensor._time_remaining` +- `sensor._time_elapsed` + +The following sensors have been added: + +- `sensor.octoprint_start_time` +- `sensor.octoprint_estimated_finish_time` + +([@rfleming71] - [#58040]) ([octoprint docs]) + +{% enddetails %} + +{% details "OpenGarage" %} + +The attributes (`wifi_signal ` and `distance_sensor`) for OpenGarage covers +are removed and replaced by individual sensors. + +Also, `door_state` is removed as an attribute, but you can use the state +directly instead. + +Please update any automations or scripts that depend on the removed attributes. + +([@Danielhiversen] - [#57976]) ([opengarage docs]) + +{% enddetails %} + +{% details "OpenZWave" %} + +The OpenZWave (`ozw`) integration is being marked as deprecated. The upstream +project is not currently being maintained, and has not reached stable status. + +We recommend transitioning to the [Z-Wave JS integration](/integrations/zwave_js). + +While the integration is not currently slated for removal, it will no longer +be receiving updates and may be removed at a later date. + +See the [Z-Wave JS migration documentation](/integrations/zwave_js/#migrating-from-previous-z-wave-implementations) +for more information. + +{% enddetails %} + +{% details "Pentair ScreenLogic" %} + +Screenlogic lights have moved to the light platform. The switches that +previously represented these lights will need to manually be deleted in +`Configuration >> Entities`. If you are using these switch entities in +your automation or scripts, you will need to update those to use the new +light entities instead. + +The state is now refreshed with a short delay to ensure the toggles +do not flip/flop between states as the controller takes ~600ms to make the change. + +([@bdraco] - [#55467]) ([screenlogic docs]) + +{% enddetails %} + +{% details "Phone Modem" %} + +The sensor state attributes of `modem_callerid` integration are now only +populated when the values are known. + +If you use these attributes in your automations or scripts, you'll need to +adjust those to be able to handle missing attributes. + +([@tkdrob] - [#57774]) ([modem_callerid docs]) + +{% enddetails %} + +{% details "Rainforest Eagle" %} + +The previously deprecated YAML configuration of the Rainforest Eagle integration has been removed. + +Rainforest Eagle 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] - [#57636]) ([rainforest_eagle docs]) + +{% enddetails %} + +{% details "RainMachine" %} + +RainMachine services have been reorganized and now utilize a Home Assistant +target (entity ID) or selector (device ID) instead of using an internal +RainMachine identifier. + +Additionally, services are restricted to only the targets that apply: + +**Device Services (i.e., must be provided a device ID)** + +- `pause_watering` +- `stop_all` +- `unpause_watering` + +**Entity Services (i.e., must be provided an associated switch entity ID +[either a program or a zone])** + +- `disable_program` +- `disable_zone` +- `enable_program` +- `enable_zone` +- `start_program` +- `start_zone` +- `stop_program` +- `stop_zone` + +([@bachya] - [#57145]) ([rainmachine docs]) + +{% enddetails %} + +{% details "Renault" %} + +The `last_update` state attribute has been moved to a stand-alone entity +(and dropped from battery and location entities). If you used this attribute +in your scripts or automations; you'll need to adjust those to this change. + +([@epenet] - [#57750]) ([renault docs]) + +{% enddetails %} + +{% details "SimpliSafe" %} + +SimpliSafe requires a new web-based authentication method. When starting up, +Home Assistant will automatically prompt you to re-authorize your instance. + +([@bachya] - [#57212]) ([simplisafe docs]) + +{% enddetails %} + +{% details "SolarEdge" %} + +The SolarEdge integration now provides unique IDs for its entities, so the +entities are now visible and customizable in the Home Assistant frontend. + +Some names have been corrected as they had incorrect descriptions. This may +cause some of your entity IDs provided by SolarEdge to have changed this release. + +In case you have been using these entities in your automations, scripts, or +dashboards, you can either rename those entity IDs to the old entity ID +or adjust the places you've used them accordingly. + +Additionally, if a sensor you used disappeared, it might have been disabled by +default during upgrade. Please be sure to check if the entity is +enabled in that case. + +([@terminet85] - [#55902]) - ([@purcell-lab] - [#58773]) + +{% enddetails %} + +{% details "Sonos" %} + +The `sonos.set_option` service has been removed and replaced with +individual `switch` entities which both control the features and display +if currently enabled. + +The `night_sound` and `speech_enhance` attributes on the +Sonos `media_player` entities are also removed. + +If you are using those in your automations or scripts, you'll need to replace +these with the new `switch` entities. + +([@jjlawren] - [#54502]) ([sonos docs]) + +{% enddetails %} + +{% details "Stookalert" %} + +The Stookalert integration has been migrated to configuration via the UI. +Configuring Stookalert via YAML configuration has now 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. + +([@frenck] - [#57119]) ([stookalert docs]) + +{% enddetails %} + +{% details "Supervisor" %} + +The 2021.09 release deprecated the usage of "snapshot" in the Supervisor (`hassio`) +integration and was scheduled to be removed in 2021.11, that is now. + +Old services and service data that contained "snapshot" has now been removed, +and you need to update your configuration if you use any of these to continue to use it. + +Old service name | New service name +-- | -- +`hassio.snapshot_partial` | `hassio.backup_partial` +`hassio.snapshot_full` | `hassio.backup_full` + +If you used the `snapshot` argument for the restore services you now have to replace that with `slug` + +Example: + +```yaml +# Old name +service: hassio.restore_full +data: + snapshot: sn2321 + +# New name +service: hassio.restore_full +data: + slug: sn2321 +``` + +([@ludeeus] - [#57652]) ([hassio docs]) + +{% enddetails %} + +{% details "UptimeRobot" %} + +The previously deprecated YAML configuration of the UptimeRobot integration has been removed. + +UptimeRobot 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. + +([@ludeeus] - [#57761]) ([uptimerobot docs]) + +{% enddetails %} + +{% details "Utility Meter" %} + +The `offset` parameter for `utility_meter` sensors is now limited to at most +27 days. If you used more then 27 days you must now migrate to `cron`. + +([@dgomes] - [#55625]) ([utility_meter docs]) + +{% enddetails %} + +{% details "Venstar" %} + +The Venstar integration migrated to configuration via the UI. +Configuring Venstar 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. + +The humidifer and timeout options have been removed, and thus ignored when +importing your YAML configuration into the UI. + +([@garbled1] - [#58152]) ([venstar docs]) + +{% enddetails %} + +{% details "VLC media player Telnet" %} + +The VLC media player Telnet integration migrated to configuration via the UI. +Configuring VLC media player Telnet 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. + +([@MartinHjelmare] - [#57513]) ([vlc_telnet docs]) + +{% enddetails %} + +{% details "Xiaomi Miio" %} + +Attributes from the vacuum entities have been replaced with sensors. + +This means that all your references to these attributes must be replaced with +its sensor in your automations, scripts and dashboards. + +Some sensors have been disabled by default and need manual enablement, +once the integration has been set up. For example, the attribute +`mop_attached: true` has now been replaced with +`binary_sensor._mop_attached`. + +([@OGKevin] - [#54990]) ([xiaomi_miio docs]) + +{% enddetails %} + +{% details "Yeelight" %} + +The option to override the Yeelight model will only appear if the detected +model is not in the database. Otherwise, it will be hidden. + +([@bdraco] - [#56967]) ([yeelight docs]) + +{% enddetails %} + +## Farewell to the following + +The following integrations are no longer available as of this release: + +- **Essent** has been removed. The API is no longer usable for this integration + and has therefore been removed. ([@TheLastProject] - [#56991]) +- **Lyft** has been previously deprecated and now removed. API keys are no longer + being provided. ([@frenck] - [#57638]) +- **Nello** has been removed. The services are no longer available, + and have been offline for over 6 months. ([@pattyland] - [#57926]) +- **Huawei Router** has been removed. It relies on web scraping, which is no + longer allowed. ([@yuvalabou] - [#57136]) +- **Wink** has been previously deprecated and now removed. ([@frenck] - [#57634]) + +## All changes + +{% details "Click to see all changes!" %} + +- Bump version to 2021.11.0dev0 ([@frenck] - [#56835]) +- Strictly type Nanoleaf ([@milanmeu] - [#56852]) ([nanoleaf docs]) +- Add Device Info to Nanoleaf ([@milanmeu] - [#56856]) ([nanoleaf docs]) +- Add long-term statistics support for rain sensors ([@cgtobi] - [#56847]) ([netatmo docs]) +- removing excess variable ([@lanrat] - [#56849]) ([keyboard_remote docs]) +- Rename state to value_fn - picnic sensor ([@cdce8p] - [#56889]) ([picnic docs]) +- Deduplicate controls of UniFi services ([@Kane610] - [#56834]) ([unifi docs]) +- Add kPa as a pressure unit ([@gwww] - [#56885]) +- Remove some redundant code from trace ([@emontnemery] - [#56883]) ([trace docs]) +- Use HTTPStatus instead of HTTP_* consts in aiohttp web response statuses ([@scop] - [#56541]) +- Enable template icons for template numbers ([@JeffLIrion] - [#56154]) ([template docs]) +- Improve deCONZ services code quality ([@Kane610] - [#56904]) ([deconz docs]) +- Use HTTPStatus instead of HTTP_* constants in various test mocks ([@scop] - [#56543]) +- Bump fritzconnection to 1.7.0 ([@chemelli74] - [#56924]) ([fritz docs]) ([fritzbox_callmonitor docs]) +- Add SSDP discovery to Nanoleaf ([@milanmeu] - [#56907]) ([nanoleaf docs]) +- Get min and max color temperature for Nanoleaf light from library ([@milanmeu] - [#56863]) ([nanoleaf docs]) +- Upgrade watchdog to 2.1.6 ([@frenck] - [#56933]) ([folder_watcher docs]) +- Update denonavr codeowner ([@ol-iver] - [#56940]) ([denonavr docs]) +- Use NamedTuple - iqvia Rating ([@cdce8p] - [#56943]) ([iqvia docs]) +- Log when Nanoleaf is unavailable ([@milanmeu] - [#56921]) ([nanoleaf docs]) +- Remove injected logger in Ambient PWS and OpenUV ([@bachya] - [#56920]) ([openuv docs]) ([ambient_station docs]) +- Flux led config flow ([@icemanch] - [#56354]) ([flux_led docs]) (breaking-change) +- Remove icon if device_class is defined - homekit_controller ([@cdce8p] - [#56946]) ([homekit_controller docs]) +- Sia package update to 3.0.2 ([@eavanvalkenburg] - [#56896]) ([sia docs]) +- ZHA support for additional entities on ElectricalMeasurement ZCL cluster ([@Adminiuga] - [#56909]) ([zha docs]) +- Add strict typing to Tractive integration ([@bieniu] - [#56948]) ([tractive docs]) +- Bump gios library to 2.1.0 ([@bieniu] - [#56984]) ([gios docs]) +- Update surepetcare test ([@Danielhiversen] - [#56871]) ([surepetcare docs]) +- Update pyhomematic to 0.1.75 ([@danielperna84] - [#56995]) ([homematic docs]) +- Support connecting to ElkM1 over TLS 1.2 ([@gwww] - [#56887]) ([elkm1 docs]) +- Bump nettigo_air_monitor library to version 1.1.0 ([@bieniu] - [#56952]) ([nam docs]) +- Use Final type only when needed in Tractive ([@bieniu] - [#57000]) ([tractive docs]) +- Minor improvements to deCONZ light platform ([@Kane610] - [#56953]) ([deconz docs]) +- Use EntityDescription - homekit_controller ([@cdce8p] - [#56945]) ([homekit_controller docs]) +- Fix tractive flaky test ([@balloob] - [#57026]) ([tractive docs]) +- Remove Essent integration ([@TheLastProject] - [#56991]) ([essent docs]) (breaking-change) +- Prevent opening of sockets in kira tests ([@emontnemery] - [#57038]) ([kira docs]) +- Use NamedTuple for homekit valve type + service info ([@cdce8p] - [#56944]) ([homekit docs]) +- Use hass_client_no_auth test fixture in additional tests ([@emontnemery] - [#57037]) +- Use NamedTuple for darksky condition picture ([@cdce8p] - [#56942]) ([darksky docs]) +- Upgrade coverage to 6.0 ([@frenck] - [#57041]) +- Mock out network.util.async_get_source_ip in tests ([@emontnemery] - [#57039]) ([local_ip docs]) +- Fix multiline lambda formatting - homekit_controller ([@cdce8p] - [#57046]) ([homekit_controller docs]) +- Use NamedTuple for repetier API methods ([@cdce8p] - [#56941]) ([repetier docs]) +- Add ZHA HVAC Action sensor ([@Adminiuga] - [#57021]) ([zha docs]) +- Prevent tplink from opening sockets in tests ([@bdraco] - [#57058]) ([tplink docs]) +- Prevent dlna_dmr from opening sockets in tests ([@bdraco] - [#57059]) ([dlna_dmr docs]) +- Activate mypy for rpi_power ([@Misiu] - [#57047]) ([rpi_power docs]) +- Bump nest 0.3.7 to prepare for WebRTC support ([@allenporter] - [#57089]) ([nest docs]) +- Deprecate Python 3.8 ([@balloob] - [#57079]) (breaking-change) +- Additional place to use isinstance rather than do a string compare ([@Kane610] - [#57094]) ([deconz docs]) +- Upgrade jinja2 to 3.0.2 ([@frenck] - [#57095]) +- Upgrade sentry-sdk to 1.4.3 ([@frenck] - [#57096]) ([sentry docs]) +- Upgrade debugpy to 1.5.0 ([@frenck] - [#57098]) ([debugpy docs]) +- Prevent opening of sockets in mqtt tests ([@emontnemery] - [#57101]) ([mqtt docs]) +- Fix color util links to Philips Hue documentation ([@bokub] - [#57099]) +- Add additional properties to node_status WS cmd ([@raman325] - [#56927]) ([zwave_js docs]) +- Use current config entry standards for OpenUV ([@bachya] - [#57137]) ([openuv docs]) +- Add support for POLY and RLY in Coinbase ([@TomBrien] - [#57144]) ([coinbase docs]) +- Add additional devices to flux_led discovery ([@bdraco] - [#57086]) ([flux_led docs]) +- Block tests from opening sockets ([@emontnemery] - [#55516]) +- Write flux_led state after turning on/off ([@bdraco] - [#57152]) ([flux_led docs]) +- Add sw_version and model to flux_led device info ([@bdraco] - [#56958]) ([flux_led docs]) +- Add missing return type to async_unload_entry and async_setup_entry ([@Misiu] - [#57115]) +- Add home-assistant/core as codeowner for recorder ([@emontnemery] - [#57224]) ([recorder docs]) +- Upgrade coverage to 6.0.1 ([@frenck] - [#57235]) +- Toon, support Energy dashboard by default ([@frenck] - [#57233]) ([toon docs]) +- Ensure that WattTime is strictly typed ([@bachya] - [#57130]) +- Improve deCONZ signal strings ([@Kane610] - [#57140]) ([deconz docs]) +- Refactor persistent notification to no longer route all data via a service ([@balloob] - [#57157]) ([persistent_notification docs]) (breaking-change) +- Allow resetting an MQTT number ([@emontnemery] - [#57161]) ([mqtt docs]) +- Use EntityDescription - darksky ([@cdce8p] - [#57083]) ([darksky docs]) +- Enable template icons for template selects ([@JeffLIrion] - [#57092]) ([template docs]) +- Refactor Xiaomi vacuum to sensors ([@OGKevin] - [#54990]) ([xiaomi_miio docs]) (breaking-change) +- Upgrade ambee to 0.4.0 ([@frenck] - [#57264]) ([ambee docs]) +- Use current config entry standards for Ambient PWS ([@bachya] - [#57133]) ([ambient_station docs]) +- Improve dlna_dmr code quality ([@chishm] - [#56886]) ([dlna_dmr docs]) (breaking-change) +- Motion_blinds fix up button not available for unidirection blinds ([@starkillerOG] - [#57266]) ([motion_blinds docs]) +- Add WebSocket API for intiting a WebRTC stream ([@allenporter] - [#57034]) ([camera docs]) +- Use _attr in 17track ([@yuvalabou] - [#57187]) ([seventeentrack docs]) +- Add config flow to Stookalert ([@frenck] - [#57119]) ([stookalert docs]) (breaking-change) +- Drop more persistent notification patches ([@balloob] - [#57295]) ([dlna_dmr docs]) ([waze_travel_time docs]) ([google_travel_time docs]) ([vizio docs]) ([climacell docs]) +- Disconnect websockets after token is revoked ([@dboslee] - [#57091]) ([websocket_api docs]) +- Reorganize RainMachine services ([@bachya] - [#57145]) ([rainmachine docs]) (breaking-change) +- Add device info to nws ([@MatthewFlamm] - [#57153]) ([nws docs]) +- Use built-in logic for options handler in AirVisual ([@bachya] - [#57131]) ([airvisual docs]) +- Use current config entry standards for SimpliSafe ([@bachya] - [#57141]) ([simplisafe docs]) +- Bump greeclimate to 0.11.9 ([@cmroche] - [#57358]) ([gree docs]) +- Handle prepare timeout in websocket API ([@balloob] - [#55989]) ([websocket_api docs]) +- Add Sure Petcare Felaqua device ([@benleb] - [#56823]) ([surepetcare docs]) +- Add Shelly config entry reload on device config change ([@thecode] - [#57356]) ([shelly docs]) +- Create devices for Growatt ([@indykoning] - [#57068]) ([growatt_server docs]) +- Add -9999 error fix back in Xiaomi Miio ([@bieniu] - [#57399]) ([xiaomi_miio docs]) +- Add System Bridge display sensors ([@timmo001] - [#57019]) ([system_bridge docs]) +- Improve Whirlpool component code quality ([@abmantis] - [#57357]) ([whirlpool docs]) +- Flux led color support ([@icemanch] - [#57353]) ([flux_led docs]) +- Convert flux_led to use asyncio ([@bdraco] - [#57440]) ([flux_led docs]) +- Update pyfronius to 0.7.0 ([@farmio] - [#57279]) ([fronius docs]) +- Bump aiodiscover to 2.4.5 ([@bdraco] - [#57439]) ([dhcp docs]) +- Upgrade rvx to 0.7.0 ([@spahlimi] - [#57430]) ([yamaha docs]) +- Bump pytautulli to 21.10.0 ([@tkdrob] - [#57449]) ([tautulli docs]) +- Add config flow for efergy ([@tkdrob] - [#56890]) ([efergy docs]) (breaking-change) +- Use _attr for Suez water ([@yuvalabou] - [#57278]) ([suez_water docs]) +- Add test of lazy_error in modbus ([@janiversen] - [#57170]) ([modbus docs]) +- Update somecomfort library to 0.7.0 ([@rdfurman] - [#57214]) ([honeywell docs]) +- Add Netgear ssid and conn_ap_mac sensors ([@starkillerOG] - [#57226]) ([netgear docs]) +- Bump Daikin version, catch new exception during config_flow ([@fredrike] - [#57080]) ([daikin docs]) +- Add xiaomi vacuum -9999 fix back ([@OGKevin] - [#57473]) ([xiaomi_miio docs]) +- Add energy management for efergy ([@tkdrob] - [#57472]) ([efergy docs]) +- Don't override methods marked as final ([@cdce8p] - [#57477]) +- Use EntityDescription - openweathermap ([@cdce8p] - [#56888]) ([openweathermap docs]) +- Add dhcp support for tplink KP401 ([@bdraco] - [#57456]) ([tplink docs]) +- Use current config entry standards for AirVisual ([@bachya] - [#57132]) ([airvisual docs]) +- Bump `nettigo_air_monitor` library to version 1.1.1 ([@bieniu] - [#57483]) ([nam docs]) +- Switch to config_flow for Environment Canada ([@gwww] - [#57127]) ([environment_canada docs]) (breaking-change) +- Add the switch platform to flux_led ([@bdraco] - [#57444]) ([flux_led docs]) (new-platform) +- Add DHCP discovery for additional Zengge devices, generic magichome strips ([@bdraco] - [#57408]) ([flux_led docs]) +- Use entity description for Ezviz sensors ([@RenierM26] - [#56634]) ([ezviz docs]) +- Streamline modbus before 100% coverage. ([@janiversen] - [#57478]) ([modbus docs]) +- Add ability to re-auth WattTime ([@bachya] - [#56582]) ([watttime docs]) +- Fix watttime config flow and tests ([@MartinHjelmare] - [#57498]) ([watttime docs]) +- Move attribution attribute to Entity base class ([@frenck] - [#57492]) ([weather docs]) ([air_quality docs]) +- Allow MQTT discovery availability shortcut ([@jbouwh] - [#57479]) ([mqtt docs]) +- Override the jinja2 int filter ([@emontnemery] - [#57470]) +- Fix Tuya error when removing device ([@frenck] - [#57512]) ([tuya docs]) +- Pass device manager directly in Tuya registry cleanup ([@frenck] - [#57511]) ([tuya docs]) +- Entity attributes cleanup in Tuya base entity ([@frenck] - [#57510]) ([tuya docs]) +- Migrate attribution attribute for Picnic ([@frenck] - [#57507]) ([picnic docs]) +- Migrate attribution attribute for AmberElectric ([@frenck] - [#57505]) ([amberelectric docs]) +- Migrate attribution attribute for UptimeRobot ([@frenck] - [#57508]) ([uptimerobot docs]) +- Migrate attribution attribute for Arlo ([@frenck] - [#57504]) ([arlo docs]) +- Migrate attribution attribute for Stookalert ([@frenck] - [#57503]) ([stookalert docs]) +- Upgrade flake8-comprehensions to 3.7.0 ([@frenck] - [#57520]) +- Upgrade coverage to 6.0.2 ([@frenck] - [#57518]) +- Add statistics support to nest sensors ([@allenporter] - [#57393]) ([nest docs]) +- Bump `accuweather` library to version 0.3.0 ([@bieniu] - [#57497]) ([accuweather docs]) +- MQTT rework constants ([@jbouwh] - [#57529]) ([mqtt docs]) +- Move all Tuya device handling into device listener class ([@frenck] - [#57523]) ([tuya docs]) +- Move Tuya remap method from base to light entity class ([@frenck] - [#57527]) ([tuya docs]) +- Use EntityDescription - bmw_connected_drive ([@cdce8p] - [#56861]) ([bmw_connected_drive docs]) +- Alphabetize parts of device registry code ([@emontnemery] - [#57532]) ([config docs]) +- Tweaks to Tuya base entity ([@frenck] - [#57526]) ([tuya docs]) +- Use Tuya endpoints values from upstream library ([@frenck] - [#57537]) ([tuya docs]) +- Bump pytradfri to 7.0.7 ([@janiversen] - [#57543]) ([tradfri docs]) +- Update flake8 related packages ([@cdce8p] - [#57538]) +- Add service to Rainmachine to push weather data from Home Assistant ([@shbatm] - [#57354]) ([rainmachine docs]) +- Refactor Tuya device handling ([@frenck] - [#57545]) ([tuya docs]) +- Search for areas, devices and entities in script choose actions ([@emontnemery] - [#57554]) +- Add statistics tests for sensor with changing device class ([@emontnemery] - [#57317]) ([sensor docs]) +- Replace all Tuya device property constants with an Enum ([@frenck] - [#57559]) ([tuya docs]) +- Always include start point for statistics ([@emontnemery] - [#57182]) ([recorder docs]) ([sensor docs]) +- Refresh the bond token if it has changed and available ([@bdraco] - [#57583]) ([bond docs]) +- Fix single channel controllers with flux_led ([@bdraco] - [#57458]) ([flux_led docs]) +- Use a human readable model name in flux_led ([@bdraco] - [#57519]) ([flux_led docs]) +- Warn user if Gateway is already paired ([@janiversen] - [#57530]) ([tradfri docs]) +- Add Nest WebRTC and support Nest Battery Camera and Nest Battery Doorbell ([@allenporter] - [#57299]) ([camera docs]) ([nest docs]) +- Add a use_time sensor for Xiaomi_miio humidifiers ([@jbouwh] - [#57560]) ([xiaomi_miio docs]) +- Add unique_id support for eq3btsmart ([@lkempf] - [#57603]) ([eq3btsmart docs]) +- Add support for multiple Whirlpool airconditioners ([@abmantis] - [#57588]) ([whirlpool docs]) +- Improve warning prints for sensor statistics ([@emontnemery] - [#57605]) ([sensor docs]) +- Bump version ([@Cereal2nd] - [#57607]) ([velbus docs]) +- Use gather ipv wait to remove credentials to catch exceptions ([@balloob] - [#57596]) +- Guard linking credential that is already linked ([@balloob] - [#57595]) ([auth docs]) +- Prevent event loop delay / instability from discovery ([@bdraco] - [#57463]) ([zeroconf docs]) ([ssdp docs]) +- Clarify that only HTTPS can be used in fitbit ([@ammgws] - [#57116]) ([fitbit docs]) +- ESPHome move ReconnectLogic to aioesphomeapi ([@OttoWinter] - [#57601]) ([esphome docs]) +- Provide device_id in hue_event ([@krys1976] - [#56982]) ([hue docs]) +- Refactor Tuya climate platform ([@frenck] - [#57609]) ([climate docs]) ([tuya docs]) +- Modbus baseplatform.py and Validators.py 100% coverage (activate coverage) ([@janiversen] - [#57546]) ([modbus docs]) +- Use EntityDescription in Tuya Switch platform ([@frenck] - [#57581]) ([tuya docs]) +- Remove debug log ([@balloob] - [#57619]) +- Add binary sensor platform to Tuya ([@frenck] - [#57623]) ([tuya docs]) (new-platform) +- Update tests searching for areas referenced in automations ([@emontnemery] - [#57558]) +- Remove myself as code owner from Toon ([@frenck] - [#57625]) ([toon docs]) +- Use classmethod in Tuya TypeData classes ([@frenck] - [#57627]) ([tuya docs]) +- Prettify Tuya entity class names ([@frenck] - [#57629]) ([tuya docs]) +- Use entity_registry_enabled_default for Nut sensors ([@ollo69] - [#56854]) ([nut docs]) +- Remove deprecated Wink integration ([@frenck] - [#57634]) ([discovery docs]) ([wink docs]) (breaking-change) +- Nut: Use coordinator data, code cleanup and add test coverage ([@ollo69] - [#57643]) ([nut docs]) +- Correct state classes for systemmonitor sensors ([@mib1185] - [#57615]) ([systemmonitor docs]) +- Remove YAML configuration from Rainforest Eagle ([@frenck] - [#57636]) ([rainforest_eagle docs]) (breaking-change) +- Use HTTPStatus instead of HTTP_* int constants in mobile_app responses ([@scop] - [#56418]) ([mobile_app docs]) +- Use reference strings in soma ([@jasonmadigan] - [#57564]) ([soma docs]) +- Upgrade pyyaml to 6.0 ([@frenck] - [#57648]) +- Remove snapshot from hassio integration ([@ludeeus] - [#57652]) ([hassio docs]) (breaking-change) +- Add config and diagnostic entities ([@emontnemery] - [#57528]) ([config docs]) +- Bump flux_led to 0.24.5 ([@bdraco] - [#57653]) ([flux_led docs]) +- Late review comments. ([@janiversen] - [#57654]) ([modbus docs]) +- Migrate attribution attribute for bbox ([@frenck] - [#57650]) ([bbox docs]) +- Migrate attribution attribute for bitcoin ([@frenck] - [#57651]) ([bitcoin docs]) +- Migrate attribution attribute for Aftership ([@frenck] - [#57649]) ([aftership docs]) +- Remove deprecated Lyft integration ([@frenck] - [#57638]) ([lyft docs]) (breaking-change) +- Only pass libav logger messages when stream logger is set to debug ([@uvjustin] - [#57616]) ([stream docs]) +- Add select platform to Tuya ([@frenck] - [#57674]) ([tuya docs]) +- Clean up unused loggers ([@tkdrob] - [#57662]) +- Update xknx to version 0.18.10 ([@marvin-w] - [#57635]) ([knx docs]) +- Add support for device configuration URL ([@emontnemery] - [#57539]) ([config docs]) +- Fix lint issue ([@balloob] - [#57694]) +- Add sensor platform to Tuya ([@frenck] - [#57668]) ([tuya docs]) (new-platform) +- Port unmerged fixes from tuya_v2 ([@pabigot] - [#57624]) ([tuya docs]) +- Add number platform to Tuya ([@frenck] - [#57672]) ([tuya docs]) +- Add entity category to WLED ([@balloob] - [#57693]) ([wled docs]) +- Add service configuration URL to Stookalert ([@frenck] - [#57697]) ([stookalert docs]) +- Add device configuration URL to Plugwise ([@frenck] - [#57696]) ([plugwise docs]) +- Add service configuration URL to Spotify ([@frenck] - [#57701]) ([spotify docs]) +- Bump frontend to 20211014.0 ([@balloob] - [#57706]) ([frontend docs]) +- Add support for entity categories to NUT entities ([@mib1185] - [#57689]) ([nut docs]) +- Add support for entity categories to Synology DSM entities ([@mib1185] - [#57690]) ([synology_dsm docs]) +- Optimize update calls for AVM Fritz!Smarthome devices ([@mib1185] - [#57579]) ([fritzbox docs]) +- Skip auto-update when fqdn and ssl-verfiy is used for Synology DSM ([@mib1185] - [#57568]) ([synology_dsm docs]) +- Add url to CO2signal ([@balloob] - [#57703]) ([co2signal docs]) +- Add configuration url to Synology DSM ([@mib1185] - [#57704]) ([synology_dsm docs]) +- Add state_class to EnOcean sensors ([@davidlb] - [#57666]) ([enocean docs]) +- Remove long-term statistics from IQVIA forecast sensor ([@bachya] - [#57687]) ([iqvia docs]) (breaking-change) +- Add entity category to Shelly ([@bieniu] - [#57705]) ([shelly docs]) +- Add strict typing to goalzero ([@tkdrob] - [#57680]) ([goalzero docs]) +- Add configuration_url to Uptime Robot ([@ludeeus] - [#57709]) ([uptimerobot docs]) +- push motionblinds to 0.5.6 ([@starkillerOG] - [#57707]) ([motion_blinds docs]) +- Add service configuration URL to Verisure ([@frenck] - [#57713]) ([verisure docs]) +- Add service configuration URL to Speedtest.net ([@frenck] - [#57715]) ([speedtestdotnet docs]) +- Fix platform typo in Tuya const ([@ludeeus] - [#57716]) ([tuya docs]) +- Add device configuration URL to WLED ([@frenck] - [#57692]) ([wled docs]) +- Change name from Uptime Robot to UptimeRobot ([@ludeeus] - [#57714]) ([uptimerobot docs]) +- Xiaomi Miio appropriatly raise ConfigEntryAuthFailed/ConfigEntryNotReady ([@starkillerOG] - [#54696]) ([xiaomi_miio docs]) +- Add entity category to Xiaomi Miio ([@bieniu] - [#57719]) ([xiaomi_miio docs]) +- Add entity category to Tractive ([@bieniu] - [#57720]) ([tractive docs]) +- Add entity category to Brother ([@bieniu] - [#57728]) ([brother docs]) +- Add service configuration URL to MQTT ([@frenck] - [#57731]) ([mqtt docs]) +- Add Shelly "installed version" extra state attribute to Gen2 firmware update sensor ([@thecode] - [#57722]) ([shelly docs]) +- Add configuration url to Pi hole ([@mib1185] - [#57718]) ([pi_hole docs]) +- Add configuration_url to gogogate2 ([@bdraco] - [#57739]) ([gogogate2 docs]) +- Add configuration url to nexia ([@bdraco] - [#57740]) ([nexia docs]) +- Add discovery support for single channel magichome controllers ([@bdraco] - [#57736]) ([flux_led docs]) +- COnvert DATA_TYPE to enum. ([@janiversen] - [#57699]) ([modbus docs]) +- Add entity category to cloud ([@balloob] - [#57747]) ([cloud docs]) +- Add onewire support for DS2413 ([@ronalterde] - [#55921]) ([onewire docs]) +- Fix WLED exception on close ([@balloob] - [#57752]) ([wled docs]) +- Fix signature for hassio.restore_partial service ([@avee87] - [#57735]) ([hassio docs]) +- Add documentation link for Supervisor integration ([@avee87] - [#57733]) ([hassio docs]) +- Centralize entity naming for Tuya entities ([@frenck] - [#57755]) ([tuya docs]) +- Add configuration URL to Brother ([@bieniu] - [#57726]) ([brother docs]) +- Minor tweak of entityfilter typing ([@emontnemery] - [#57756]) +- Activate strict typing for nfandroidtv ([@tkdrob] - [#57743]) ([nfandroidtv docs]) +- Move Tuya value scaling into IntegerTypeData ([@frenck] - [#57757]) ([tuya docs]) +- Add configuration url to rachio ([@bdraco] - [#57738]) ([rachio docs]) +- Renamed variables in Tuya ([@frenck] - [#57759]) ([tuya docs]) +- Add entity category to Nettigo Air Monitor entities ([@bieniu] - [#57698]) ([nam docs]) +- Remove YAML import from UptimeRobot ([@ludeeus] - [#57761]) ([uptimerobot docs]) (breaking-change) +- Swap order of int template helper kwargs ([@Petro31] - [#57729]) +- Add support for entity categories to MQTT entities ([@emontnemery] - [#57656]) ([mqtt docs]) +- Add renault last activity sensors ([@epenet] - [#57750]) ([renault docs]) (breaking-change) +- Don't add indirectly referenced config entities to service calls ([@emontnemery] - [#57671]) ([homekit docs]) ([homeassistant docs]) (breaking-change) +- Don't expose config or diagnostic entities to Amazon Alexa by default ([@emontnemery] - [#57770]) ([alexa docs]) +- Don't expose config or diagnostic entities to Google Assistant ([@emontnemery] - [#57669]) ([google_assistant docs]) (breaking-change) +- Don't expose config or diagnostic entities to cloud ([@emontnemery] - [#57771]) ([cloud docs]) (breaking-change) +- Fix modem_callerid test warning ([@MartinHjelmare] - [#57760]) ([modem_callerid docs]) +- Clean startup of modbus by moving service schemas ([@janiversen] - [#57763]) ([modbus docs]) +- Add device class to temperature sensors for octoprint ([@firstof9] - [#56997]) ([octoprint docs]) +- Merge bmw_connected_drive metric and imperial sensor types ([@cdce8p] - [#56910]) ([bmw_connected_drive docs]) +- Add PIR Detector (pir) device support to Tuya ([@frenck] - [#57784]) ([tuya docs]) +- Identify onetime listeners ([@balloob] - [#57751]) +- Add vlc telnet config flow ([@MartinHjelmare] - [#57513]) ([vlc_telnet docs]) (breaking-change) +- Add Emergency Button (sos) device support to Tuya ([@frenck] - [#57794]) ([tuya docs]) +- Use assignment expressions 10 ([@cdce8p] - [#57791]) ([emulated_hue docs]) ([fan docs]) ([group docs]) ([google_assistant docs]) ([device_automation docs]) +- Add siren platform to Tuya ([@frenck] - [#57780]) ([tuya docs]) +- Add Luminance Sensor (ldcg) device support to Tuya ([@frenck] - [#57797]) ([tuya docs]) +- Don't use cast when possible for goalzero ([@tkdrob] - [#57742]) ([goalzero docs]) +- Add float32 test to modbus ([@janiversen] - [#57805]) ([modbus docs]) +- Add configuration URL to RainMachine ([@bachya] - [#57732]) ([rainmachine docs]) +- Discover plex via zeroconf ([@bdraco] - [#57825]) ([plex docs]) +- Add configuration_url to Sense ([@bdraco] - [#57814]) ([sense docs]) +- Avoid exposing effects to flux_led lights that do not support them ([@bdraco] - [#57810]) ([flux_led docs]) +- Add myself as codeowner for Tuya ([@frenck] - [#57837]) ([tuya docs]) +- Fix vlc_telnet disconnect on unload ([@MartinHjelmare] - [#57836]) ([vlc_telnet docs]) +- Make sure Tile data storage conforms to standards ([@bachya] - [#57818]) ([tile docs]) +- Make sure ReCollect Waste data storage conforms to standards ([@bachya] - [#57817]) ([recollect_waste docs]) +- Add configuration URL to Efergy ([@tkdrob] - [#57839]) ([efergy docs]) +- Add support for device configuration URL to Nettigo Air Monitor integration ([@bieniu] - [#57695]) ([nam docs]) +- Bump pytradfri to v.7.1.0 ([@janiversen] - [#57861]) ([tradfri docs]) +- Add support for 'freeze' mode in Tuya thermostats (wk) ([@frenck] - [#57851]) ([tuya docs]) +- Add new mac vendor to sense DHCP ([@tkdrob] - [#57858]) ([sense docs]) +- Add tamper device class for binary sensor ([@frenck] - [#57632]) ([binary_sensor docs]) +- Use DeviceInfo class ([@Danielhiversen] - [#57868]) ([tibber docs]) ([surepetcare docs]) ([mill docs]) ([opengarage docs]) ([tractive docs]) +- Restore dhcp discovery support to tuya ([@bdraco] - [#57826]) ([tuya docs]) +- Avoid probing brother devices that have an existing config entry ([@bdraco] - [#57829]) ([brother docs]) +- Set state class in JuiceNet component ([@b-pass] - [#57870]) ([juicenet docs]) +- Add hassio discovery to VLC telnet ([@mib1185] - [#57815]) ([vlc_telnet docs]) +- Add camera platform to Tuya ([@frenck] - [#57865]) ([tuya docs]) (new-platform) +- Use separate weather condition for clear night in MetOffice forecasts ([@avee87] - [#55135]) ([metoffice docs]) +- Decrease `timeout` and `update_interval` in Xiaomi Miio integration ([@bieniu] - [#57339]) ([xiaomi_miio docs]) +- Add additional models to flux_led DHCP discovery ([@bdraco] - [#57881]) ([flux_led docs]) +- Add use time sensor for air purifiers ([@bieniu] - [#57775]) ([xiaomi_miio docs]) +- Make sure AirVisual data storage conforms to standards ([@bachya] - [#57806]) ([airvisual docs]) +- Make sure OpenUV data storage conforms to standards ([@bachya] - [#57813]) ([openuv docs]) +- Make sure Notion data storage conforms to standards ([@bachya] - [#57812]) ([notion docs]) +- Update xknx to 0.18.11 and fix flaky test ([@marvin-w] - [#57877]) ([knx docs]) +- Add sensor category for rssi and battery ([@elupus] - [#57848]) ([rfxtrx docs]) +- Bump pymodbus to 2.5.3. ([@janiversen] - [#57887]) ([modbus docs]) +- Bump pypoint ([@fredrike] - [#57888]) ([point docs]) +- Improve lutron caseta error reporting when bridge is offline ([@bdraco] - [#57832]) ([lutron_caseta docs]) +- Do not probe `nam` device if the host is already configured ([@bieniu] - [#57843]) ([nam docs]) +- Bump `brother` library to version 1.1.0 ([@bieniu] - [#57892]) ([brother docs]) +- Fix mode_callerid attributes ([@tkdrob] - [#57774]) ([modem_callerid docs]) (breaking-change) +- push motionblinds to 0.5.7 ([@starkillerOG] - [#57902]) ([motion_blinds docs]) +- Fix order of arguments in rainmachine sensors ([@bdraco] - [#57895]) ([rainmachine docs]) +- Add the correct device class to deCONZ Tamper entity ([@Kane610] - [#57834]) ([deconz docs]) +- Add unit/device_class validation and normalization to Tuya ([@frenck] - [#57913]) ([tuya docs]) +- Add category diagnostic to Tibber signal sensor ([@Danielhiversen] - [#57840]) ([tibber docs]) +- Add category diagnostic to Surepetcare battery sensor ([@Danielhiversen] - [#57852]) ([surepetcare docs]) +- Add category diagnostic to Switchbot battery and signal sensor ([@Danielhiversen] - [#57854]) ([switchbot docs]) +- Airthings entity category diagnostic ([@Danielhiversen] - [#57850]) ([airthings docs]) +- Add device info to Adax ([@Danielhiversen] - [#57907]) ([adax docs]) +- Use attr_device_info and add init tests for nut ([@ollo69] - [#57725]) ([nut docs]) +- Set `nest` camera always on STATE_STREAMING ([@allenporter] - [#57882]) ([nest docs]) +- Improve nest error handling for websocket streams ([@allenporter] - [#57885]) ([nest docs]) +- Add category diagnostic to Surepetcare binary sensor ([@Danielhiversen] - [#57908]) ([surepetcare docs]) +- Opengarage dataupdater ([@Danielhiversen] - [#56931]) ([opengarage docs]) +- Fix bond reloading on zeroconf discovery when host has not changed ([@bdraco] - [#57799]) ([bond docs]) +- Use assignment expressions 05 ([@cdce8p] - [#57785]) +- Use assignment expressions 08 ([@cdce8p] - [#57788]) +- Use assignment expressions 06 ([@cdce8p] - [#57786]) +- Use assignment expressions 03 ([@cdce8p] - [#57710]) +- Use assignment expressions 11 ([@cdce8p] - [#57792]) +- Use assignment expressions 09 ([@cdce8p] - [#57790]) +- Use assignment expressions 07 ([@cdce8p] - [#57787]) +- Add support for push updates to flux_led ([@bdraco] - [#57890]) ([flux_led docs]) +- Adax attr ([@Danielhiversen] - [#57867]) ([adax docs]) +- Add Vibration Sensor (zd) device support to Tuya ([@frenck] - [#57795]) ([tuya docs]) +- Use EntityDescription - bmw_connected_drive sensor ([@cdce8p] - [#57796]) ([bmw_connected_drive docs]) +- Fix additional nest camera_sdm_tests to use STATE_STREAMING ([@allenporter] - [#57920]) ([nest docs]) +- Bump broadlink to 0.18.0 ([@felipediel] - [#57929]) ([broadlink docs]) +- Rename `stream_type` to `frontend_stream_type` ([@allenporter] - [#57923]) ([camera docs]) ([nest docs]) +- New service reconnect_client for UniFi integration ([@Kane610] - [#57570]) ([unifi docs]) +- Bump actions/checkout from 2.3.4 to 2.3.5 (@dependabot - [#57947]) +- Tuya tweaks to entity category, registry enabled, icons & device classes ([@frenck] - [#57949]) ([tuya docs]) +- Use pytest fixtures on Renault tests ([@epenet] - [#57955]) ([renault docs]) +- Use assignment expressions 15 ([@cdce8p] - [#57961]) +- Add configuration url to Tasmota ([@emontnemery] - [#57957]) ([tasmota docs]) +- Use assignment expressions 19 ([@cdce8p] - [#57968]) +- Use assignment expressions 18 ([@cdce8p] - [#57967]) +- Bump hatasmota to 0.2.21 ([@emontnemery] - [#57966]) ([tasmota docs]) +- Support device and state classes for WAQI sensor ([@davidlb] - [#57762]) ([waqi docs]) +- Bump flux_led to 0.24.8 ([@bdraco] - [#57934]) ([flux_led docs]) +- Mark spider YAML configuration as deprecated ([@peternijssen] - [#57974]) ([spider docs]) (breaking-change) +- Use pytest fixtures on Onewire tests ([@epenet] - [#57973]) ([onewire docs]) +- Add Nut missing tests for config flow ([@ollo69] - [#57964]) ([nut docs]) +- Refactor Tuya light platform ([@frenck] - [#57980]) ([tuya docs]) +- Bump pysma to 0.6.7 ([@rklomp] - [#57978]) ([sma docs]) +- Bump pychromecast to 9.3.0 ([@emontnemery] - [#57991]) ([cast docs]) +- Bump fjaraskupan to 1.0.2 ([@elupus] - [#57992]) ([fjaraskupan docs]) +- Pickup codeowner for bond ([@bdraco] - [#57995]) ([bond docs]) +- Add vacuum platform to Tuya ([@frenck] - [#57996]) ([tuya docs]) (new-platform) +- Motion blinds add interface and wait_for_push options ([@starkillerOG] - [#50067]) ([motion_blinds docs]) +- Add to the Broadlink integration support for voltage, current, overload and total consumption sensors ([@felipediel] - [#53628]) ([broadlink docs]) +- Add configuration url to Juicenet ([@jesserockz] - [#57999]) ([juicenet docs]) +- Bump flux_led to 0.24.9 ([@bdraco] - [#58006]) ([flux_led docs]) +- BMW: Fix check_control_message short description ([@rikroe] - [#57998]) ([bmw_connected_drive docs]) +- Include webhook_id in mobile_app's notify registration_info ([@zacwest] - [#58007]) ([mobile_app docs]) +- Add configuration_url and entity_category to Fritz ([@chemelli74] - [#58004]) ([fritz docs]) +- Mark Tasmota status sensors as diagnostic sensors ([@emontnemery] - [#57958]) ([tasmota docs]) +- Use assignment expressions 16 ([@cdce8p] - [#57962]) +- Change warning to info when modbus is ready ([@janiversen] - [#57953]) ([modbus docs]) +- Log unhandled loop exception traces when asyncio debug is on ([@bdraco] - [#57602]) +- Add support for daily and monthly statistics ([@emontnemery] - [#57576]) ([recorder docs]) ([sensor docs]) +- Fix issue parsing color effect None in flux_led ([@brianegge] - [#57979]) ([flux_led docs]) +- Add service to stop air conditioning to bmw_connected_drive ([@rikroe] - [#57772]) ([bmw_connected_drive docs]) +- Add init tests for agent dvr ([@tkdrob] - [#57022]) ([agent_dvr docs]) +- Preventing working with incomplete discoveries from user config flow in upnp ([@StevenLooman] - [#57994]) ([upnp docs]) +- Open garage sensor ([@Danielhiversen] - [#57976]) ([opengarage docs]) (breaking-change) (new-platform) +- Rework Onewire tests to enable disabled entities ([@epenet] - [#58014]) ([onewire docs]) +- Store automation and script traces ([@emontnemery] - [#56894]) ([automation docs]) ([script docs]) ([trace docs]) +- Remove device category filtering from Tuya init ([@frenck] - [#58019]) ([tuya docs]) +- MQTT Alarm control panel - Enable remote code validation ([@jbouwh] - [#57764]) ([mqtt docs]) +- Deprecate OpenZWave in manifest ([@MartinHjelmare] - [#57987]) ([ozw docs]) (breaking-change) +- Add humidifier platform to Tuya ([@frenck] - [#58025]) ([tuya docs]) +- Add entity category to Hue ([@balloob] - [#58011]) ([hue docs]) +- Rewrite test for feedreader ([@briglx] - [#57292]) ([feedreader docs]) +- Add configuration url to Airthings ([@Danielhiversen] - [#58041]) ([airthings docs]) +- Add cover platform to Tuya ([@frenck] - [#58045]) ([tuya docs]) (new-platform) +- Add configuration url to Tractive ([@Danielhiversen] - [#58038]) ([tractive docs]) +- Add configuration url to Surepetcare ([@Danielhiversen] - [#58039]) ([surepetcare docs]) +- Add more info to OpenGarage device info ([@Danielhiversen] - [#58037]) ([opengarage docs]) +- Add MWh as an energy unit ([@emontnemery] - [#58034]) ([sensor docs]) +- Add Water Detector (sj) device support to Tuya ([@frenck] - [#58049]) ([tuya docs]) +- Add more sensors to Opengarage ([@Danielhiversen] - [#58042]) ([opengarage docs]) +- Clean up self references from Tuya climate platform constructor ([@frenck] - [#58051]) ([tuya docs]) +- Add entity category and state class to mobile app ([@balloob] - [#58012]) ([mobile_app docs]) +- Use constants in Onewire tests ([@epenet] - [#58017]) ([onewire docs]) +- Add support for kPa to sensor statistics ([@emontnemery] - [#58032]) ([sensor docs]) +- Fix clickatell send_error error check ([@scop] - [#57985]) ([clickatell docs]) +- Migrate SimpliSafe to new web-based authentication ([@bachya] - [#57212]) ([simplisafe docs]) (breaking-change) +- Rework RainMachine entity ID generation ([@bachya] - [#58055]) ([rainmachine docs]) +- Add Human Presence Sensor (hps) device support to Tuya ([@frenck] - [#58054]) ([tuya docs]) +- Bump flux_led to 0.24.11 ([@bdraco] - [#58020]) ([flux_led docs]) +- Add volume_up and volume_down to musiccast ([@vigonotion] - [#57919]) ([yamaha_musiccast docs]) +- Bump flux_led to 0.24.12 ([@bdraco] - [#58071]) ([flux_led docs]) +- Remove legacy tests in onewire ([@epenet] - [#58075]) ([onewire docs]) +- Assign entity category diagnostics to deCONZ battery sensors ([@Kane610] - [#58077]) ([deconz docs]) +- Bump pychromecast to 9.3.1 ([@emontnemery] - [#58035]) ([cast docs]) +- Address late review of unifi ([@Kane610] - [#58080]) ([unifi docs]) +- Don't use deprecated methods of retrieving registries in deCONZ ([@Kane610] - [#58081]) ([deconz docs]) +- Add deCONZ number config entity for Hue motion sensor delay ([@Kane610] - [#58076]) ([deconz docs]) +- Cleanup duplicate code in Onewire tests ([@epenet] - [#58082]) ([onewire docs]) +- Don't use deprecated ways of retrieving registries in Axis ([@Kane610] - [#58083]) ([axis docs]) +- Patch for Alexa percentage_step to precision ([@jbouwh] - [#58062]) ([alexa docs]) +- Fix supported_features behaviour for fan platform ([@jbouwh] - [#58065]) ([template docs]) +- Activate tradfri in coverage and clean conftest for tradfri ([@janiversen] - [#58058]) ([tradfri docs]) +- Please pylint for modbus test ([@janiversen] - [#58089]) ([modbus docs]) +- Add CO2 Detector (co2bj) device support to Tuya ([@frenck] - [#58093]) ([tuya docs]) +- Add state_class to current bandwith sensors for bbox integration ([@davidlb] - [#58086]) ([bbox docs]) +- Simplify signalling for updating available property of deCONZ entities ([@Kane610] - [#58078]) ([deconz docs]) +- Bump ismartgate to 4.0.3 ([@bdraco] - [#58073]) ([gogogate2 docs]) +- bitwise and for test supported_features ([@jbouwh] - [#58097]) ([template docs]) +- Report orphaned statistics in statistic validation ([@emontnemery] - [#57324]) ([recorder docs]) ([sensor docs]) +- Report all unrecorded sensors in statistics tool ([@emontnemery] - [#58092]) ([sensor docs]) +- Purge short term statistics ([@emontnemery] - [#58028]) ([recorder docs]) +- Fix issue where Number still would send force_update to super method ([@Kane610] - [#58110]) ([deconz docs]) +- Use assignment expressions 17 ([@cdce8p] - [#57963]) +- Fix referenced before assignment error in sonos speaker ([@tkdrob] - [#57924]) ([sonos docs]) +- Use assignment expressions 21 ([@cdce8p] - [#57970]) +- Complete Ceiling Light (xdd) device support for Tuya ([@frenck] - [#58095]) ([tuya docs]) +- Complete Switch/Socket/Power Strip device support for Tuya ([@frenck] - [#58106]) ([tuya docs]) +- Ensure lutron_caseta triggers can still be attached in setup retry state ([@bdraco] - [#57873]) ([lutron_caseta docs]) +- Bump hdate to 0.10.4 ([@yuvalabou] - [#58121]) ([jewish_calendar docs]) +- Assign entity category diagnostics to deCONZ tampering sensors ([@Kane610] - [#58112]) ([deconz docs]) +- Add entity categories for appropriate SimpliSafe entities ([@bachya] - [#58108]) ([simplisafe docs]) +- Add configuration url to Sonarr ([@jesserockz] - [#58085]) ([sonarr docs]) +- Correct unit_of_measurement for statistics sensor ([@emontnemery] - [#58023]) ([statistics docs]) +- Use assignment expressions 20 ([@cdce8p] - [#57969]) ([mqtt docs]) ([zha docs]) ([buienradar docs]) ([upb docs]) ([debugpy docs]) +- Add Formaldehyde Detector (jqbj) device support to Tuya ([@frenck] - [#58118]) ([tuya docs]) +- Add Dimmer Switch (tgkg) device support to Tuya ([@frenck] - [#58134]) ([tuya docs]) +- Use assignment expressions 12 ([@cdce8p] - [#57937]) +- Add entity categories for appropriate RainMachine entities ([@bachya] - [#58107]) ([rainmachine docs]) +- Add entity categories for appropriate Notion entities ([@bachya] - [#58105]) ([notion docs]) +- Add entity categories for appropriate Guardian entities ([@bachya] - [#58104]) ([guardian docs]) +- Add entity categories for appropriate Ambient PWS entities ([@bachya] - [#58100]) ([ambient_station docs]) +- Report modbus buffer too small or too big to unpack ([@janiversen] - [#57838]) ([modbus docs]) +- Fix connect_fail test and modbus.py 100% coverage ([@janiversen] - [#57894]) ([modbus docs]) +- Add entity categories for appropriate AirVisual entities ([@bachya] - [#58102]) ([airvisual docs]) +- Add `configuration_url` to Denon AVR integration ([@bieniu] - [#58116]) ([denonavr docs]) +- Move Screenlogic lights to the light platform ([@bdraco] - [#55467]) ([screenlogic docs]) (breaking-change) (new-platform) +- Run tests with -X dev and -bb ([@scop] - [#58079]) +- Bump frontend to 20211020.0 ([@balloob] - [#58139]) ([frontend docs]) +- Add auto slider/box mode to number entity ([@frenck] - [#57737]) ([demo docs]) ([number docs]) +- Add `configuration_url` to Sonos devices ([@jjlawren] - [#58148]) ([sonos docs]) +- Add `configuration_url` to Plex integration ([@jjlawren] - [#58149]) ([plex docs]) +- Add missing names for notify service fields ([@spacegaier] - [#58154]) ([notify docs]) +- Remove accidental blanks from Shelly trigger type translations ([@spacegaier] - [#58151]) ([shelly docs]) +- Update pyhomematic to 0.1.76 ([@danielperna84] - [#58136]) ([homematic docs]) +- input_datetime: Move has_date, has_time to capability_attributes ([@balloob] - [#58138]) ([input_datetime docs]) +- Use assignment expressions 14 ([@cdce8p] - [#57939]) +- Use assignment expressions 13 ([@cdce8p] - [#57938]) +- Add entity categories to goalzero ([@tkdrob] - [#57906]) ([goalzero docs]) +- Use assignment expressions 22 ([@cdce8p] - [#57971]) +- Add Device Type Energy to Srp Energy Sensor ([@briglx] - [#58147]) ([srp_energy docs]) +- Address late review for Fritz entity_category ([@chemelli74] - [#58141]) ([fritz docs]) +- Clean up SimpliSafe entity inheritance structure ([@bachya] - [#58063]) ([simplisafe docs]) +- Revert "Swap order of int template helper kwargs (#57729)" ([@emontnemery] - [#58015]) +- Add long-term statistics for AEMET sensors ([@Noltari] - [#57844]) ([aemet docs]) +- Add LOOKin integration ([@ANMalko] - [#58125]) ([lookin docs]) (new-integration) +- Improve SSDP discovery compatibility when device was discovery through an SSDP advertisement ([@StevenLooman] - [#58133]) ([ssdp docs]) +- Bump async-upnp-client to 0.22.9 ([@bdraco] - [#58185]) ([upnp docs]) ([yeelight docs]) ([dlna_dmr docs]) ([ssdp docs]) +- Add climate platform to lookin ([@ANMalko] - [#58175]) ([lookin docs]) (new-platform) +- Move notify setup to legacy ([@MartinHjelmare] - [#58033]) ([notify docs]) +- Remove unreachable code in data_entry_flow.py ([@bdraco] - [#58193]) +- Allow setting the nexia run mode with the hvac mode ([@bdraco] - [#57940]) ([nexia docs]) +- Cleanup lookin entity MRO and inheritance ([@bdraco] - [#58194]) ([lookin docs]) +- Tweak energy validator ([@emontnemery] - [#58018]) ([energy docs]) +- Fjaraskupan entity categories ([@elupus] - [#57846]) ([fjaraskupan docs]) +- Add long-term statistics for Tado sensors ([@Noltari] - [#58111]) ([tado docs]) +- Add `configuration_url` to AsusWrt integration ([@bieniu] - [#58172]) ([asuswrt docs]) +- Add support for device configuration URL to Axis devices ([@Kane610] - [#58176]) ([axis docs]) +- Use assignment expressions 23 ([@cdce8p] - [#58180]) +- Add `configuration_url` to Netatmo devices ([@cgtobi] - [#58160]) ([netatmo docs]) +- Use assignment expressions 27 ([@cdce8p] - [#58188]) +- Use assignment expressions 26 ([@cdce8p] - [#58187]) +- Use DeviceInfo on zha ([@epenet] - [#58202]) ([zha docs]) +- Use assignment expressions 25 ([@cdce8p] - [#58182]) +- Use DeviceInfo on zwave ([@epenet] - [#58183]) ([zwave docs]) +- Bump google-nest-sdm to 0.3.8 ([@allenporter] - [#58186]) ([nest docs]) +- Fix registration UI to work for Israel devices ([@tomer-w] - [#58192]) ([tuya docs]) +- Cleanup device registration in Onewire ([@epenet] - [#58101]) ([onewire docs]) +- Use DeviceInfo on components with via_device (H) ([@epenet] - [#58211]) ([hive docs]) ([hue docs]) ([homematicip_cloud docs]) ([hunterdouglas_powerview docs]) +- Remove black color name for light dropdowns ([@TomBrien] - [#58207]) ([light docs]) +- Make sure IQVIA data storage conforms to standards ([@bachya] - [#57811]) ([iqvia docs]) +- Use DeviceInfo on components with via_device (A-G) ([@epenet] - [#58210]) ([deconz docs]) ([elkm1 docs]) ([freebox docs]) ([directv docs]) ([fritz docs]) ([acmeda docs]) ([guardian docs]) ([bosch_shc docs]) +- Make sure RainMachine data storage conforms to standards ([@bachya] - [#57816]) ([rainmachine docs]) +- Make sure Ambient PWS data storage conforms to standards ([@bachya] - [#57807]) ([ambient_station docs]) +- Add memory/cpu percentage to Supervisor addons entities ([@avee87] - [#57468]) ([hassio docs]) +- Make sure Guardian data storage conforms to standards ([@bachya] - [#57809]) ([guardian docs]) +- Use DeviceInfo on components with via_device (I-T) ([@epenet] - [#58212]) +- Use DeviceInfo on components with via_device (R-X) ([@epenet] - [#58213]) ([tado docs]) ([toon docs]) ([xiaomi_aqara docs]) ([simplisafe docs]) ([somfy docs]) ([xiaomi_miio docs]) ([synology_dsm docs]) ([wilight docs]) ([sia docs]) ([roon docs]) ([ruckus_unleashed docs]) +- Use assignment expressions 28 ([@cdce8p] - [#58189]) +- Use assignment expressions 24 ([@cdce8p] - [#58181]) +- Add Smoke Detector (ywbj) device support to Tuya ([@regevbr] - [#58170]) ([tuya docs]) +- Enable long-term statistics for OpenWeatherMap sensors ([@dkt01] - [#57781]) ([openweathermap docs]) +- Use HTTPStatus instead of HTTP_ consts and magic values in components/a* ([@scop] - [#57988]) +- Gogogate2 add statistics ([@thomas-svrts] - [#58178]) ([gogogate2 docs]) +- Warn if state_changed events are excluded from recorder ([@emontnemery] - [#58021]) ([recorder docs]) (breaking-change) +- Support for Fritz!DECT 500 lightbulbs ([@flabbamann] - [#52830]) ([fritzbox docs]) (new-platform) +- Switch Fritz to device selector for services ([@chemelli74] - [#58005]) ([fritz docs]) (breaking-change) +- Rework octoprint ([@rfleming71] - [#58040]) ([octoprint docs]) (breaking-change) +- Use HTTPStatus instead of HTTP_ consts and magic values in comp.../[de]* ([@scop] - [#57990]) +- Use DeviceInfo class - A ([@tkdrob] - [#57859]) +- Use DeviceInfo Class D ([@tkdrob] - [#58218]) +- Use DeviceInfo on components with via_device ([@epenet] - [#58222]) ([tellduslive docs]) ([homekit_controller docs]) ([myq docs]) ([onewire docs]) ([ozw docs]) ([bond docs]) +- Fix fritzbox tests ([@flabbamann] - [#58227]) ([fritzbox docs]) +- Use DeviceInfo on components with configuration_url ([@epenet] - [#58223]) +- Add strict typing to efergy ([@tkdrob] - [#57682]) +- Consolidate ESPHome icon-handling code into EsphomeEntity ([@paulmonigatti] - [#57744]) ([esphome docs]) +- Fix unit of measurement for P1 Montior ([@klaasnicolaas] - [#57495]) ([p1_monitor docs]) +- Bump pylgnetcast to 0.3.4 ([@Drafteed] - [#58233]) ([lg_netcast docs]) +- Fix plugwise longterm statistics ([@bouwew] - [#58127]) ([plugwise docs]) +- Use value_fn for bmw_connected_drive binary_sensor ([@cdce8p] - [#57540]) ([bmw_connected_drive docs]) +- Index in-progress flows to avoid linear search ([@bdraco] - [#58146]) ([zha docs]) ([auth docs]) ([point docs]) ([smartthings docs]) ([withings docs]) +- Add product ID to model for Tuya ([@frenck] - [#58235]) ([tuya docs]) +- Add support for device configuration URL to deCONZ gateway ([@Kane610] - [#58184]) ([deconz docs]) +- Use HTTPStatus instead of HTTP_ consts and magic values in comp.../[bc]* ([@scop] - [#57989]) +- Update naming scheme for Renault entities ([@epenet] - [#57922]) ([renault docs]) +- Add datetime_today template method ([@Petro31] - [#57435]) +- Add area_entities and area_devices template functions/filters ([@raman325] - [#55228]) +- Add support for device configuration URL to UniFi Controller ([@Kane610] - [#58237]) ([unifi docs]) +- Add warning when entity used in template doesn't exist ([@avee87] - [#57316]) +- Enable strict typing in lookin ([@bdraco] - [#58238]) ([lookin docs]) +- Add support for min/max dimmer brightness in Tuya ([@frenck] - [#58165]) ([tuya docs]) +- Restore the previous state of a KNX binary sensor ([@marvin-w] - [#57891]) ([knx docs]) +- Nello removal ([@pattyland] - [#57926]) ([nello docs]) (breaking-change) +- Use attributes octoprint ([@cdce8p] - [#58241]) ([octoprint docs]) +- Add statistics support to Huisbaasje ([@dennisschroer] - [#54651]) ([huisbaasje docs]) +- Add strict typing to modem_callerid ([@tkdrob] - [#57683]) ([modem_callerid docs]) +- Fix Fibaro light features ([@rik-v] - [#56385]) ([fibaro docs]) +- Use http.HTTPStatus in components/f* ([@scop] - [#58244]) +- Bump arcam library to 0.12 with new series support ([@elupus] - [#53843]) ([arcam_fmj docs]) +- ISS cleanup ([@yuvalabou] - [#55801]) ([iss docs]) +- Discovery ignores DLNA DMR devices when they are better supported by another integration ([@chishm] - [#57363]) ([dlna_dmr docs]) ([ssdp docs]) +- Add state_class support to Rest ([@koying] - [#58026]) ([rest docs]) +- Use http.HTTPStatus in components/[ikl]* ([@scop] - [#58248]) +- Improve Discord notifier ([@nihaals] - [#52523]) ([discord docs]) +- Fully type Jewish Calendar ([@yuvalabou] - [#56232]) ([jewish_calendar docs]) +- Apple TV power management ([@itairaz1] - [#51520]) ([apple_tv docs]) +- Spelling & grammar improvements to bug_report.yml ([@JJJ] - [#56800]) +- Add additional nest stream test coverage ([@allenporter] - [#58013]) ([nest docs]) +- Allow different voices in Watson TTS calls ([@drinfernoo] - [#56811]) ([watson_tts docs]) +- Use http.HTTPStatus in components/m* ([@scop] - [#58251]) +- Add grid services active sensor to telsa powerwall integration ([@some-guy-in-oz] - [#56317]) ([powerwall docs]) +- Bump velbusaio to 2021.10.6 ([@Cereal2nd] - [#58168]) ([velbus docs]) +- Update ismartgate dependency ([@NickM-27] - [#58259]) ([gogogate2 docs]) +- Change precision of Nest sensors ([@michaeldavie] - [#56993]) ([nest docs]) +- Fix format bug in nest log statement ([@allenporter] - [#58263]) ([nest docs]) +- Fix a bug in a nest test that causes side effects for other tests ([@allenporter] - [#58264]) ([nest docs]) +- Rename tests filenames to conform to Home Assistant standards ([@allenporter] - [#58266]) ([nest docs]) +- Bump greeclimate to 0.12.2 ([@cmroche] - [#58256]) ([gree docs]) +- Fix yandex captcha detecting ([@devbis] - [#56132]) ([yandex_transport docs]) +- Use DeviceInfo Class B-C ([@tkdrob] - [#58217]) +- Use DeviceInfo Class E ([@tkdrob] - [#58230]) +- Use DeviceInfo Class F-G ([@tkdrob] - [#58255]) +- Use DeviceInfo on components with suggested_area ([@epenet] - [#58225]) ([tado docs]) ([nuheat docs]) ([august docs]) ([roku docs]) ([sonos docs]) ([hunterdouglas_powerview docs]) ([devolo_home_control docs]) +- Address Watson TTS review comment ([@frenck] - [#58277]) ([watson_tts docs]) +- Use regex instead of partition to section package definition ([@ludeeus] - [#58278]) +- Bump awesomeversion from 21.8.1 to 21.10.1 ([@ludeeus] - [#58258]) +- Ensure all devices show up in Tuya ([@frenck] - [#58280]) ([tuya docs]) +- Fix modem callerid callback ([@tkdrob] - [#58275]) ([modem_callerid docs]) +- Update tesla_powerwall to 0.3.12 ([@jrester] - [#58284]) ([powerwall docs]) +- Use DeviceInfo Class H ([@tkdrob] - [#58276]) +- Update aiolookin to 0.0.3 version ([@ANMalko] - [#58249]) ([lookin docs]) +- Add CO Detector (cobj) device support to Tuya ([@frenck] - [#58292]) ([tuya docs]) +- Add Gas Detector (rqbj) device support to Tuya ([@frenck] - [#58293]) ([tuya docs]) +- Add Pressure Sensor (ylcg) device support to Tuya ([@frenck] - [#58294]) ([tuya docs]) +- Complete Heater (qn) device support to Tuya ([@frenck] - [#58296]) ([tuya docs]) +- Make sure Flu Near You data storage conforms to standards ([@bachya] - [#57808]) ([flunearyou docs]) +- Use http.HTTPStatus in components/[gh]* ([@scop] - [#58246]) +- Use DeviceInfo Class I-K ([@tkdrob] - [#58300]) +- Use http.HTTPStatus in components/s* ([@scop] - [#58291]) +- Ensure zeroconf uses the newest non-link local address in discovery ([@bdraco] - [#58257]) ([zeroconf docs]) +- Use http.HTTPStatus in components/r* ([@scop] - [#58288]) +- Use HTTPStatus in components/[nop]* ([@scop] - [#58279]) +- Add new attribute constants for DeviceInfo registration ([@epenet] - [#58289]) ([netatmo docs]) ([isy994 docs]) ([apple_tv docs]) ([plugwise docs]) ([bond docs]) ([zwave_js docs]) +- Allow service data template to return a dict ([@koying] - [#57105]) +- Complete Smart Camera (sp) device support to Tuya ([@frenck] - [#58301]) ([tuya docs]) +- Add switch platform to Tuya Light (dj) devices ([@fOmey] - [#58196]) ([tuya docs]) +- OpenGarage binary sensor ([@Danielhiversen] - [#58030]) ([opengarage docs]) (new-platform) +- Bump pylitterbot to 2021.10.1 ([@natekspencer] - [#58307]) ([litterrobot docs]) +- Expose Sonos features as switch entities ([@jjlawren] - [#54502]) ([sonos docs]) (breaking-change) +- Filter by connections instead of identifiers for Shelly ([@chemelli74] - [#58305]) ([shelly docs]) +- Configurable mode for KNX number entity ([@farmio] - [#58268]) ([knx docs]) +- Use http.HTTPStatus in components/[tuv]* ([@scop] - [#58325]) +- Pull configuration_url from library in gogogate2 ([@bdraco] - [#58318]) ([gogogate2 docs]) +- Use DeviceInfo Class N-O ([@tkdrob] - [#58314]) +- Move `configuration_url` abbreviation to MQTT `DEVICE_ABBREVIATIONS` const ([@bieniu] - [#58313]) ([mqtt docs]) +- Fix bug in MediaSource definintion and enable strict type checking ([@allenporter] - [#58321]) ([netatmo docs]) ([media_source docs]) ([xbox docs]) +- Complete removal of auto_start, zeroconf_default_interface, and safe_mode from HomeKit ([@bdraco] - [#58320]) (breaking-change) +- Complete Solar Light (tyndj) device support to Tuya ([@frenck] - [#58302]) ([tuya docs]) +- Add long-term statistics for Ondilo ICO ([@TheNogl] - [#58290]) ([ondilo_ico docs]) +- Add VOC Sensor (voc) device support to Tuya ([@frenck] - [#58332]) ([tuya docs]) +- Add Methane Detector (jwbj) device support to Tuya ([@frenck] - [#58328]) ([tuya docs]) +- Add PM2.5 Sensor (pm25) device support to Tuya ([@frenck] - [#58329]) ([tuya docs]) +- Add more Huawei LTE sensor state classes ([@scop] - [#57983]) ([huawei_lte docs]) +- Use http.HTTPStatus in components/[wxyz]* ([@scop] - [#58330]) +- Support suburban railways stations in yandex transport ([@devbis] - [#58281]) ([yandex_transport docs]) +- Extend Tuya Humidifier ([@alexanv1] - [#58260]) ([tuya docs]) +- Pin pytest-github-actions-annotate-failures to fix broken CI ([@frenck] - [#58351]) +- add BitronVideo AV2021 ZHA stick ([@javicalle] - [#58337]) ([zha docs]) +- feat: Add unit of measurement to KNX number platform ([@marvin-w] - [#58353]) ([knx docs]) +- Fix lookin device validation in config flow ([@bdraco] - [#58349]) ([lookin docs]) +- Use DataUpdateCoordinator in Vallox ([@andre-richter] - [#56966]) ([vallox docs]) +- Allow advanced Plex `play_media` search options ([@jjlawren] - [#56226]) ([plex docs]) +- Fix lookin push updates when sensor entities disabled ([@bdraco] - [#58346]) ([lookin docs]) +- Add warning if Sonos not linked to Plex ([@jjlawren] - [#58150]) ([plex docs]) +- Set Sonos alarm and battery entity categories ([@jjlawren] - [#58340]) ([sonos docs]) +- Add Cell State sensor to Vallox ([@andre-richter] - [#58358]) ([vallox docs]) +- Add support for entity category for necessary KNX platforms ([@marvin-w] - [#58357]) ([knx docs]) +- Fix EXT-X-PROGRAM-DATE-TIME in stream ([@uvjustin] - [#58036]) ([stream docs]) +- Add entity category to MyQ ([@balloob] - [#58377]) ([myq docs]) +- Initial support for Tradfri STARKVIND Air purifier ([@ggravlingen] - [#58295]) ([tradfri docs]) (new-platform) +- Fix configuration url in gogogate2 ([@bdraco] - [#58365]) ([gogogate2 docs]) +- Bump pytradfri to 7.1.1 ([@janiversen] - [#58379]) ([tradfri docs]) +- Add entity category to august ([@bdraco] - [#58359]) ([august docs]) +- Add entity category to roomba ([@bdraco] - [#58362]) ([roomba docs]) +- Add entity category to gogogate2 ([@bdraco] - [#58366]) ([gogogate2 docs]) +- Add entity category to elkm1 ([@bdraco] - [#58364]) ([elkm1 docs]) +- Add Temperature and Humidity Sensor (wsdcg) device support to Tuya ([@frenck] - [#58335]) ([tuya docs]) +- Add configuration_url to isy994 ([@bdraco] - [#58372]) ([isy994 docs]) +- Add entity category to Neato ([@chemelli74] - [#58367]) ([neato docs]) +- Add support for unit of measurement in MQTT number platform ([@frenck] - [#58343]) ([mqtt docs]) +- Upgrade youless library to fix LS110 power total is not a number ([@gjong] - [#58333]) ([youless docs]) +- Minor cleanups for Vallox ([@andre-richter] - [#58384]) ([vallox docs]) +- Adjust DeviceInfo registration on zwave_js ([@epenet] - [#58391]) ([zwave_js docs]) +- Upgrade Tuya IoT Python SDK to 0.6.3 ([@frenck] - [#58240]) ([tuya docs]) +- Bump async-upnp-client to 0.22.10 ([@StevenLooman] - [#58387]) ([upnp docs]) ([yeelight docs]) ([dlna_dmr docs]) ([ssdp docs]) +- Use DeviceInfo in control4 ([@epenet] - [#58388]) ([control4 docs]) +- Use DeviceInfo on accuweather ([@epenet] - [#58394]) ([accuweather docs]) +- Add entity categories to Netatmo ([@cgtobi] - [#58383]) ([netatmo docs]) +- Run nuki bidge.info() on executor ([@sagioto] - [#58345]) ([nuki docs]) +- Add entity category to nut battery ([@bdraco] - [#58363]) ([nut docs]) +- Add entity category to hunterdouglas_powerview ([@bdraco] - [#58368]) ([hunterdouglas_powerview docs]) +- Add entity category to MotionEye ([@chemelli74] - [#58370]) ([motioneye docs]) +- Add entity category to Advantage Air ([@Bre77] - [#58371]) ([advantage_air docs]) +- Use DeviceInfo on awair ([@epenet] - [#58395]) ([awair docs]) +- Use DeviceInfo on hassio ([@epenet] - [#58397]) ([hassio docs]) +- Use DeviceInfo on esphome ([@epenet] - [#58396]) ([esphome docs]) +- Use DeviceInfo in huawei-lte ([@epenet] - [#58398]) ([huawei_lte docs]) +- Add configuration_url to upnp device ([@StevenLooman] - [#58385]) ([upnp docs]) +- Update PyVicare to 2.13.0 ([@oischinger] - [#57700]) ([vicare docs]) (breaking-change) +- Use DeviceInfo in mqtt ([@epenet] - [#58389]) ([mqtt docs]) +- Allow extra keys in MQTT discovery messages ([@emontnemery] - [#58390]) ([mqtt docs]) +- Add Smart Kettle (bh) device support to Tuya ([@frenck] - [#58347]) ([tuya docs]) +- Drop unused ATTR_ENTRY_TYPE constant ([@epenet] - [#58400]) ([forecast_solar docs]) +- Use DeviceInfo in asuswrt ([@epenet] - [#58399]) ([asuswrt docs]) +- Advantage Air fix logic for motion sensors ([@Bre77] - [#58376]) ([advantage_air docs]) +- Use constants in renault tests ([@epenet] - [#58406]) ([renault docs]) +- Use ATTR_VIA_DEVICE constant in onewire tests ([@epenet] - [#58405]) ([onewire docs]) +- Meteofrance - Add state_class to appropriate sensors ([@davidlb] - [#58401]) ([meteo_france docs]) +- Bump up ZHA dependencies ([@Adminiuga] - [#58409]) ([zha docs]) +- Log correct ZHA channel initialization step ([@Adminiuga] - [#58410]) ([zha docs]) +- Add state_class/entity_category to Verisure ([@frenck] - [#58403]) ([verisure docs]) +- Add zwave_js sensor entity categories ([@MartinHjelmare] - [#58416]) ([zwave_js docs]) (breaking-change) +- Use DeviceInfo Class P-R ([@tkdrob] - [#58324]) +- Update PyVicare to 2.13.1 ([@oischinger] - [#58422]) ([vicare docs]) +- bump pylgnetcast to 0.3.5 ([@Drafteed] - [#58419]) ([lg_netcast docs]) +- Switch to UpdateCoordinator for eight sleep ([@raman325] - [#52614]) ([eight_sleep docs]) +- Complete Air Conditioner (kt) device support for Tuya ([@frenck] - [#58417]) ([tuya docs]) +- Add running device class to binary sensor ([@ludeeus] - [#58423]) ([binary_sensor docs]) +- Use DeviceInfo Class L-M ([@tkdrob] - [#58312]) +- Fix updating sensor on unlinked Plex server ([@jjlawren] - [#58418]) ([plex docs]) +- Add config flow to venstar ([@garbled1] - [#58152]) ([venstar docs]) (breaking-change) +- Add WattTime config option for showing the monitored location on the map ([@bachya] - [#57129]) ([watttime docs]) +- Set entity_category for node status sensor ([@raman325] - [#58434]) ([zwave_js docs]) +- Add binary sensor to add-ons to show if they are running ([@ludeeus] - [#58120]) ([hassio docs]) +- Re-add support for realtime SimpliSafe websocket ([@bachya] - [#58061]) ([simplisafe docs]) +- Ensure domain is correct format ([@balloob] - [#58429]) +- dlna_dmr won't support devices that don't provide all DMR services ([@chishm] - [#58374]) ([dlna_dmr docs]) ([ssdp docs]) +- Aurora abb (solar) configflow ([@davet2001] - [#36300]) ([aurora_abb_powerone docs]) (breaking-change) +- Use class attribute instead of property decorator ([@raman325] - [#58448]) ([zwave_js docs]) +- Fix flux_led with RGB/W bulbs (model 0x44) ([@bdraco] - [#58438]) ([flux_led docs]) +- Refactor input_select ([@frenck] - [#53334]) ([input_select docs]) (breaking-change) +- Fix Aurora abb incorrect attr ([@tkdrob] - [#58450]) ([aurora_abb_powerone docs]) +- Add typehints to eight_sleep ([@raman325] - [#58442]) ([eight_sleep docs]) +- Add all kraken entities on startup ([@eifinger] - [#58027]) ([kraken docs]) +- Add speed & intensity controls to wled ([@rytilahti] - [#56862]) ([wled docs]) +- Add support for external statistics ([@emontnemery] - [#56607]) ([recorder docs]) ([sensor docs]) +- Add support for fan groups ([@bdraco] - [#57941]) ([group docs]) (new-platform) +- Allow homeassistant prefix for device info configuration url ([@ludeeus] - [#58414]) ([hassio docs]) +- Remove redundant value test in KNX Number entity ([@farmio] - [#58455]) ([knx docs]) +- Fix velbus climate ([@Cereal2nd] - [#58408]) ([velbus docs]) +- Use NamedTuple in Vallox service_to_method mapping ([@andre-richter] - [#58361]) ([vallox docs]) +- Automatic spider supported fan speed and hvac ([@peternijssen] - [#58308]) ([spider docs]) +- Address late review of velbus ([@Cereal2nd] - [#58463]) ([velbus docs]) +- Use http.HTTPStatus in util.aiohttp ([@scop] - [#58456]) +- Clean up rounding in Ecobee integration ([@bjpetit] - [#56319]) ([ecobee docs]) +- Add device_class and state_class as optional attributes to the scrape sensor, to support statistics ([@lukas-hetzenecker] - [#58164]) ([scrape docs]) +- Warn when recorder connects to an unsupported database ([@emontnemery] - [#58161]) ([recorder docs]) (breaking-change) +- Use async_on_unload in Netatmo ([@cgtobi] - [#58461]) ([netatmo docs]) +- Corrections for external statistics ([@emontnemery] - [#58469]) ([recorder docs]) +- Validate device automation capablities WS calls ([@balloob] - [#58444]) +- Add entity_category to SmartThings sensors ([@allenporter] - [#58375]) ([smartthings docs]) +- Add offset support to time trigger ([@RobertMe] - [#56838]) ([homeassistant docs]) +- Add reauth for Netatmo when token or token scope is invalid ([@cgtobi] - [#57487]) ([netatmo docs]) +- Register Coinbase service in Device Registry and provide configuration URL ([@TomBrien] - [#58472]) ([coinbase docs]) +- Publish nest event ids in camera related events ([@allenporter] - [#58299]) ([nest docs]) +- Add some more required/optional tags to condition schemas ([@balloob] - [#58424]) +- Fjaraskupan number entity for periodic venting ([@elupus] - [#58179]) ([fjaraskupan docs]) +- Add vlc telnet error handler decorator ([@MartinHjelmare] - [#58468]) ([vlc_telnet docs]) +- Fix mysensors metric/non-metric gateway ([@MartinHjelmare] - [#58476]) ([mysensors docs]) +- Limit add-on stats to add-ons that are running ([@ludeeus] - [#58479]) ([hassio docs]) +- Support Energy Sensor and Statistics in Homematic IP Cloud Integration ([@FlavorFx] - [#57734]) ([homematicip_cloud docs]) +- dlna_dmr will gracefully handle device's rejection of subscription attempt ([@chishm] - [#58451]) ([dlna_dmr docs]) +- Bump ZHA quirks version to 0.0.63 ([@dmulcahey] - [#58478]) ([zha docs]) +- Add entity category to UniFi sensors and switches ([@Kane610] - [#58484]) ([unifi docs]) +- Enable type checking - bmw_connected_drive ([@cdce8p] - [#58310]) ([bmw_connected_drive docs]) +- Remove Huawei Router (ADR-0004) ([@yuvalabou] - [#57136]) ([huawei_router docs]) (breaking-change) +- Bump pyotp to 2.6.0 ([@chrillebile] - [#58413]) ([otp docs]) +- Add translations for binary_sensor device classes ([@spacegaier] - [#58471]) ([binary_sensor docs]) +- Fix overriding the yeelight model if it is not known ([@bdraco] - [#56967]) ([yeelight docs]) (breaking-change) +- Add Mill Sense Air sensors ([@Danielhiversen] - [#57776]) ([mill docs]) +- Allow data sources to affect client tracker state after reconnecting to UniFi controller ([@Kane610] - [#58269]) ([unifi docs]) +- Fix device_info for xiaomi_aqara ([@epenet] - [#58465]) ([xiaomi_aqara docs]) +- Minor cleanup on stream ([@uvjustin] - [#58486]) ([stream docs]) +- Fix flaky UPNP test ([@emontnemery] - [#58493]) ([upnp docs]) +- Add average template function and filter ([@Petro31] - [#57727]) +- Bump frontend to 20211026.0 ([@balloob] - [#58500]) ([frontend docs]) +- Add async lib and DataUpdateCoordinator for environment_canada ([@gwww] - [#57746]) ([environment_canada docs]) (breaking-change) +- Bump aioambient to 2021.10.0 ([@bachya] - [#58494]) ([ambient_station docs]) +- Add entity categories to esphome ([@jesserockz] - [#58495]) ([esphome docs]) +- Add Select platform to Advantage Air ([@Bre77] - [#54747]) ([advantage_air docs]) +- Broadlink Integration add support for LB1 ([@L-I-Am] - [#50953]) ([broadlink docs]) (new-platform) +- Fix endpoints issues for Tuya Integration ([@zlinoliver] - [#58411]) ([tuya docs]) +- Fix Microsoft tts defaults to resolve broken settings ([@tylergibson] - [#58499]) ([microsoft docs]) (breaking-change) +- Fix min_humidity and max_humidity in homekit_controller ([@yeahme49] - [#58507]) ([homekit_controller docs]) +- Bump quantum_gateway to v0.0.6 ([@cisasteelersfan] - [#58452]) ([quantum_gateway docs]) +- Retry yeelight setup later if first update fails ([@bdraco] - [#58446]) ([yeelight docs]) +- Add myStrom LED Strip support extending rgblamp bulb_type ([@asansano] - [#57322]) ([mystrom docs]) +- Fix issue where UniFi DPI groups state wasn't being updated ([@Kane610] - [#58502]) ([unifi docs]) +- Use PyAV fork and set hvc1 codec tag for H.265 ([@uvjustin] - [#58309]) ([stream docs]) +- Refactor Growatt sensor types ([@muppet3000] - [#56544]) ([growatt_server docs]) +- Fix available for Mill ([@Danielhiversen] - [#58510]) ([mill docs]) +- Use constants for device registry checks ([@epenet] - [#58514]) ([nest docs]) ([arcam_fmj docs]) +- Fritz clean device_tracker service ([@chemelli74] - [#56535]) ([fritz docs]) +- Adjust onewire device manufacturer ([@epenet] - [#58515]) ([onewire docs]) +- Fix media_player grouping while media_player is off ([@vigonotion] - [#58070]) ([media_player docs]) +- Use DeviceInfo in screenlogic ([@epenet] - [#58518]) ([screenlogic docs]) +- Use DeviceInfo in sharkiq ([@epenet] - [#58519]) ([sharkiq docs]) +- Use DeviceInfo in shelly ([@epenet] - [#58520]) ([shelly docs]) +- Move WLED palette to config entity category ([@frenck] - [#58517]) ([wled docs]) +- Use DeviceInfo in sms ([@epenet] - [#58525]) ([sms docs]) +- Use DeviceInfo in smarttub ([@epenet] - [#58524]) ([smarttub docs]) +- Use DeviceInfo in smartthings ([@epenet] - [#58523]) ([smappee docs]) +- Use DeviceInfo in sma ([@epenet] - [#58521]) ([sma docs]) +- Handle accessories without a serial number in homekit_controller ([@bdraco] - [#58498]) ([homekit_controller docs]) +- Simplify utility_meter code base with croniter ([@dgomes] - [#55625]) ([utility_meter docs]) (breaking-change) +- Revert "Add warning when entity used in template doesn't exist" ([@frenck] - [#58527]) +- Use DeviceInfo in solarlog ([@epenet] - [#58526]) ([solarlog docs]) +- Fix Vicare unique_ids ([@oischinger] - [#58531]) ([vicare docs]) +- Increase setMode flexibility ([@oischinger] - [#58491]) ([vicare docs]) +- Use DeviceInfo in smappee ([@epenet] - [#58522]) ([smappee docs]) +- Add new orange pi boards to orangepi integration ([@drizzle1] - [#58392]) ([orangepi_gpio docs]) +- Simplify recorder PgSQL version checks ([@emontnemery] - [#58533]) ([recorder docs]) +- Allow specifying a super template for async_track_template_result ([@emontnemery] - [#58477]) ([websocket_api docs]) ([template docs]) ([universal docs]) ([bayesian docs]) +- Correct changes in Allow extra keys in MQTT discovery messages ([@emontnemery] - [#58534]) ([mqtt docs]) +- Add Solar Edge entity device and state class ([@terminet85] - [#55902]) (breaking-change) +- Add kWh as cost option for gas ([@ColinRobbins] - [#58426]) ([energy docs]) +- When tradfri device goes offline set attr_available false ([@janiversen] - [#58487]) ([tradfri docs]) +- Fix energy cost sensor for MWh + improve tests ([@emontnemery] - [#58540]) ([energy docs]) +- Allow storing picture in area registry ([@balloob] - [#58539]) ([config docs]) +- Add multi-partition support for TotalConnect ([@austinmroczek] - [#55429]) ([totalconnect docs]) +- Adjust onewire device model ([@epenet] - [#58516]) ([onewire docs]) +- Enable strict typing - bmw_connected_drive ([@cdce8p] - [#58506]) ([bmw_connected_drive docs]) +- Serialize dates and times to isoformat ([@emontnemery] - [#58157]) +- Add Number platform to Wallbox ([@hesselonline] - [#52786]) ([wallbox docs]) +- Blink arm camera ([@yeahme49] - [#56474]) ([blink docs]) +- Support ViCare energy units ([@oischinger] - [#58433]) ([vicare docs]) +- Update frontend to 20211027.0 ([@bramkragten] - [#58545]) ([frontend docs]) +- Fix ZeroDivisionError on freebox/sensor ([@davelowper] - [#57077]) ([freebox docs]) (beta fix) +- Allow initialized callback to have arguments ([@inytar] - [#58129]) ([hdmi_cec docs]) (beta fix) +- Add an image placeholder for Nest WebRTC cameras ([@allenporter] - [#58250]) ([nest docs]) (beta fix) +- Reduce rainmachine intervals to avoid device overload ([@bdraco] - [#58319]) ([rainmachine docs]) (beta fix) +- Return the real MAC address for LIFX bulbs with newer firmware ([@Djelibeybi] - [#58511]) ([lifx docs]) (beta fix) +- Add tplink KP303 to discovery ([@bdraco] - [#58548]) ([tplink docs]) (beta fix) +- Add service configuration URL to Doorbird ([@Tommatheussen] - [#58549]) ([doorbird docs]) (beta fix) +- Add entity category to ZHA battery ([@balloob] - [#58553]) ([zha docs]) (beta fix) +- Add `configuration_url` to Freebox integration ([@Quentame] - [#58555]) ([freebox docs]) (beta fix) +- Add `configuration_url` to iCloud integration ([@Quentame] - [#58557]) ([icloud docs]) (beta fix) +- Allow configuration_url to be removed/nullified from device registry ([@jesserockz] - [#58564]) (beta fix) +- Add configuration_url to ESPHome ([@jesserockz] - [#58565]) ([esphome docs]) (beta fix) +- Fix default value for host in octoprint config flow ([@balloob] - [#58568]) ([octoprint docs]) (beta fix) +- Add `configuration_url` to Huawei LTE integration ([@chmielowiec] - [#58584]) ([huawei_lte docs]) (beta fix) +- Add ROCKROBO_S5_MAX to xiaomi_miio vacuum models ([@OGKevin] - [#58591]) ([xiaomi_miio docs]) (beta fix) +- Add configuration_url to devolo Home Control ([@Shutgun] - [#58594]) ([devolo_home_control docs]) (beta fix) +- Fix missing config string in sense ([@tkdrob] - [#58597]) ([sense docs]) (beta fix) +- Fix uncaught exception in sense and retry later ([@bdraco] - [#58623]) ([sense docs]) (beta fix) +- Add entity category for load sensors to AsusWRT ([@Chen-IL] - [#58625]) ([asuswrt docs]) (beta fix) +- Add package constraint to websockets ([@bdraco] - [#58626]) (beta fix) +- Fix missing triggered state in SimpliSafe alarm control panel ([@bachya] - [#58628]) ([simplisafe docs]) (beta fix) +- Update frontend to 20211028.0 ([@bramkragten] - [#58629]) ([frontend docs]) (beta fix) +- Improve ViCare energy units ([@oischinger] - [#58630]) ([vicare docs]) (beta fix) +- Migrate Tuya unique IDs for switches & lights ([@frenck] - [#58631]) ([tuya docs]) (beta fix) +- Fix incorrect RainMachine service helper ([@bachya] - [#58633]) ([rainmachine docs]) (beta fix) +- Bump greeclimate to 0.12.3 ([@cmroche] - [#58635]) ([gree docs]) (beta fix) +- Fix missing temperature level on Tuya Heater (qn) devices ([@frenck] - [#58643]) ([tuya docs]) (beta fix) +- Bump pyhik to 0.3.0 ([@mezz64] - [#58659]) ([hikvision docs]) (beta fix) +- Update light turn_on schema to coerce colors to tuple before asserting sequence type ([@emontnemery] - [#58670]) ([group docs]) (beta fix) +- Convert RGBW and RGBWW colors in light turn_on calls ([@emontnemery] - [#58680]) ([light docs]) (beta fix) +- Fix regression in MQTT discovery ([@emontnemery] - [#58684]) ([mqtt docs]) (beta fix) +- Fix spelling of OctoPrint ([@frenck] - [#58686]) ([octoprint docs]) (beta fix) +- Fix OctoPrint config flow schema ([@frenck] - [#58688]) ([octoprint docs]) (beta fix) +- Fix round - wallbox ([@cdce8p] - [#58689]) ([wallbox docs]) (beta fix) +- Fix OctoPrint SSDP URL parsing and discovered values ([@frenck] - [#58698]) ([octoprint docs]) (beta fix) +- Avoid doorbird device probe during discovery for known devices ([@bdraco] - [#58701]) ([doorbird docs]) (beta fix) +- Disable polling Sonos switches by default ([@jjlawren] - [#58705]) ([sonos docs]) (beta fix) +- Bump aioambient to 2021.10.1 ([@bachya] - [#58708]) ([ambient_station docs]) (beta fix) +- reload service: remove entities before disconnection ([@farmio] - [#58712]) ([knx docs]) (beta fix) +- Fix bug with volumes in SimpliSafe set_system_properties service ([@bachya] - [#58721]) ([simplisafe docs]) (beta fix) +- Improve handling of invalid serial numbers in HomeKit Controller ([@bdraco] - [#58723]) ([homekit_controller docs]) (beta fix) +- Add configuration url to AVM Fritz!Smarthome ([@mib1185] - [#57711]) ([fritzbox docs]) (beta fix) +- Mobile app to update entity registry on re-register sensors ([@balloob] - [#58378]) ([mobile_app docs]) (beta fix) +- Coerce to tuple before asserting the sequence ([@emontnemery] - [#58672]) ([opencv docs]) ([lifx docs]) ([yeelight docs]) ([flux_led docs]) (beta fix) +- Add ROCKROBO_S4 to xiaomi_miio vaccum models ([@OGKevin] - [#58682]) ([xiaomi_miio docs]) (beta fix) +- Set Netatmo max default temperature ([@cgtobi] - [#58718]) ([netatmo docs]) (beta fix) +- Fix bluesound player internally used id ([@thrawnarn] - [#58732]) ([bluesound docs]) (beta fix) +- Add additional test coverage for RYSE smartbridges with HK ([@bdraco] - [#58746]) ([homekit_controller docs]) (beta fix) +- Bump nad_receiver to version 0.3.0 ([@Kapernicus] - [#58751]) ([nad docs]) (beta fix) +- Add configuration_url to OctoPrint ([@frenck] - [#58753]) ([octoprint docs]) (beta fix) +- Bump zeroconf 0.36.11 ([@bdraco] - [#58755]) ([zeroconf docs]) (beta fix) +- Fix channel.send in Discord ([@mib1185] - [#58756]) ([discord docs]) (beta fix) +- Fix solaredge energy sensor names ([@purcell-lab] - [#58773]) ([solaredge docs]) (breaking-change) (beta fix) +- Workaround brightness transition delay from off in older yeelight models ([@bdraco] - [#58774]) ([yeelight docs]) (beta fix) +- dlna_dmr: less eager discovery ([@chishm] - [#58780]) ([dlna_dmr docs]) (beta fix) +- Add ROCKROBO_E2 to supported vacuums for xiaomi_miio ([@OGKevin] - [#58817]) ([xiaomi_miio docs]) (beta fix) +- Fix Plugwise not updating config entry with discovery information ([@frenck] - [#58819]) ([plugwise docs]) (beta fix) +- Bump pyefergy to 0.1.3 ([@tkdrob] - [#58821]) ([efergy docs]) (beta fix) +- Improve part metadata in stream ([@uvjustin] - [#58822]) ([stream docs]) (beta fix) +- Add `configuration_url` to GIOS integration ([@bieniu] - [#58840]) ([gios docs]) (beta fix) +- Fix OpenWeatherMap options not being initialized the first time ([@mback2k] - [#58736]) ([openweathermap docs]) (beta fix) +- Add ROCKROBO_S4_MAX to supported xiaomi vacuums ([@OGKevin] - [#58826]) ([xiaomi_miio docs]) (beta fix) +- Fix renamed solaredge sensor keys ([@purcell-lab] - [#58875]) ([solaredge docs]) (beta fix) +- Handle `None` values in Xiaomi Miio integration ([@bieniu] - [#58880]) ([xiaomi_miio docs]) (beta fix) +- Fix find_next_time_expression_time ([@OttoWinter] - [#58894]) (beta fix) +- Fix color temp selection when brightness changed in Tuya light ([@pabigot] - [#58341]) ([tuya docs]) (beta fix) +- Fix incorrect entity category in Advantage Air ([@frenck] - [#58754]) ([advantage_air docs]) (beta fix) +- Add ROCKROBO_S6_PURE to supported vacuums for xiaomi_miio ([@OGKevin] - [#58901]) ([xiaomi_miio docs]) (beta fix) +- Bump pyinsteon to 1.0.13 ([@teharris1] - [#58908]) ([insteon docs]) (beta fix) +- Add `configuration_url` to Airly integration ([@bieniu] - [#58911]) ([airly docs]) (beta fix) +- Fix recursive limit in find_next_time_expression_time ([@bdraco] - [#58914]) (beta fix) +- Add libav.mpegts to logging filter ([@uvjustin] - [#58937]) ([stream docs]) (beta fix) +- Revert "Add offset support to time trigger" ([@emontnemery] - [#58947]) ([homeassistant docs]) (beta fix) +- Extend Tuya Dimmer (tgq) support ([@frenck] - [#58951]) ([tuya docs]) (beta fix) +- Add support for IoT Switches (tdq) in Tuya ([@frenck] - [#58952]) ([tuya docs]) (beta fix) +- Add device configuration URL to Solar-Log ([@Ernst79] - [#58954]) ([solarlog docs]) (beta fix) +- Fix unique_id of derived sent-sensors ([@kodsnutten] - [#58298]) ([upnp docs]) (breaking-change) (beta fix) +- Aurora abb energy metering ([@davet2001] - [#58454]) ([aurora_abb_powerone docs]) (beta fix) +- Aurora abb defer unique_id assignment during yaml import ([@davet2001] - [#58887]) ([aurora_abb_powerone docs]) (beta fix) +- Add missing ZMW currency ([@tkdrob] - [#58959]) (beta fix) +- Fix broken ViCare burner & compressor sensors ([@oischinger] - [#58962]) ([vicare docs]) (beta fix) +- Bump pyMill to 0.7.4 ([@Danielhiversen] - [#58977]) ([mill docs]) (beta fix) +- Fix battery_is_charging sensor on system bridge ([@arksega] - [#58980]) ([system_bridge docs]) (beta fix) +- Update frontend to 20211103.0 ([@bramkragten] - [#58988]) ([frontend docs]) (beta fix) + +{% enddetails %} + +[#36300]: https://github.com/home-assistant/core/pull/36300 +[#50067]: https://github.com/home-assistant/core/pull/50067 +[#50953]: https://github.com/home-assistant/core/pull/50953 +[#51520]: https://github.com/home-assistant/core/pull/51520 +[#52523]: https://github.com/home-assistant/core/pull/52523 +[#52614]: https://github.com/home-assistant/core/pull/52614 +[#52786]: https://github.com/home-assistant/core/pull/52786 +[#52830]: https://github.com/home-assistant/core/pull/52830 +[#53334]: https://github.com/home-assistant/core/pull/53334 +[#53628]: https://github.com/home-assistant/core/pull/53628 +[#53843]: https://github.com/home-assistant/core/pull/53843 +[#54502]: https://github.com/home-assistant/core/pull/54502 +[#54651]: https://github.com/home-assistant/core/pull/54651 +[#54696]: https://github.com/home-assistant/core/pull/54696 +[#54747]: https://github.com/home-assistant/core/pull/54747 +[#54990]: https://github.com/home-assistant/core/pull/54990 +[#55135]: https://github.com/home-assistant/core/pull/55135 +[#55228]: https://github.com/home-assistant/core/pull/55228 +[#55429]: https://github.com/home-assistant/core/pull/55429 +[#55467]: https://github.com/home-assistant/core/pull/55467 +[#55516]: https://github.com/home-assistant/core/pull/55516 +[#55625]: https://github.com/home-assistant/core/pull/55625 +[#55801]: https://github.com/home-assistant/core/pull/55801 +[#55902]: https://github.com/home-assistant/core/pull/55902 +[#55921]: https://github.com/home-assistant/core/pull/55921 +[#55989]: https://github.com/home-assistant/core/pull/55989 +[#56132]: https://github.com/home-assistant/core/pull/56132 +[#56154]: https://github.com/home-assistant/core/pull/56154 +[#56226]: https://github.com/home-assistant/core/pull/56226 +[#56232]: https://github.com/home-assistant/core/pull/56232 +[#56317]: https://github.com/home-assistant/core/pull/56317 +[#56319]: https://github.com/home-assistant/core/pull/56319 +[#56354]: https://github.com/home-assistant/core/pull/56354 +[#56385]: https://github.com/home-assistant/core/pull/56385 +[#56418]: https://github.com/home-assistant/core/pull/56418 +[#56474]: https://github.com/home-assistant/core/pull/56474 +[#56535]: https://github.com/home-assistant/core/pull/56535 +[#56541]: https://github.com/home-assistant/core/pull/56541 +[#56543]: https://github.com/home-assistant/core/pull/56543 +[#56544]: https://github.com/home-assistant/core/pull/56544 +[#56582]: https://github.com/home-assistant/core/pull/56582 +[#56607]: https://github.com/home-assistant/core/pull/56607 +[#56634]: https://github.com/home-assistant/core/pull/56634 +[#56800]: https://github.com/home-assistant/core/pull/56800 +[#56811]: https://github.com/home-assistant/core/pull/56811 +[#56823]: https://github.com/home-assistant/core/pull/56823 +[#56834]: https://github.com/home-assistant/core/pull/56834 +[#56835]: https://github.com/home-assistant/core/pull/56835 +[#56838]: https://github.com/home-assistant/core/pull/56838 +[#56847]: https://github.com/home-assistant/core/pull/56847 +[#56849]: https://github.com/home-assistant/core/pull/56849 +[#56852]: https://github.com/home-assistant/core/pull/56852 +[#56854]: https://github.com/home-assistant/core/pull/56854 +[#56856]: https://github.com/home-assistant/core/pull/56856 +[#56861]: https://github.com/home-assistant/core/pull/56861 +[#56862]: https://github.com/home-assistant/core/pull/56862 +[#56863]: https://github.com/home-assistant/core/pull/56863 +[#56871]: https://github.com/home-assistant/core/pull/56871 +[#56883]: https://github.com/home-assistant/core/pull/56883 +[#56885]: https://github.com/home-assistant/core/pull/56885 +[#56886]: https://github.com/home-assistant/core/pull/56886 +[#56887]: https://github.com/home-assistant/core/pull/56887 +[#56888]: https://github.com/home-assistant/core/pull/56888 +[#56889]: https://github.com/home-assistant/core/pull/56889 +[#56890]: https://github.com/home-assistant/core/pull/56890 +[#56894]: https://github.com/home-assistant/core/pull/56894 +[#56896]: https://github.com/home-assistant/core/pull/56896 +[#56904]: https://github.com/home-assistant/core/pull/56904 +[#56907]: https://github.com/home-assistant/core/pull/56907 +[#56909]: https://github.com/home-assistant/core/pull/56909 +[#56910]: https://github.com/home-assistant/core/pull/56910 +[#56920]: https://github.com/home-assistant/core/pull/56920 +[#56921]: https://github.com/home-assistant/core/pull/56921 +[#56924]: https://github.com/home-assistant/core/pull/56924 +[#56927]: https://github.com/home-assistant/core/pull/56927 +[#56931]: https://github.com/home-assistant/core/pull/56931 +[#56933]: https://github.com/home-assistant/core/pull/56933 +[#56940]: https://github.com/home-assistant/core/pull/56940 +[#56941]: https://github.com/home-assistant/core/pull/56941 +[#56942]: https://github.com/home-assistant/core/pull/56942 +[#56943]: https://github.com/home-assistant/core/pull/56943 +[#56944]: https://github.com/home-assistant/core/pull/56944 +[#56945]: https://github.com/home-assistant/core/pull/56945 +[#56946]: https://github.com/home-assistant/core/pull/56946 +[#56948]: https://github.com/home-assistant/core/pull/56948 +[#56952]: https://github.com/home-assistant/core/pull/56952 +[#56953]: https://github.com/home-assistant/core/pull/56953 +[#56958]: https://github.com/home-assistant/core/pull/56958 +[#56966]: https://github.com/home-assistant/core/pull/56966 +[#56967]: https://github.com/home-assistant/core/pull/56967 +[#56982]: https://github.com/home-assistant/core/pull/56982 +[#56984]: https://github.com/home-assistant/core/pull/56984 +[#56991]: https://github.com/home-assistant/core/pull/56991 +[#56993]: https://github.com/home-assistant/core/pull/56993 +[#56995]: https://github.com/home-assistant/core/pull/56995 +[#56997]: https://github.com/home-assistant/core/pull/56997 +[#57000]: https://github.com/home-assistant/core/pull/57000 +[#57019]: https://github.com/home-assistant/core/pull/57019 +[#57021]: https://github.com/home-assistant/core/pull/57021 +[#57022]: https://github.com/home-assistant/core/pull/57022 +[#57026]: https://github.com/home-assistant/core/pull/57026 +[#57034]: https://github.com/home-assistant/core/pull/57034 +[#57037]: https://github.com/home-assistant/core/pull/57037 +[#57038]: https://github.com/home-assistant/core/pull/57038 +[#57039]: https://github.com/home-assistant/core/pull/57039 +[#57041]: https://github.com/home-assistant/core/pull/57041 +[#57046]: https://github.com/home-assistant/core/pull/57046 +[#57047]: https://github.com/home-assistant/core/pull/57047 +[#57058]: https://github.com/home-assistant/core/pull/57058 +[#57059]: https://github.com/home-assistant/core/pull/57059 +[#57068]: https://github.com/home-assistant/core/pull/57068 +[#57077]: https://github.com/home-assistant/core/pull/57077 +[#57079]: https://github.com/home-assistant/core/pull/57079 +[#57080]: https://github.com/home-assistant/core/pull/57080 +[#57083]: https://github.com/home-assistant/core/pull/57083 +[#57086]: https://github.com/home-assistant/core/pull/57086 +[#57089]: https://github.com/home-assistant/core/pull/57089 +[#57091]: https://github.com/home-assistant/core/pull/57091 +[#57092]: https://github.com/home-assistant/core/pull/57092 +[#57094]: https://github.com/home-assistant/core/pull/57094 +[#57095]: https://github.com/home-assistant/core/pull/57095 +[#57096]: https://github.com/home-assistant/core/pull/57096 +[#57098]: https://github.com/home-assistant/core/pull/57098 +[#57099]: https://github.com/home-assistant/core/pull/57099 +[#57101]: https://github.com/home-assistant/core/pull/57101 +[#57105]: https://github.com/home-assistant/core/pull/57105 +[#57115]: https://github.com/home-assistant/core/pull/57115 +[#57116]: https://github.com/home-assistant/core/pull/57116 +[#57119]: https://github.com/home-assistant/core/pull/57119 +[#57127]: https://github.com/home-assistant/core/pull/57127 +[#57129]: https://github.com/home-assistant/core/pull/57129 +[#57130]: https://github.com/home-assistant/core/pull/57130 +[#57131]: https://github.com/home-assistant/core/pull/57131 +[#57132]: https://github.com/home-assistant/core/pull/57132 +[#57133]: https://github.com/home-assistant/core/pull/57133 +[#57136]: https://github.com/home-assistant/core/pull/57136 +[#57137]: https://github.com/home-assistant/core/pull/57137 +[#57140]: https://github.com/home-assistant/core/pull/57140 +[#57141]: https://github.com/home-assistant/core/pull/57141 +[#57144]: https://github.com/home-assistant/core/pull/57144 +[#57145]: https://github.com/home-assistant/core/pull/57145 +[#57152]: https://github.com/home-assistant/core/pull/57152 +[#57153]: https://github.com/home-assistant/core/pull/57153 +[#57157]: https://github.com/home-assistant/core/pull/57157 +[#57161]: https://github.com/home-assistant/core/pull/57161 +[#57170]: https://github.com/home-assistant/core/pull/57170 +[#57182]: https://github.com/home-assistant/core/pull/57182 +[#57187]: https://github.com/home-assistant/core/pull/57187 +[#57212]: https://github.com/home-assistant/core/pull/57212 +[#57214]: https://github.com/home-assistant/core/pull/57214 +[#57224]: https://github.com/home-assistant/core/pull/57224 +[#57226]: https://github.com/home-assistant/core/pull/57226 +[#57233]: https://github.com/home-assistant/core/pull/57233 +[#57235]: https://github.com/home-assistant/core/pull/57235 +[#57264]: https://github.com/home-assistant/core/pull/57264 +[#57266]: https://github.com/home-assistant/core/pull/57266 +[#57278]: https://github.com/home-assistant/core/pull/57278 +[#57279]: https://github.com/home-assistant/core/pull/57279 +[#57292]: https://github.com/home-assistant/core/pull/57292 +[#57295]: https://github.com/home-assistant/core/pull/57295 +[#57299]: https://github.com/home-assistant/core/pull/57299 +[#57316]: https://github.com/home-assistant/core/pull/57316 +[#57317]: https://github.com/home-assistant/core/pull/57317 +[#57322]: https://github.com/home-assistant/core/pull/57322 +[#57324]: https://github.com/home-assistant/core/pull/57324 +[#57339]: https://github.com/home-assistant/core/pull/57339 +[#57353]: https://github.com/home-assistant/core/pull/57353 +[#57354]: https://github.com/home-assistant/core/pull/57354 +[#57356]: https://github.com/home-assistant/core/pull/57356 +[#57357]: https://github.com/home-assistant/core/pull/57357 +[#57358]: https://github.com/home-assistant/core/pull/57358 +[#57363]: https://github.com/home-assistant/core/pull/57363 +[#57393]: https://github.com/home-assistant/core/pull/57393 +[#57399]: https://github.com/home-assistant/core/pull/57399 +[#57408]: https://github.com/home-assistant/core/pull/57408 +[#57430]: https://github.com/home-assistant/core/pull/57430 +[#57435]: https://github.com/home-assistant/core/pull/57435 +[#57439]: https://github.com/home-assistant/core/pull/57439 +[#57440]: https://github.com/home-assistant/core/pull/57440 +[#57444]: https://github.com/home-assistant/core/pull/57444 +[#57449]: https://github.com/home-assistant/core/pull/57449 +[#57456]: https://github.com/home-assistant/core/pull/57456 +[#57458]: https://github.com/home-assistant/core/pull/57458 +[#57463]: https://github.com/home-assistant/core/pull/57463 +[#57468]: https://github.com/home-assistant/core/pull/57468 +[#57470]: https://github.com/home-assistant/core/pull/57470 +[#57472]: https://github.com/home-assistant/core/pull/57472 +[#57473]: https://github.com/home-assistant/core/pull/57473 +[#57477]: https://github.com/home-assistant/core/pull/57477 +[#57478]: https://github.com/home-assistant/core/pull/57478 +[#57479]: https://github.com/home-assistant/core/pull/57479 +[#57483]: https://github.com/home-assistant/core/pull/57483 +[#57487]: https://github.com/home-assistant/core/pull/57487 +[#57492]: https://github.com/home-assistant/core/pull/57492 +[#57495]: https://github.com/home-assistant/core/pull/57495 +[#57497]: https://github.com/home-assistant/core/pull/57497 +[#57498]: https://github.com/home-assistant/core/pull/57498 +[#57503]: https://github.com/home-assistant/core/pull/57503 +[#57504]: https://github.com/home-assistant/core/pull/57504 +[#57505]: https://github.com/home-assistant/core/pull/57505 +[#57507]: https://github.com/home-assistant/core/pull/57507 +[#57508]: https://github.com/home-assistant/core/pull/57508 +[#57510]: https://github.com/home-assistant/core/pull/57510 +[#57511]: https://github.com/home-assistant/core/pull/57511 +[#57512]: https://github.com/home-assistant/core/pull/57512 +[#57513]: https://github.com/home-assistant/core/pull/57513 +[#57518]: https://github.com/home-assistant/core/pull/57518 +[#57519]: https://github.com/home-assistant/core/pull/57519 +[#57520]: https://github.com/home-assistant/core/pull/57520 +[#57523]: https://github.com/home-assistant/core/pull/57523 +[#57526]: https://github.com/home-assistant/core/pull/57526 +[#57527]: https://github.com/home-assistant/core/pull/57527 +[#57528]: https://github.com/home-assistant/core/pull/57528 +[#57529]: https://github.com/home-assistant/core/pull/57529 +[#57530]: https://github.com/home-assistant/core/pull/57530 +[#57532]: https://github.com/home-assistant/core/pull/57532 +[#57537]: https://github.com/home-assistant/core/pull/57537 +[#57538]: https://github.com/home-assistant/core/pull/57538 +[#57539]: https://github.com/home-assistant/core/pull/57539 +[#57540]: https://github.com/home-assistant/core/pull/57540 +[#57543]: https://github.com/home-assistant/core/pull/57543 +[#57545]: https://github.com/home-assistant/core/pull/57545 +[#57546]: https://github.com/home-assistant/core/pull/57546 +[#57554]: https://github.com/home-assistant/core/pull/57554 +[#57558]: https://github.com/home-assistant/core/pull/57558 +[#57559]: https://github.com/home-assistant/core/pull/57559 +[#57560]: https://github.com/home-assistant/core/pull/57560 +[#57564]: https://github.com/home-assistant/core/pull/57564 +[#57568]: https://github.com/home-assistant/core/pull/57568 +[#57570]: https://github.com/home-assistant/core/pull/57570 +[#57576]: https://github.com/home-assistant/core/pull/57576 +[#57579]: https://github.com/home-assistant/core/pull/57579 +[#57581]: https://github.com/home-assistant/core/pull/57581 +[#57583]: https://github.com/home-assistant/core/pull/57583 +[#57588]: https://github.com/home-assistant/core/pull/57588 +[#57595]: https://github.com/home-assistant/core/pull/57595 +[#57596]: https://github.com/home-assistant/core/pull/57596 +[#57601]: https://github.com/home-assistant/core/pull/57601 +[#57602]: https://github.com/home-assistant/core/pull/57602 +[#57603]: https://github.com/home-assistant/core/pull/57603 +[#57605]: https://github.com/home-assistant/core/pull/57605 +[#57607]: https://github.com/home-assistant/core/pull/57607 +[#57609]: https://github.com/home-assistant/core/pull/57609 +[#57615]: https://github.com/home-assistant/core/pull/57615 +[#57616]: https://github.com/home-assistant/core/pull/57616 +[#57619]: https://github.com/home-assistant/core/pull/57619 +[#57623]: https://github.com/home-assistant/core/pull/57623 +[#57624]: https://github.com/home-assistant/core/pull/57624 +[#57625]: https://github.com/home-assistant/core/pull/57625 +[#57627]: https://github.com/home-assistant/core/pull/57627 +[#57629]: https://github.com/home-assistant/core/pull/57629 +[#57632]: https://github.com/home-assistant/core/pull/57632 +[#57634]: https://github.com/home-assistant/core/pull/57634 +[#57635]: https://github.com/home-assistant/core/pull/57635 +[#57636]: https://github.com/home-assistant/core/pull/57636 +[#57638]: https://github.com/home-assistant/core/pull/57638 +[#57643]: https://github.com/home-assistant/core/pull/57643 +[#57648]: https://github.com/home-assistant/core/pull/57648 +[#57649]: https://github.com/home-assistant/core/pull/57649 +[#57650]: https://github.com/home-assistant/core/pull/57650 +[#57651]: https://github.com/home-assistant/core/pull/57651 +[#57652]: https://github.com/home-assistant/core/pull/57652 +[#57653]: https://github.com/home-assistant/core/pull/57653 +[#57654]: https://github.com/home-assistant/core/pull/57654 +[#57656]: https://github.com/home-assistant/core/pull/57656 +[#57662]: https://github.com/home-assistant/core/pull/57662 +[#57666]: https://github.com/home-assistant/core/pull/57666 +[#57668]: https://github.com/home-assistant/core/pull/57668 +[#57669]: https://github.com/home-assistant/core/pull/57669 +[#57671]: https://github.com/home-assistant/core/pull/57671 +[#57672]: https://github.com/home-assistant/core/pull/57672 +[#57674]: https://github.com/home-assistant/core/pull/57674 +[#57680]: https://github.com/home-assistant/core/pull/57680 +[#57682]: https://github.com/home-assistant/core/pull/57682 +[#57683]: https://github.com/home-assistant/core/pull/57683 +[#57687]: https://github.com/home-assistant/core/pull/57687 +[#57689]: https://github.com/home-assistant/core/pull/57689 +[#57690]: https://github.com/home-assistant/core/pull/57690 +[#57692]: https://github.com/home-assistant/core/pull/57692 +[#57693]: https://github.com/home-assistant/core/pull/57693 +[#57694]: https://github.com/home-assistant/core/pull/57694 +[#57695]: https://github.com/home-assistant/core/pull/57695 +[#57696]: https://github.com/home-assistant/core/pull/57696 +[#57697]: https://github.com/home-assistant/core/pull/57697 +[#57698]: https://github.com/home-assistant/core/pull/57698 +[#57699]: https://github.com/home-assistant/core/pull/57699 +[#57700]: https://github.com/home-assistant/core/pull/57700 +[#57701]: https://github.com/home-assistant/core/pull/57701 +[#57703]: https://github.com/home-assistant/core/pull/57703 +[#57704]: https://github.com/home-assistant/core/pull/57704 +[#57705]: https://github.com/home-assistant/core/pull/57705 +[#57706]: https://github.com/home-assistant/core/pull/57706 +[#57707]: https://github.com/home-assistant/core/pull/57707 +[#57709]: https://github.com/home-assistant/core/pull/57709 +[#57710]: https://github.com/home-assistant/core/pull/57710 +[#57711]: https://github.com/home-assistant/core/pull/57711 +[#57713]: https://github.com/home-assistant/core/pull/57713 +[#57714]: https://github.com/home-assistant/core/pull/57714 +[#57715]: https://github.com/home-assistant/core/pull/57715 +[#57716]: https://github.com/home-assistant/core/pull/57716 +[#57718]: https://github.com/home-assistant/core/pull/57718 +[#57719]: https://github.com/home-assistant/core/pull/57719 +[#57720]: https://github.com/home-assistant/core/pull/57720 +[#57722]: https://github.com/home-assistant/core/pull/57722 +[#57725]: https://github.com/home-assistant/core/pull/57725 +[#57726]: https://github.com/home-assistant/core/pull/57726 +[#57727]: https://github.com/home-assistant/core/pull/57727 +[#57728]: https://github.com/home-assistant/core/pull/57728 +[#57729]: https://github.com/home-assistant/core/pull/57729 +[#57731]: https://github.com/home-assistant/core/pull/57731 +[#57732]: https://github.com/home-assistant/core/pull/57732 +[#57733]: https://github.com/home-assistant/core/pull/57733 +[#57734]: https://github.com/home-assistant/core/pull/57734 +[#57735]: https://github.com/home-assistant/core/pull/57735 +[#57736]: https://github.com/home-assistant/core/pull/57736 +[#57737]: https://github.com/home-assistant/core/pull/57737 +[#57738]: https://github.com/home-assistant/core/pull/57738 +[#57739]: https://github.com/home-assistant/core/pull/57739 +[#57740]: https://github.com/home-assistant/core/pull/57740 +[#57742]: https://github.com/home-assistant/core/pull/57742 +[#57743]: https://github.com/home-assistant/core/pull/57743 +[#57744]: https://github.com/home-assistant/core/pull/57744 +[#57746]: https://github.com/home-assistant/core/pull/57746 +[#57747]: https://github.com/home-assistant/core/pull/57747 +[#57750]: https://github.com/home-assistant/core/pull/57750 +[#57751]: https://github.com/home-assistant/core/pull/57751 +[#57752]: https://github.com/home-assistant/core/pull/57752 +[#57755]: https://github.com/home-assistant/core/pull/57755 +[#57756]: https://github.com/home-assistant/core/pull/57756 +[#57757]: https://github.com/home-assistant/core/pull/57757 +[#57759]: https://github.com/home-assistant/core/pull/57759 +[#57760]: https://github.com/home-assistant/core/pull/57760 +[#57761]: https://github.com/home-assistant/core/pull/57761 +[#57762]: https://github.com/home-assistant/core/pull/57762 +[#57763]: https://github.com/home-assistant/core/pull/57763 +[#57764]: https://github.com/home-assistant/core/pull/57764 +[#57770]: https://github.com/home-assistant/core/pull/57770 +[#57771]: https://github.com/home-assistant/core/pull/57771 +[#57772]: https://github.com/home-assistant/core/pull/57772 +[#57774]: https://github.com/home-assistant/core/pull/57774 +[#57775]: https://github.com/home-assistant/core/pull/57775 +[#57776]: https://github.com/home-assistant/core/pull/57776 +[#57780]: https://github.com/home-assistant/core/pull/57780 +[#57781]: https://github.com/home-assistant/core/pull/57781 +[#57784]: https://github.com/home-assistant/core/pull/57784 +[#57785]: https://github.com/home-assistant/core/pull/57785 +[#57786]: https://github.com/home-assistant/core/pull/57786 +[#57787]: https://github.com/home-assistant/core/pull/57787 +[#57788]: https://github.com/home-assistant/core/pull/57788 +[#57790]: https://github.com/home-assistant/core/pull/57790 +[#57791]: https://github.com/home-assistant/core/pull/57791 +[#57792]: https://github.com/home-assistant/core/pull/57792 +[#57794]: https://github.com/home-assistant/core/pull/57794 +[#57795]: https://github.com/home-assistant/core/pull/57795 +[#57796]: https://github.com/home-assistant/core/pull/57796 +[#57797]: https://github.com/home-assistant/core/pull/57797 +[#57799]: https://github.com/home-assistant/core/pull/57799 +[#57805]: https://github.com/home-assistant/core/pull/57805 +[#57806]: https://github.com/home-assistant/core/pull/57806 +[#57807]: https://github.com/home-assistant/core/pull/57807 +[#57808]: https://github.com/home-assistant/core/pull/57808 +[#57809]: https://github.com/home-assistant/core/pull/57809 +[#57810]: https://github.com/home-assistant/core/pull/57810 +[#57811]: https://github.com/home-assistant/core/pull/57811 +[#57812]: https://github.com/home-assistant/core/pull/57812 +[#57813]: https://github.com/home-assistant/core/pull/57813 +[#57814]: https://github.com/home-assistant/core/pull/57814 +[#57815]: https://github.com/home-assistant/core/pull/57815 +[#57816]: https://github.com/home-assistant/core/pull/57816 +[#57817]: https://github.com/home-assistant/core/pull/57817 +[#57818]: https://github.com/home-assistant/core/pull/57818 +[#57825]: https://github.com/home-assistant/core/pull/57825 +[#57826]: https://github.com/home-assistant/core/pull/57826 +[#57829]: https://github.com/home-assistant/core/pull/57829 +[#57832]: https://github.com/home-assistant/core/pull/57832 +[#57834]: https://github.com/home-assistant/core/pull/57834 +[#57836]: https://github.com/home-assistant/core/pull/57836 +[#57837]: https://github.com/home-assistant/core/pull/57837 +[#57838]: https://github.com/home-assistant/core/pull/57838 +[#57839]: https://github.com/home-assistant/core/pull/57839 +[#57840]: https://github.com/home-assistant/core/pull/57840 +[#57843]: https://github.com/home-assistant/core/pull/57843 +[#57844]: https://github.com/home-assistant/core/pull/57844 +[#57846]: https://github.com/home-assistant/core/pull/57846 +[#57848]: https://github.com/home-assistant/core/pull/57848 +[#57850]: https://github.com/home-assistant/core/pull/57850 +[#57851]: https://github.com/home-assistant/core/pull/57851 +[#57852]: https://github.com/home-assistant/core/pull/57852 +[#57854]: https://github.com/home-assistant/core/pull/57854 +[#57858]: https://github.com/home-assistant/core/pull/57858 +[#57859]: https://github.com/home-assistant/core/pull/57859 +[#57861]: https://github.com/home-assistant/core/pull/57861 +[#57865]: https://github.com/home-assistant/core/pull/57865 +[#57867]: https://github.com/home-assistant/core/pull/57867 +[#57868]: https://github.com/home-assistant/core/pull/57868 +[#57870]: https://github.com/home-assistant/core/pull/57870 +[#57873]: https://github.com/home-assistant/core/pull/57873 +[#57877]: https://github.com/home-assistant/core/pull/57877 +[#57881]: https://github.com/home-assistant/core/pull/57881 +[#57882]: https://github.com/home-assistant/core/pull/57882 +[#57885]: https://github.com/home-assistant/core/pull/57885 +[#57887]: https://github.com/home-assistant/core/pull/57887 +[#57888]: https://github.com/home-assistant/core/pull/57888 +[#57890]: https://github.com/home-assistant/core/pull/57890 +[#57891]: https://github.com/home-assistant/core/pull/57891 +[#57892]: https://github.com/home-assistant/core/pull/57892 +[#57894]: https://github.com/home-assistant/core/pull/57894 +[#57895]: https://github.com/home-assistant/core/pull/57895 +[#57902]: https://github.com/home-assistant/core/pull/57902 +[#57906]: https://github.com/home-assistant/core/pull/57906 +[#57907]: https://github.com/home-assistant/core/pull/57907 +[#57908]: https://github.com/home-assistant/core/pull/57908 +[#57913]: https://github.com/home-assistant/core/pull/57913 +[#57919]: https://github.com/home-assistant/core/pull/57919 +[#57920]: https://github.com/home-assistant/core/pull/57920 +[#57922]: https://github.com/home-assistant/core/pull/57922 +[#57923]: https://github.com/home-assistant/core/pull/57923 +[#57924]: https://github.com/home-assistant/core/pull/57924 +[#57926]: https://github.com/home-assistant/core/pull/57926 +[#57929]: https://github.com/home-assistant/core/pull/57929 +[#57934]: https://github.com/home-assistant/core/pull/57934 +[#57937]: https://github.com/home-assistant/core/pull/57937 +[#57938]: https://github.com/home-assistant/core/pull/57938 +[#57939]: https://github.com/home-assistant/core/pull/57939 +[#57940]: https://github.com/home-assistant/core/pull/57940 +[#57941]: https://github.com/home-assistant/core/pull/57941 +[#57947]: https://github.com/home-assistant/core/pull/57947 +[#57949]: https://github.com/home-assistant/core/pull/57949 +[#57953]: https://github.com/home-assistant/core/pull/57953 +[#57955]: https://github.com/home-assistant/core/pull/57955 +[#57957]: https://github.com/home-assistant/core/pull/57957 +[#57958]: https://github.com/home-assistant/core/pull/57958 +[#57961]: https://github.com/home-assistant/core/pull/57961 +[#57962]: https://github.com/home-assistant/core/pull/57962 +[#57963]: https://github.com/home-assistant/core/pull/57963 +[#57964]: https://github.com/home-assistant/core/pull/57964 +[#57966]: https://github.com/home-assistant/core/pull/57966 +[#57967]: https://github.com/home-assistant/core/pull/57967 +[#57968]: https://github.com/home-assistant/core/pull/57968 +[#57969]: https://github.com/home-assistant/core/pull/57969 +[#57970]: https://github.com/home-assistant/core/pull/57970 +[#57971]: https://github.com/home-assistant/core/pull/57971 +[#57973]: https://github.com/home-assistant/core/pull/57973 +[#57974]: https://github.com/home-assistant/core/pull/57974 +[#57976]: https://github.com/home-assistant/core/pull/57976 +[#57978]: https://github.com/home-assistant/core/pull/57978 +[#57979]: https://github.com/home-assistant/core/pull/57979 +[#57980]: https://github.com/home-assistant/core/pull/57980 +[#57983]: https://github.com/home-assistant/core/pull/57983 +[#57985]: https://github.com/home-assistant/core/pull/57985 +[#57987]: https://github.com/home-assistant/core/pull/57987 +[#57988]: https://github.com/home-assistant/core/pull/57988 +[#57989]: https://github.com/home-assistant/core/pull/57989 +[#57990]: https://github.com/home-assistant/core/pull/57990 +[#57991]: https://github.com/home-assistant/core/pull/57991 +[#57992]: https://github.com/home-assistant/core/pull/57992 +[#57994]: https://github.com/home-assistant/core/pull/57994 +[#57995]: https://github.com/home-assistant/core/pull/57995 +[#57996]: https://github.com/home-assistant/core/pull/57996 +[#57998]: https://github.com/home-assistant/core/pull/57998 +[#57999]: https://github.com/home-assistant/core/pull/57999 +[#58004]: https://github.com/home-assistant/core/pull/58004 +[#58005]: https://github.com/home-assistant/core/pull/58005 +[#58006]: https://github.com/home-assistant/core/pull/58006 +[#58007]: https://github.com/home-assistant/core/pull/58007 +[#58011]: https://github.com/home-assistant/core/pull/58011 +[#58012]: https://github.com/home-assistant/core/pull/58012 +[#58013]: https://github.com/home-assistant/core/pull/58013 +[#58014]: https://github.com/home-assistant/core/pull/58014 +[#58015]: https://github.com/home-assistant/core/pull/58015 +[#58017]: https://github.com/home-assistant/core/pull/58017 +[#58018]: https://github.com/home-assistant/core/pull/58018 +[#58019]: https://github.com/home-assistant/core/pull/58019 +[#58020]: https://github.com/home-assistant/core/pull/58020 +[#58021]: https://github.com/home-assistant/core/pull/58021 +[#58023]: https://github.com/home-assistant/core/pull/58023 +[#58025]: https://github.com/home-assistant/core/pull/58025 +[#58026]: https://github.com/home-assistant/core/pull/58026 +[#58027]: https://github.com/home-assistant/core/pull/58027 +[#58028]: https://github.com/home-assistant/core/pull/58028 +[#58030]: https://github.com/home-assistant/core/pull/58030 +[#58032]: https://github.com/home-assistant/core/pull/58032 +[#58033]: https://github.com/home-assistant/core/pull/58033 +[#58034]: https://github.com/home-assistant/core/pull/58034 +[#58035]: https://github.com/home-assistant/core/pull/58035 +[#58036]: https://github.com/home-assistant/core/pull/58036 +[#58037]: https://github.com/home-assistant/core/pull/58037 +[#58038]: https://github.com/home-assistant/core/pull/58038 +[#58039]: https://github.com/home-assistant/core/pull/58039 +[#58040]: https://github.com/home-assistant/core/pull/58040 +[#58041]: https://github.com/home-assistant/core/pull/58041 +[#58042]: https://github.com/home-assistant/core/pull/58042 +[#58045]: https://github.com/home-assistant/core/pull/58045 +[#58049]: https://github.com/home-assistant/core/pull/58049 +[#58051]: https://github.com/home-assistant/core/pull/58051 +[#58054]: https://github.com/home-assistant/core/pull/58054 +[#58055]: https://github.com/home-assistant/core/pull/58055 +[#58058]: https://github.com/home-assistant/core/pull/58058 +[#58061]: https://github.com/home-assistant/core/pull/58061 +[#58062]: https://github.com/home-assistant/core/pull/58062 +[#58063]: https://github.com/home-assistant/core/pull/58063 +[#58065]: https://github.com/home-assistant/core/pull/58065 +[#58070]: https://github.com/home-assistant/core/pull/58070 +[#58071]: https://github.com/home-assistant/core/pull/58071 +[#58073]: https://github.com/home-assistant/core/pull/58073 +[#58075]: https://github.com/home-assistant/core/pull/58075 +[#58076]: https://github.com/home-assistant/core/pull/58076 +[#58077]: https://github.com/home-assistant/core/pull/58077 +[#58078]: https://github.com/home-assistant/core/pull/58078 +[#58079]: https://github.com/home-assistant/core/pull/58079 +[#58080]: https://github.com/home-assistant/core/pull/58080 +[#58081]: https://github.com/home-assistant/core/pull/58081 +[#58082]: https://github.com/home-assistant/core/pull/58082 +[#58083]: https://github.com/home-assistant/core/pull/58083 +[#58085]: https://github.com/home-assistant/core/pull/58085 +[#58086]: https://github.com/home-assistant/core/pull/58086 +[#58089]: https://github.com/home-assistant/core/pull/58089 +[#58092]: https://github.com/home-assistant/core/pull/58092 +[#58093]: https://github.com/home-assistant/core/pull/58093 +[#58095]: https://github.com/home-assistant/core/pull/58095 +[#58097]: https://github.com/home-assistant/core/pull/58097 +[#58100]: https://github.com/home-assistant/core/pull/58100 +[#58101]: https://github.com/home-assistant/core/pull/58101 +[#58102]: https://github.com/home-assistant/core/pull/58102 +[#58104]: https://github.com/home-assistant/core/pull/58104 +[#58105]: https://github.com/home-assistant/core/pull/58105 +[#58106]: https://github.com/home-assistant/core/pull/58106 +[#58107]: https://github.com/home-assistant/core/pull/58107 +[#58108]: https://github.com/home-assistant/core/pull/58108 +[#58110]: https://github.com/home-assistant/core/pull/58110 +[#58111]: https://github.com/home-assistant/core/pull/58111 +[#58112]: https://github.com/home-assistant/core/pull/58112 +[#58116]: https://github.com/home-assistant/core/pull/58116 +[#58118]: https://github.com/home-assistant/core/pull/58118 +[#58120]: https://github.com/home-assistant/core/pull/58120 +[#58121]: https://github.com/home-assistant/core/pull/58121 +[#58125]: https://github.com/home-assistant/core/pull/58125 +[#58127]: https://github.com/home-assistant/core/pull/58127 +[#58129]: https://github.com/home-assistant/core/pull/58129 +[#58133]: https://github.com/home-assistant/core/pull/58133 +[#58134]: https://github.com/home-assistant/core/pull/58134 +[#58136]: https://github.com/home-assistant/core/pull/58136 +[#58138]: https://github.com/home-assistant/core/pull/58138 +[#58139]: https://github.com/home-assistant/core/pull/58139 +[#58141]: https://github.com/home-assistant/core/pull/58141 +[#58146]: https://github.com/home-assistant/core/pull/58146 +[#58147]: https://github.com/home-assistant/core/pull/58147 +[#58148]: https://github.com/home-assistant/core/pull/58148 +[#58149]: https://github.com/home-assistant/core/pull/58149 +[#58150]: https://github.com/home-assistant/core/pull/58150 +[#58151]: https://github.com/home-assistant/core/pull/58151 +[#58152]: https://github.com/home-assistant/core/pull/58152 +[#58154]: https://github.com/home-assistant/core/pull/58154 +[#58157]: https://github.com/home-assistant/core/pull/58157 +[#58160]: https://github.com/home-assistant/core/pull/58160 +[#58161]: https://github.com/home-assistant/core/pull/58161 +[#58164]: https://github.com/home-assistant/core/pull/58164 +[#58165]: https://github.com/home-assistant/core/pull/58165 +[#58168]: https://github.com/home-assistant/core/pull/58168 +[#58170]: https://github.com/home-assistant/core/pull/58170 +[#58172]: https://github.com/home-assistant/core/pull/58172 +[#58175]: https://github.com/home-assistant/core/pull/58175 +[#58176]: https://github.com/home-assistant/core/pull/58176 +[#58178]: https://github.com/home-assistant/core/pull/58178 +[#58179]: https://github.com/home-assistant/core/pull/58179 +[#58180]: https://github.com/home-assistant/core/pull/58180 +[#58181]: https://github.com/home-assistant/core/pull/58181 +[#58182]: https://github.com/home-assistant/core/pull/58182 +[#58183]: https://github.com/home-assistant/core/pull/58183 +[#58184]: https://github.com/home-assistant/core/pull/58184 +[#58185]: https://github.com/home-assistant/core/pull/58185 +[#58186]: https://github.com/home-assistant/core/pull/58186 +[#58187]: https://github.com/home-assistant/core/pull/58187 +[#58188]: https://github.com/home-assistant/core/pull/58188 +[#58189]: https://github.com/home-assistant/core/pull/58189 +[#58192]: https://github.com/home-assistant/core/pull/58192 +[#58193]: https://github.com/home-assistant/core/pull/58193 +[#58194]: https://github.com/home-assistant/core/pull/58194 +[#58196]: https://github.com/home-assistant/core/pull/58196 +[#58202]: https://github.com/home-assistant/core/pull/58202 +[#58207]: https://github.com/home-assistant/core/pull/58207 +[#58210]: https://github.com/home-assistant/core/pull/58210 +[#58211]: https://github.com/home-assistant/core/pull/58211 +[#58212]: https://github.com/home-assistant/core/pull/58212 +[#58213]: https://github.com/home-assistant/core/pull/58213 +[#58217]: https://github.com/home-assistant/core/pull/58217 +[#58218]: https://github.com/home-assistant/core/pull/58218 +[#58222]: https://github.com/home-assistant/core/pull/58222 +[#58223]: https://github.com/home-assistant/core/pull/58223 +[#58225]: https://github.com/home-assistant/core/pull/58225 +[#58227]: https://github.com/home-assistant/core/pull/58227 +[#58230]: https://github.com/home-assistant/core/pull/58230 +[#58233]: https://github.com/home-assistant/core/pull/58233 +[#58235]: https://github.com/home-assistant/core/pull/58235 +[#58237]: https://github.com/home-assistant/core/pull/58237 +[#58238]: https://github.com/home-assistant/core/pull/58238 +[#58240]: https://github.com/home-assistant/core/pull/58240 +[#58241]: https://github.com/home-assistant/core/pull/58241 +[#58244]: https://github.com/home-assistant/core/pull/58244 +[#58246]: https://github.com/home-assistant/core/pull/58246 +[#58248]: https://github.com/home-assistant/core/pull/58248 +[#58249]: https://github.com/home-assistant/core/pull/58249 +[#58250]: https://github.com/home-assistant/core/pull/58250 +[#58251]: https://github.com/home-assistant/core/pull/58251 +[#58255]: https://github.com/home-assistant/core/pull/58255 +[#58256]: https://github.com/home-assistant/core/pull/58256 +[#58257]: https://github.com/home-assistant/core/pull/58257 +[#58258]: https://github.com/home-assistant/core/pull/58258 +[#58259]: https://github.com/home-assistant/core/pull/58259 +[#58260]: https://github.com/home-assistant/core/pull/58260 +[#58263]: https://github.com/home-assistant/core/pull/58263 +[#58264]: https://github.com/home-assistant/core/pull/58264 +[#58266]: https://github.com/home-assistant/core/pull/58266 +[#58268]: https://github.com/home-assistant/core/pull/58268 +[#58269]: https://github.com/home-assistant/core/pull/58269 +[#58275]: https://github.com/home-assistant/core/pull/58275 +[#58276]: https://github.com/home-assistant/core/pull/58276 +[#58277]: https://github.com/home-assistant/core/pull/58277 +[#58278]: https://github.com/home-assistant/core/pull/58278 +[#58279]: https://github.com/home-assistant/core/pull/58279 +[#58280]: https://github.com/home-assistant/core/pull/58280 +[#58281]: https://github.com/home-assistant/core/pull/58281 +[#58284]: https://github.com/home-assistant/core/pull/58284 +[#58288]: https://github.com/home-assistant/core/pull/58288 +[#58289]: https://github.com/home-assistant/core/pull/58289 +[#58290]: https://github.com/home-assistant/core/pull/58290 +[#58291]: https://github.com/home-assistant/core/pull/58291 +[#58292]: https://github.com/home-assistant/core/pull/58292 +[#58293]: https://github.com/home-assistant/core/pull/58293 +[#58294]: https://github.com/home-assistant/core/pull/58294 +[#58295]: https://github.com/home-assistant/core/pull/58295 +[#58296]: https://github.com/home-assistant/core/pull/58296 +[#58298]: https://github.com/home-assistant/core/pull/58298 +[#58299]: https://github.com/home-assistant/core/pull/58299 +[#58300]: https://github.com/home-assistant/core/pull/58300 +[#58301]: https://github.com/home-assistant/core/pull/58301 +[#58302]: https://github.com/home-assistant/core/pull/58302 +[#58305]: https://github.com/home-assistant/core/pull/58305 +[#58307]: https://github.com/home-assistant/core/pull/58307 +[#58308]: https://github.com/home-assistant/core/pull/58308 +[#58309]: https://github.com/home-assistant/core/pull/58309 +[#58310]: https://github.com/home-assistant/core/pull/58310 +[#58312]: https://github.com/home-assistant/core/pull/58312 +[#58313]: https://github.com/home-assistant/core/pull/58313 +[#58314]: https://github.com/home-assistant/core/pull/58314 +[#58318]: https://github.com/home-assistant/core/pull/58318 +[#58319]: https://github.com/home-assistant/core/pull/58319 +[#58320]: https://github.com/home-assistant/core/pull/58320 +[#58321]: https://github.com/home-assistant/core/pull/58321 +[#58324]: https://github.com/home-assistant/core/pull/58324 +[#58325]: https://github.com/home-assistant/core/pull/58325 +[#58328]: https://github.com/home-assistant/core/pull/58328 +[#58329]: https://github.com/home-assistant/core/pull/58329 +[#58330]: https://github.com/home-assistant/core/pull/58330 +[#58332]: https://github.com/home-assistant/core/pull/58332 +[#58333]: https://github.com/home-assistant/core/pull/58333 +[#58335]: https://github.com/home-assistant/core/pull/58335 +[#58337]: https://github.com/home-assistant/core/pull/58337 +[#58340]: https://github.com/home-assistant/core/pull/58340 +[#58341]: https://github.com/home-assistant/core/pull/58341 +[#58343]: https://github.com/home-assistant/core/pull/58343 +[#58345]: https://github.com/home-assistant/core/pull/58345 +[#58346]: https://github.com/home-assistant/core/pull/58346 +[#58347]: https://github.com/home-assistant/core/pull/58347 +[#58349]: https://github.com/home-assistant/core/pull/58349 +[#58351]: https://github.com/home-assistant/core/pull/58351 +[#58353]: https://github.com/home-assistant/core/pull/58353 +[#58357]: https://github.com/home-assistant/core/pull/58357 +[#58358]: https://github.com/home-assistant/core/pull/58358 +[#58359]: https://github.com/home-assistant/core/pull/58359 +[#58361]: https://github.com/home-assistant/core/pull/58361 +[#58362]: https://github.com/home-assistant/core/pull/58362 +[#58363]: https://github.com/home-assistant/core/pull/58363 +[#58364]: https://github.com/home-assistant/core/pull/58364 +[#58365]: https://github.com/home-assistant/core/pull/58365 +[#58366]: https://github.com/home-assistant/core/pull/58366 +[#58367]: https://github.com/home-assistant/core/pull/58367 +[#58368]: https://github.com/home-assistant/core/pull/58368 +[#58370]: https://github.com/home-assistant/core/pull/58370 +[#58371]: https://github.com/home-assistant/core/pull/58371 +[#58372]: https://github.com/home-assistant/core/pull/58372 +[#58374]: https://github.com/home-assistant/core/pull/58374 +[#58375]: https://github.com/home-assistant/core/pull/58375 +[#58376]: https://github.com/home-assistant/core/pull/58376 +[#58377]: https://github.com/home-assistant/core/pull/58377 +[#58378]: https://github.com/home-assistant/core/pull/58378 +[#58379]: https://github.com/home-assistant/core/pull/58379 +[#58383]: https://github.com/home-assistant/core/pull/58383 +[#58384]: https://github.com/home-assistant/core/pull/58384 +[#58385]: https://github.com/home-assistant/core/pull/58385 +[#58387]: https://github.com/home-assistant/core/pull/58387 +[#58388]: https://github.com/home-assistant/core/pull/58388 +[#58389]: https://github.com/home-assistant/core/pull/58389 +[#58390]: https://github.com/home-assistant/core/pull/58390 +[#58391]: https://github.com/home-assistant/core/pull/58391 +[#58392]: https://github.com/home-assistant/core/pull/58392 +[#58394]: https://github.com/home-assistant/core/pull/58394 +[#58395]: https://github.com/home-assistant/core/pull/58395 +[#58396]: https://github.com/home-assistant/core/pull/58396 +[#58397]: https://github.com/home-assistant/core/pull/58397 +[#58398]: https://github.com/home-assistant/core/pull/58398 +[#58399]: https://github.com/home-assistant/core/pull/58399 +[#58400]: https://github.com/home-assistant/core/pull/58400 +[#58401]: https://github.com/home-assistant/core/pull/58401 +[#58403]: https://github.com/home-assistant/core/pull/58403 +[#58405]: https://github.com/home-assistant/core/pull/58405 +[#58406]: https://github.com/home-assistant/core/pull/58406 +[#58408]: https://github.com/home-assistant/core/pull/58408 +[#58409]: https://github.com/home-assistant/core/pull/58409 +[#58410]: https://github.com/home-assistant/core/pull/58410 +[#58411]: https://github.com/home-assistant/core/pull/58411 +[#58413]: https://github.com/home-assistant/core/pull/58413 +[#58414]: https://github.com/home-assistant/core/pull/58414 +[#58416]: https://github.com/home-assistant/core/pull/58416 +[#58417]: https://github.com/home-assistant/core/pull/58417 +[#58418]: https://github.com/home-assistant/core/pull/58418 +[#58419]: https://github.com/home-assistant/core/pull/58419 +[#58422]: https://github.com/home-assistant/core/pull/58422 +[#58423]: https://github.com/home-assistant/core/pull/58423 +[#58424]: https://github.com/home-assistant/core/pull/58424 +[#58426]: https://github.com/home-assistant/core/pull/58426 +[#58429]: https://github.com/home-assistant/core/pull/58429 +[#58433]: https://github.com/home-assistant/core/pull/58433 +[#58434]: https://github.com/home-assistant/core/pull/58434 +[#58438]: https://github.com/home-assistant/core/pull/58438 +[#58442]: https://github.com/home-assistant/core/pull/58442 +[#58444]: https://github.com/home-assistant/core/pull/58444 +[#58446]: https://github.com/home-assistant/core/pull/58446 +[#58448]: https://github.com/home-assistant/core/pull/58448 +[#58450]: https://github.com/home-assistant/core/pull/58450 +[#58451]: https://github.com/home-assistant/core/pull/58451 +[#58452]: https://github.com/home-assistant/core/pull/58452 +[#58454]: https://github.com/home-assistant/core/pull/58454 +[#58455]: https://github.com/home-assistant/core/pull/58455 +[#58456]: https://github.com/home-assistant/core/pull/58456 +[#58461]: https://github.com/home-assistant/core/pull/58461 +[#58463]: https://github.com/home-assistant/core/pull/58463 +[#58465]: https://github.com/home-assistant/core/pull/58465 +[#58468]: https://github.com/home-assistant/core/pull/58468 +[#58469]: https://github.com/home-assistant/core/pull/58469 +[#58471]: https://github.com/home-assistant/core/pull/58471 +[#58472]: https://github.com/home-assistant/core/pull/58472 +[#58476]: https://github.com/home-assistant/core/pull/58476 +[#58477]: https://github.com/home-assistant/core/pull/58477 +[#58478]: https://github.com/home-assistant/core/pull/58478 +[#58479]: https://github.com/home-assistant/core/pull/58479 +[#58484]: https://github.com/home-assistant/core/pull/58484 +[#58486]: https://github.com/home-assistant/core/pull/58486 +[#58487]: https://github.com/home-assistant/core/pull/58487 +[#58491]: https://github.com/home-assistant/core/pull/58491 +[#58493]: https://github.com/home-assistant/core/pull/58493 +[#58494]: https://github.com/home-assistant/core/pull/58494 +[#58495]: https://github.com/home-assistant/core/pull/58495 +[#58498]: https://github.com/home-assistant/core/pull/58498 +[#58499]: https://github.com/home-assistant/core/pull/58499 +[#58500]: https://github.com/home-assistant/core/pull/58500 +[#58502]: https://github.com/home-assistant/core/pull/58502 +[#58506]: https://github.com/home-assistant/core/pull/58506 +[#58507]: https://github.com/home-assistant/core/pull/58507 +[#58510]: https://github.com/home-assistant/core/pull/58510 +[#58511]: https://github.com/home-assistant/core/pull/58511 +[#58514]: https://github.com/home-assistant/core/pull/58514 +[#58515]: https://github.com/home-assistant/core/pull/58515 +[#58516]: https://github.com/home-assistant/core/pull/58516 +[#58517]: https://github.com/home-assistant/core/pull/58517 +[#58518]: https://github.com/home-assistant/core/pull/58518 +[#58519]: https://github.com/home-assistant/core/pull/58519 +[#58520]: https://github.com/home-assistant/core/pull/58520 +[#58521]: https://github.com/home-assistant/core/pull/58521 +[#58522]: https://github.com/home-assistant/core/pull/58522 +[#58523]: https://github.com/home-assistant/core/pull/58523 +[#58524]: https://github.com/home-assistant/core/pull/58524 +[#58525]: https://github.com/home-assistant/core/pull/58525 +[#58526]: https://github.com/home-assistant/core/pull/58526 +[#58527]: https://github.com/home-assistant/core/pull/58527 +[#58531]: https://github.com/home-assistant/core/pull/58531 +[#58533]: https://github.com/home-assistant/core/pull/58533 +[#58534]: https://github.com/home-assistant/core/pull/58534 +[#58539]: https://github.com/home-assistant/core/pull/58539 +[#58540]: https://github.com/home-assistant/core/pull/58540 +[#58545]: https://github.com/home-assistant/core/pull/58545 +[#58548]: https://github.com/home-assistant/core/pull/58548 +[#58549]: https://github.com/home-assistant/core/pull/58549 +[#58553]: https://github.com/home-assistant/core/pull/58553 +[#58555]: https://github.com/home-assistant/core/pull/58555 +[#58557]: https://github.com/home-assistant/core/pull/58557 +[#58564]: https://github.com/home-assistant/core/pull/58564 +[#58565]: https://github.com/home-assistant/core/pull/58565 +[#58568]: https://github.com/home-assistant/core/pull/58568 +[#58584]: https://github.com/home-assistant/core/pull/58584 +[#58591]: https://github.com/home-assistant/core/pull/58591 +[#58594]: https://github.com/home-assistant/core/pull/58594 +[#58597]: https://github.com/home-assistant/core/pull/58597 +[#58623]: https://github.com/home-assistant/core/pull/58623 +[#58625]: https://github.com/home-assistant/core/pull/58625 +[#58626]: https://github.com/home-assistant/core/pull/58626 +[#58628]: https://github.com/home-assistant/core/pull/58628 +[#58629]: https://github.com/home-assistant/core/pull/58629 +[#58630]: https://github.com/home-assistant/core/pull/58630 +[#58631]: https://github.com/home-assistant/core/pull/58631 +[#58633]: https://github.com/home-assistant/core/pull/58633 +[#58635]: https://github.com/home-assistant/core/pull/58635 +[#58643]: https://github.com/home-assistant/core/pull/58643 +[#58659]: https://github.com/home-assistant/core/pull/58659 +[#58670]: https://github.com/home-assistant/core/pull/58670 +[#58672]: https://github.com/home-assistant/core/pull/58672 +[#58680]: https://github.com/home-assistant/core/pull/58680 +[#58682]: https://github.com/home-assistant/core/pull/58682 +[#58684]: https://github.com/home-assistant/core/pull/58684 +[#58686]: https://github.com/home-assistant/core/pull/58686 +[#58688]: https://github.com/home-assistant/core/pull/58688 +[#58689]: https://github.com/home-assistant/core/pull/58689 +[#58698]: https://github.com/home-assistant/core/pull/58698 +[#58701]: https://github.com/home-assistant/core/pull/58701 +[#58705]: https://github.com/home-assistant/core/pull/58705 +[#58708]: https://github.com/home-assistant/core/pull/58708 +[#58712]: https://github.com/home-assistant/core/pull/58712 +[#58718]: https://github.com/home-assistant/core/pull/58718 +[#58721]: https://github.com/home-assistant/core/pull/58721 +[#58723]: https://github.com/home-assistant/core/pull/58723 +[#58732]: https://github.com/home-assistant/core/pull/58732 +[#58736]: https://github.com/home-assistant/core/pull/58736 +[#58746]: https://github.com/home-assistant/core/pull/58746 +[#58751]: https://github.com/home-assistant/core/pull/58751 +[#58753]: https://github.com/home-assistant/core/pull/58753 +[#58754]: https://github.com/home-assistant/core/pull/58754 +[#58755]: https://github.com/home-assistant/core/pull/58755 +[#58756]: https://github.com/home-assistant/core/pull/58756 +[#58773]: https://github.com/home-assistant/core/pull/58773 +[#58774]: https://github.com/home-assistant/core/pull/58774 +[#58780]: https://github.com/home-assistant/core/pull/58780 +[#58817]: https://github.com/home-assistant/core/pull/58817 +[#58819]: https://github.com/home-assistant/core/pull/58819 +[#58821]: https://github.com/home-assistant/core/pull/58821 +[#58822]: https://github.com/home-assistant/core/pull/58822 +[#58826]: https://github.com/home-assistant/core/pull/58826 +[#58840]: https://github.com/home-assistant/core/pull/58840 +[#58875]: https://github.com/home-assistant/core/pull/58875 +[#58880]: https://github.com/home-assistant/core/pull/58880 +[#58887]: https://github.com/home-assistant/core/pull/58887 +[#58894]: https://github.com/home-assistant/core/pull/58894 +[#58901]: https://github.com/home-assistant/core/pull/58901 +[#58908]: https://github.com/home-assistant/core/pull/58908 +[#58911]: https://github.com/home-assistant/core/pull/58911 +[#58914]: https://github.com/home-assistant/core/pull/58914 +[#58937]: https://github.com/home-assistant/core/pull/58937 +[#58947]: https://github.com/home-assistant/core/pull/58947 +[#58951]: https://github.com/home-assistant/core/pull/58951 +[#58952]: https://github.com/home-assistant/core/pull/58952 +[#58954]: https://github.com/home-assistant/core/pull/58954 +[#58959]: https://github.com/home-assistant/core/pull/58959 +[#58962]: https://github.com/home-assistant/core/pull/58962 +[#58977]: https://github.com/home-assistant/core/pull/58977 +[#58980]: https://github.com/home-assistant/core/pull/58980 +[#58988]: https://github.com/home-assistant/core/pull/58988 +[@ANMalko]: https://github.com/ANMalko +[@Adminiuga]: https://github.com/Adminiuga +[@Bre77]: https://github.com/Bre77 +[@Cereal2nd]: https://github.com/Cereal2nd +[@Chen-IL]: https://github.com/Chen-IL +[@ColinRobbins]: https://github.com/ColinRobbins +[@Danielhiversen]: https://github.com/Danielhiversen +[@Djelibeybi]: https://github.com/Djelibeybi +[@Drafteed]: https://github.com/Drafteed +[@Ernst79]: https://github.com/Ernst79 +[@FlavorFx]: https://github.com/FlavorFx +[@JJJ]: https://github.com/JJJ +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@Kapernicus]: https://github.com/Kapernicus +[@L-I-Am]: https://github.com/L-I-Am +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@Misiu]: https://github.com/Misiu +[@NickM-27]: https://github.com/NickM-27 +[@Noltari]: https://github.com/Noltari +[@OGKevin]: https://github.com/OGKevin +[@OttoWinter]: https://github.com/OttoWinter +[@Petro31]: https://github.com/Petro31 +[@Quentame]: https://github.com/Quentame +[@RenierM26]: https://github.com/RenierM26 +[@RobertMe]: https://github.com/RobertMe +[@Shutgun]: https://github.com/Shutgun +[@StevenLooman]: https://github.com/StevenLooman +[@TheLastProject]: https://github.com/TheLastProject +[@TheNogl]: https://github.com/TheNogl +[@TomBrien]: https://github.com/TomBrien +[@Tommatheussen]: https://github.com/Tommatheussen +[@abmantis]: https://github.com/abmantis +[@alexanv1]: https://github.com/alexanv1 +[@allenporter]: https://github.com/allenporter +[@ammgws]: https://github.com/ammgws +[@andre-richter]: https://github.com/andre-richter +[@arksega]: https://github.com/arksega +[@asansano]: https://github.com/asansano +[@austinmroczek]: https://github.com/austinmroczek +[@avee87]: https://github.com/avee87 +[@b-pass]: https://github.com/b-pass +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@bjpetit]: https://github.com/bjpetit +[@bokub]: https://github.com/bokub +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@brianegge]: https://github.com/brianegge +[@briglx]: https://github.com/briglx +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@chemelli74]: https://github.com/chemelli74 +[@chishm]: https://github.com/chishm +[@chmielowiec]: https://github.com/chmielowiec +[@chrillebile]: https://github.com/chrillebile +[@cisasteelersfan]: https://github.com/cisasteelersfan +[@cmroche]: https://github.com/cmroche +[@danielperna84]: https://github.com/danielperna84 +[@davelowper]: https://github.com/davelowper +[@davet2001]: https://github.com/davet2001 +[@davidlb]: https://github.com/davidlb +[@dboslee]: https://github.com/dboslee +[@dennisschroer]: https://github.com/dennisschroer +[@devbis]: https://github.com/devbis +[@dgomes]: https://github.com/dgomes +[@dkt01]: https://github.com/dkt01 +[@dmulcahey]: https://github.com/dmulcahey +[@drinfernoo]: https://github.com/drinfernoo +[@drizzle1]: https://github.com/drizzle1 +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@fOmey]: https://github.com/fOmey +[@farmio]: https://github.com/farmio +[@felipediel]: https://github.com/felipediel +[@firstof9]: https://github.com/firstof9 +[@flabbamann]: https://github.com/flabbamann +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@garbled1]: https://github.com/garbled1 +[@ggravlingen]: https://github.com/ggravlingen +[@gjong]: https://github.com/gjong +[@gwww]: https://github.com/gwww +[@hesselonline]: https://github.com/hesselonline +[@icemanch]: https://github.com/icemanch +[@indykoning]: https://github.com/indykoning +[@inytar]: https://github.com/inytar +[@itairaz1]: https://github.com/itairaz1 +[@janiversen]: https://github.com/janiversen +[@jasonmadigan]: https://github.com/jasonmadigan +[@javicalle]: https://github.com/javicalle +[@jbouwh]: https://github.com/jbouwh +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@jrester]: https://github.com/jrester +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@kodsnutten]: https://github.com/kodsnutten +[@koying]: https://github.com/koying +[@krys1976]: https://github.com/krys1976 +[@lanrat]: https://github.com/lanrat +[@lkempf]: https://github.com/lkempf +[@ludeeus]: https://github.com/ludeeus +[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker +[@marvin-w]: https://github.com/marvin-w +[@mback2k]: https://github.com/mback2k +[@mezz64]: https://github.com/mezz64 +[@mib1185]: https://github.com/mib1185 +[@michaeldavie]: https://github.com/michaeldavie +[@milanmeu]: https://github.com/milanmeu +[@muppet3000]: https://github.com/muppet3000 +[@natekspencer]: https://github.com/natekspencer +[@nihaals]: https://github.com/nihaals +[@oischinger]: https://github.com/oischinger +[@ol-iver]: https://github.com/ol-iver +[@ollo69]: https://github.com/ollo69 +[@pabigot]: https://github.com/pabigot +[@pattyland]: https://github.com/pattyland +[@paulmonigatti]: https://github.com/paulmonigatti +[@peternijssen]: https://github.com/peternijssen +[@purcell-lab]: https://github.com/purcell-lab +[@raman325]: https://github.com/raman325 +[@rdfurman]: https://github.com/rdfurman +[@regevbr]: https://github.com/regevbr +[@rfleming71]: https://github.com/rfleming71 +[@rik-v]: https://github.com/rik-v +[@rikroe]: https://github.com/rikroe +[@rklomp]: https://github.com/rklomp +[@ronalterde]: https://github.com/ronalterde +[@rytilahti]: https://github.com/rytilahti +[@sagioto]: https://github.com/sagioto +[@scop]: https://github.com/scop +[@shbatm]: https://github.com/shbatm +[@some-guy-in-oz]: https://github.com/some-guy-in-oz +[@spacegaier]: https://github.com/spacegaier +[@spahlimi]: https://github.com/spahlimi +[@starkillerOG]: https://github.com/starkillerOG +[@teharris1]: https://github.com/teharris1 +[@terminet85]: https://github.com/terminet85 +[@thecode]: https://github.com/thecode +[@thomas-svrts]: https://github.com/thomas-svrts +[@thrawnarn]: https://github.com/thrawnarn +[@timmo001]: https://github.com/timmo001 +[@tkdrob]: https://github.com/tkdrob +[@tomer-w]: https://github.com/tomer-w +[@tylergibson]: https://github.com/tylergibson +[@uvjustin]: https://github.com/uvjustin +[@vigonotion]: https://github.com/vigonotion +[@yeahme49]: https://github.com/yeahme49 +[@yuvalabou]: https://github.com/yuvalabou +[@zacwest]: https://github.com/zacwest +[@zlinoliver]: https://github.com/zlinoliver +[accuweather docs]: /integrations/accuweather/ +[acmeda docs]: /integrations/acmeda/ +[adax docs]: /integrations/adax/ +[advantage_air docs]: /integrations/advantage_air/ +[aemet docs]: /integrations/aemet/ +[aftership docs]: /integrations/aftership/ +[agent_dvr docs]: /integrations/agent_dvr/ +[air_quality docs]: /integrations/air_quality/ +[airly docs]: /integrations/airly/ +[airthings docs]: /integrations/airthings/ +[airvisual docs]: /integrations/airvisual/ +[alexa docs]: /integrations/alexa/ +[ambee docs]: /integrations/ambee/ +[amberelectric docs]: /integrations/amberelectric/ +[ambient_station docs]: /integrations/ambient_station/ +[apple_tv docs]: /integrations/apple_tv/ +[arcam_fmj docs]: /integrations/arcam_fmj/ +[arlo docs]: /integrations/arlo/ +[asuswrt docs]: /integrations/asuswrt/ +[august docs]: /integrations/august/ +[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[axis docs]: /integrations/axis/ +[bayesian docs]: /integrations/bayesian/ +[bbox docs]: /integrations/bbox/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bitcoin docs]: /integrations/bitcoin/ +[blink docs]: /integrations/blink/ +[bluesound docs]: /integrations/bluesound/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[bosch_shc docs]: /integrations/bosch_shc/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[buienradar docs]: /integrations/buienradar/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[clickatell docs]: /integrations/clickatell/ +[climacell docs]: /integrations/climacell/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[co2signal docs]: /integrations/co2signal/ +[coinbase docs]: /integrations/coinbase/ +[config docs]: /integrations/config/ +[control4 docs]: /integrations/control4/ +[daikin docs]: /integrations/daikin/ +[darksky docs]: /integrations/darksky/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[dhcp docs]: /integrations/dhcp/ +[directv docs]: /integrations/directv/ +[discord docs]: /integrations/discord/ +[discovery docs]: /integrations/discovery/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[doorbird docs]: /integrations/doorbird/ +[ecobee docs]: /integrations/ecobee/ +[efergy docs]: /integrations/efergy/ +[eight_sleep docs]: /integrations/eight_sleep/ +[elkm1 docs]: /integrations/elkm1/ +[emulated_hue docs]: /integrations/emulated_hue/ +[energy docs]: /integrations/energy/ +[enocean docs]: /integrations/enocean/ +[environment_canada docs]: /integrations/environment_canada/ +[eq3btsmart docs]: /integrations/eq3btsmart/ +[esphome docs]: /integrations/esphome/ +[essent docs]: /integrations/essent/ +[ezviz docs]: /integrations/ezviz/ +[fan docs]: /integrations/fan/ +[feedreader docs]: /integrations/feedreader/ +[fibaro docs]: /integrations/fibaro/ +[fitbit docs]: /integrations/fitbit/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flunearyou docs]: /integrations/flunearyou/ +[flux_led docs]: /integrations/flux_led/ +[folder_watcher docs]: /integrations/folder_watcher/ +[forecast_solar docs]: /integrations/forecast_solar/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[gios docs]: /integrations/gios/ +[goalzero docs]: /integrations/goalzero/ +[gogogate2 docs]: /integrations/gogogate2/ +[google_assistant docs]: /integrations/google_assistant/ +[google_travel_time docs]: /integrations/google_travel_time/ +[gree docs]: /integrations/gree/ +[group docs]: /integrations/group/ +[growatt_server docs]: /integrations/growatt_server/ +[guardian docs]: /integrations/guardian/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[hikvision docs]: /integrations/hikvision/ +[hive docs]: /integrations/hive/ +[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/ +[huawei_lte docs]: /integrations/huawei_lte/ +[huawei_router docs]: /integrations/huawei_router/ +[hue docs]: /integrations/hue/ +[huisbaasje docs]: /integrations/huisbaasje/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[icloud docs]: /integrations/icloud/ +[input_datetime docs]: /integrations/input_datetime/ +[input_select docs]: /integrations/input_select/ +[insteon docs]: /integrations/insteon/ +[iqvia docs]: /integrations/iqvia/ +[iss docs]: /integrations/iss/ +[isy994 docs]: /integrations/isy994/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[juicenet docs]: /integrations/juicenet/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[kira docs]: /integrations/kira/ +[knx docs]: /integrations/knx/ +[kraken docs]: /integrations/kraken/ +[lg_netcast docs]: /integrations/lg_netcast/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[litterrobot docs]: /integrations/litterrobot/ +[local_ip docs]: /integrations/local_ip/ +[lookin docs]: /integrations/lookin/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[lyft docs]: /integrations/lyft/ +[media_player docs]: /integrations/media_player/ +[media_source docs]: /integrations/media_source/ +[meteo_france docs]: /integrations/meteo_france/ +[metoffice docs]: /integrations/metoffice/ +[microsoft docs]: /integrations/microsoft/ +[mill docs]: /integrations/mill/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[motion_blinds docs]: /integrations/motion_blinds/ +[motioneye docs]: /integrations/motioneye/ +[mqtt docs]: /integrations/mqtt/ +[myq docs]: /integrations/myq/ +[mysensors docs]: /integrations/mysensors/ +[mystrom docs]: /integrations/mystrom/ +[nad docs]: /integrations/nad/ +[nam docs]: /integrations/nam/ +[nanoleaf docs]: /integrations/nanoleaf/ +[neato docs]: /integrations/neato/ +[nello docs]: /integrations/nello/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[nexia docs]: /integrations/nexia/ +[nfandroidtv docs]: /integrations/nfandroidtv/ +[notify docs]: /integrations/notify/ +[notion docs]: /integrations/notion/ +[nuheat docs]: /integrations/nuheat/ +[nuki docs]: /integrations/nuki/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[octoprint docs]: /integrations/octoprint/ +[ondilo_ico docs]: /integrations/ondilo_ico/ +[onewire docs]: /integrations/onewire/ +[opencv docs]: /integrations/opencv/ +[opengarage docs]: /integrations/opengarage/ +[openuv docs]: /integrations/openuv/ +[openweathermap docs]: /integrations/openweathermap/ +[orangepi_gpio docs]: /integrations/orangepi_gpio/ +[otp docs]: /integrations/otp/ +[ozw docs]: /integrations/ozw/ +[p1_monitor docs]: /integrations/p1_monitor/ +[persistent_notification docs]: /integrations/persistent_notification/ +[pi_hole docs]: /integrations/pi_hole/ +[picnic docs]: /integrations/picnic/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[point docs]: /integrations/point/ +[powerwall docs]: /integrations/powerwall/ +[quantum_gateway docs]: /integrations/quantum_gateway/ +[rachio docs]: /integrations/rachio/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[rainmachine docs]: /integrations/rainmachine/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[renault docs]: /integrations/renault/ +[repetier docs]: /integrations/repetier/ +[rest docs]: /integrations/rest/ +[rfxtrx docs]: /integrations/rfxtrx/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[roon docs]: /integrations/roon/ +[rpi_power docs]: /integrations/rpi_power/ +[ruckus_unleashed docs]: /integrations/ruckus_unleashed/ +[scrape docs]: /integrations/scrape/ +[screenlogic docs]: /integrations/screenlogic/ +[script docs]: /integrations/script/ +[sense docs]: /integrations/sense/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[seventeentrack docs]: /integrations/seventeentrack/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[sia docs]: /integrations/sia/ +[simplisafe docs]: /integrations/simplisafe/ +[sma docs]: /integrations/sma/ +[smappee docs]: /integrations/smappee/ +[smartthings docs]: /integrations/smartthings/ +[smarttub docs]: /integrations/smarttub/ +[sms docs]: /integrations/sms/ +[solaredge docs]: /integrations/solaredge/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[somfy docs]: /integrations/somfy/ +[sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spider docs]: /integrations/spider/ +[spotify docs]: /integrations/spotify/ +[srp_energy docs]: /integrations/srp_energy/ +[ssdp docs]: /integrations/ssdp/ +[statistics docs]: /integrations/statistics/ +[stookalert docs]: /integrations/stookalert/ +[stream docs]: /integrations/stream/ +[suez_water docs]: /integrations/suez_water/ +[surepetcare docs]: /integrations/surepetcare/ +[switchbot docs]: /integrations/switchbot/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tasmota docs]: /integrations/tasmota/ +[tautulli docs]: /integrations/tautulli/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[tibber docs]: /integrations/tibber/ +[tile docs]: /integrations/tile/ +[toon docs]: /integrations/toon/ +[totalconnect docs]: /integrations/totalconnect/ +[tplink docs]: /integrations/tplink/ +[trace docs]: /integrations/trace/ +[tractive docs]: /integrations/tractive/ +[tradfri docs]: /integrations/tradfri/ +[tuya docs]: /integrations/tuya/ +[unifi docs]: /integrations/unifi/ +[universal docs]: /integrations/universal/ +[upb docs]: /integrations/upb/ +[upnp docs]: /integrations/upnp/ +[uptimerobot docs]: /integrations/uptimerobot/ +[utility_meter docs]: /integrations/utility_meter/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[venstar docs]: /integrations/venstar/ +[verisure docs]: /integrations/verisure/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[vlc_telnet docs]: /integrations/vlc_telnet/ +[wallbox docs]: /integrations/wallbox/ +[waqi docs]: /integrations/waqi/ +[watson_tts docs]: /integrations/watson_tts/ +[watttime docs]: /integrations/watttime/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[weather docs]: /integrations/weather/ +[websocket_api docs]: /integrations/websocket_api/ +[whirlpool docs]: /integrations/whirlpool/ +[wilight docs]: /integrations/wilight/ +[wink docs]: /integrations/wink/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[xbox docs]: /integrations/xbox/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yeelight docs]: /integrations/yeelight/ +[youless docs]: /integrations/youless/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zwave docs]: /integrations/zwave/ +[zwave_js docs]: /integrations/zwave_js/ diff --git a/source/_redirects b/source/_redirects index c30fc404e6b..afa3818d84d 100644 --- a/source/_redirects +++ b/source/_redirects @@ -111,7 +111,6 @@ /components/alarm_control_panel.spc /integrations/spc /components/alarm_control_panel.totalconnect /integrations/totalconnect /components/alarm_control_panel.verisure /integrations/verisure#alarm-control-panel -/components/alarm_control_panel.wink /integrations/wink#alarm-control-panel /components/alarm_control_panel.yale_smart_alarm /integrations/yale_smart_alarm /components/apiai /integrations/dialogflow /components/binary_sensor.abode /integrations/abode#binary-sensor @@ -207,7 +206,6 @@ /components/binary_sensor.vultr /integrations/vultr#binary-sensor /components/binary_sensor.w800rf32 /integrations/w800rf32#binary-sensor /components/binary_sensor.wemo /integrations/wemo -/components/binary_sensor.wink /integrations/wink#binary-sensor /components/binary_sensor.wirelesstag /integrations/wirelesstag#binary-sensor /components/binary_sensor.workday /integrations/workday /components/binary_sensor.zha /integrations/zha @@ -290,7 +288,6 @@ /components/climate.velbus /integrations/velbus /components/climate.venstar /integrations/venstar /components/climate.vera /integrations/vera -/components/climate.wink /integrations/wink#climate /components/climate.xs1 /integrations/xs1 /components/climate.zhong_hong /integrations/zhong_hong /components/climate.zwave /integrations/zwave#climate @@ -322,7 +319,6 @@ /components/cover.tuya /integrations/tuya /components/cover.velux /integrations/velux /components/cover.vera /integrations/vera -/components/cover.wink /integrations/wink#cover /components/cover.zwave /integrations/zwave#cover /components/cppm /integrations/cppm_tracker /components/device_tracker.actiontec /integrations/actiontec @@ -344,7 +340,6 @@ /components/device_tracker.gpslogger /integrations/gpslogger /components/device_tracker.hitron_coda /integrations/hitron_coda /components/device_tracker.huawei_lte /integrations/huawei_lte -/components/device_tracker.huawei_router /integrations/huawei_router /components/device_tracker.icloud /integrations/icloud /components/device_tracker.keenetic_ndms2 /integrations/keenetic_ndms2 /components/device_tracker.linksys_ap /integrations/linksys_ap @@ -386,7 +381,6 @@ /components/fan.smartthings /integrations/smartthings#fan /components/fan.tuya /integrations/tuya /components/fan.wemo /integrations/wemo#fan -/components/fan.wink /integrations/wink#fan /components/fan.zha /integrations/zha /components/fan.zwave /integrations/zwave /components/generic /integrations/generic @@ -468,7 +462,6 @@ /components/light.tuya /integrations/tuya /components/light.vera /integrations/vera /components/light.wemo /integrations/wemo -/components/light.wink /integrations/wink#light /components/light.x10 /integrations/x10 /components/light.yeelight /integrations/yeelight /components/light.yeelightsunflower /integrations/yeelightsunflower @@ -483,7 +476,6 @@ /components/lock.homematic /integrations/homematic /components/lock.isy994 /integrations/isy994 /components/lock.kiwi /integrations/kiwi -/components/lock.nello /integrations/nello /components/lock.nuki /integrations/nuki /components/lock.sesame /integrations/sesame /components/lock.smartthings /integrations/smartthings#lock @@ -491,7 +483,6 @@ /components/lock.vera /integrations/vera /components/lock.verisure /integrations/verisure /components/lock.volvooncall /integrations/volvooncall -/components/lock.wink /integrations/wink#lock /components/lock.zwave /integrations/zwave#lock /components/mailbox.asterisk_cdr /integrations/asterisk_cdr /components/mailbox.asterisk_mbox /integrations/asterisk_mbox @@ -629,7 +620,6 @@ /components/scene.tuya /integrations/tuya /components/scene.velux /integrations/velux /components/scene.vera /integrations/vera -/components/scene.wink /integrations/wink /components/sensor.abode /integrations/abode /components/sensor.ads /integrations/ads#sensor /components/sensor.aftership /integrations/aftership @@ -768,7 +758,6 @@ /components/sensor.loop_energy /integrations/loopenergy /components/sensor.loopenergy /integrations/loopenergy /components/sensor.luftdaten /integrations/luftdaten#sensor -/components/sensor.lyft /integrations/lyft /components/sensor.magicseaweed /integrations/magicseaweed /components/sensor.meteo_france /integrations/meteo_france /components/sensor.mfi /integrations/mfi#sensor @@ -912,7 +901,6 @@ /components/sensor.waterfurnace /integrations/waterfurnace /components/sensor.waze_travel_time /integrations/waze_travel_time /components/sensor.whois /integrations/whois -/components/sensor.wink /integrations/wink#sensor /components/sensor.wirelesstag /integrations/wirelesstag#sensor /components/sensor.worldclock /integrations/worldclock /components/sensor.worldtidesinfo /integrations/worldtidesinfo @@ -1036,7 +1024,6 @@ /components/switch.vultr /integrations/vultr#switch /components/switch.wake_on_lan /integrations/wake_on_lan#switch /components/switch.wemo /integrations/wemo -/components/switch.wink /integrations/wink#switch /components/switch.wirelesstag /integrations/wirelesstag#switch /components/switch.xs1 /integrations/xs1 /components/switch.zha /integrations/zha @@ -1060,7 +1047,6 @@ /components/vacuum.roomba /integrations/roomba /components/vlc-telnet /integrations/vlc_telnet /components/water_heater.econet /integrations/econet -/components/water_heater.wink /integrations/wink#water-heater /components/weather.buienradar /integrations/buienradar /components/weather.ecobee /integrations/ecobee /components/weather.ipma /integrations/ipma @@ -1429,7 +1415,6 @@ /components/http /integrations/http /components/htu21d /integrations/htu21d /components/huawei_lte /integrations/huawei_lte -/components/huawei_router /integrations/huawei_router /components/hue /integrations/hue /components/hunterdouglas_powerview /integrations/hunterdouglas_powerview /components/hydrawise /integrations/hydrawise @@ -1529,7 +1514,6 @@ /components/lutron /integrations/lutron /components/lutron_caseta /integrations/lutron_caseta /components/lw12wifi /integrations/lw12wifi -/components/lyft /integrations/lyft /components/magicseaweed /integrations/magicseaweed /components/mailbox /integrations/mailbox /components/mailgun /integrations/mailgun @@ -1590,7 +1574,6 @@ /components/nanoleaf /integrations/nanoleaf /components/neato /integrations/neato /components/nederlandse_spoorwegen /integrations/nederlandse_spoorwegen -/components/nello /integrations/nello /components/ness_alarm /integrations/ness_alarm /components/nest /integrations/nest /components/netatmo /integrations/netatmo @@ -1967,7 +1950,6 @@ /components/websocket_api /integrations/websocket_api /components/wemo /integrations/wemo /components/whois /integrations/whois -/components/wink /integrations/wink /components/wirelesstag /integrations/wirelesstag /components/withings /integrations/withings /components/workday /integrations/workday @@ -2239,6 +2221,8 @@ /components/device_tracker.ubee /more-info/removed-integration 301 /components/device_tracker.xfinity /more-info/removed-integration 301 /components/edp_redy /more-info/removed-integration 301 +/components/essent /more-info/removed-integration 301 +/integrations/essent /more-info/removed-integration 301 /components/fedex /more-info/removed-integration 301 /components/fortigate /more-info/removed-integration 301 /components/history_graph /more-info/removed-integration 301 @@ -2343,3 +2327,25 @@ /components/device_tracker.trackr /more-info/removed-integration 301 /components/trackr /more-info/removed-integration 301 /integrations/trackr /more-info/removed-integration 301 +/components/alarm_control_panel.wink /more-info/removed-integration 301 +/components/binary_sensor.wink /more-info/removed-integration 301 +/components/climate.wink /more-info/removed-integration 301 +/components/cover.wink /more-info/removed-integration 301 +/components/fan.wink /more-info/removed-integration 301 +/components/light.wink /more-info/removed-integration 301 +/components/lock.wink /more-info/removed-integration 301 +/components/scene.wink /more-info/removed-integration 301 +/components/sensor.wink /more-info/removed-integration 301 +/components/switch.wink /more-info/removed-integration 301 +/components/water_heater.wink /more-info/removed-integration 301 +/components/wink /more-info/removed-integration 301 +/integrations/wink /more-info/removed-integration 301 +/components/lyft /more-info/removed-integration 301 +/components/sensor.lyft /more-info/removed-integration 301 +/integrations/lyft /more-info/removed-integration 301 +/components/lock.nello /more-info/removed-integration 301 +/components/nello /more-info/removed-integration 301 +/integrations/nello /more-info/removed-integration 301 +/components/device_tracker.huawei_router /more-info/removed-integration 301 +/integrations/huawei_router /more-info/removed-integration 301 + diff --git a/source/images/blog/2021-11/entity-categories.png b/source/images/blog/2021-11/entity-categories.png new file mode 100644 index 00000000000..97ba5f4fc25 Binary files /dev/null and b/source/images/blog/2021-11/entity-categories.png differ diff --git a/source/images/blog/2021-11/icon-picker.gif b/source/images/blog/2021-11/icon-picker.gif new file mode 100644 index 00000000000..f68bc164339 Binary files /dev/null and b/source/images/blog/2021-11/icon-picker.gif differ diff --git a/source/images/blog/2021-11/social.png b/source/images/blog/2021-11/social.png new file mode 100644 index 00000000000..c71a62e6893 Binary files /dev/null and b/source/images/blog/2021-11/social.png differ diff --git a/source/images/blog/2021-11/visit-device.png b/source/images/blog/2021-11/visit-device.png new file mode 100644 index 00000000000..2d1e4adab6c Binary files /dev/null and b/source/images/blog/2021-11/visit-device.png differ