diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index 6cfe3e27ef3..2b7c59ea742 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -75,6 +75,7 @@ "Pushbullet", "Schoutsen", "SmartThings", + "SNOOZ", "statestream", "templating", "timedelta", diff --git a/_config.yml b/_config.yml index 8e5f9d63c88..961dab25517 100644 --- a/_config.yml +++ b/_config.yml @@ -106,9 +106,9 @@ social: # Home Assistant release details current_major_version: 2022 -current_minor_version: 10 -current_patch_version: 5 -date_released: 2022-10-20 +current_minor_version: 11 +current_patch_version: 0 +date_released: 2022-11-02 # 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/_dashboards/energy.markdown b/source/_dashboards/energy.markdown index c91d1ab98ee..d4af8744d3a 100644 --- a/source/_dashboards/energy.markdown +++ b/source/_dashboards/energy.markdown @@ -67,6 +67,21 @@ The gas consumption graph card shows the amount of gas consumed per source. type: energy-gas-graph ``` +## Water consumption graph + +

+ Screenshot of the water consumption graph card + Screenshot of the water consumption graph card. +

+ +The water consumption graph card shows the amount of water consumed per source. + +#### Example + +```yaml +type: energy-water-graph +``` + ## Energy distribution

diff --git a/source/_dashboards/statistic.markdown b/source/_dashboards/statistic.markdown new file mode 100644 index 00000000000..071486262b5 --- /dev/null +++ b/source/_dashboards/statistic.markdown @@ -0,0 +1,172 @@ +--- +type: card +title: "Statistic Card" +sidebar_label: Statistic +description: "The Statistic card allows you to display a statistical value for an entity." +--- + +The Statistic card allows you to display a statistical value for an entity. + +Statistics are gathered every 5 minutes for sensors that support it. It will either keep the `min`, `max` and `mean` of a sensors value for a specific period, or the `sum` for a metered entity. + +If your sensor doesn't work with statistics, check [this](/more-info/statistics/). + +

+Screenshot of the statistic card for a temperature sensor +Screenshot of the statistic card for a temperature sensor. +

+ +To add the Statistic card to your user interface, click the menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Statistic** from the card picker. All options for this card can be configured via the user interface, but if you want more options for the period, you will have to define them in `yaml`. + +{% configuration %} +type: + required: true + description: statistic + type: string +entity: + required: true + description: "A entity ID of a sensor with statistics, or an external statistic id" + type: string +stat_type: + required: true + description: The statistics types to render. `min`, `max`, `mean`, `change` + type: string +name: + required: false + description: Name of entity. + type: string + default: Entity name. +icon: + required: false + description: Overwrites icon. + type: string +unit: + required: false + description: Unit of measurement given to data. + type: string + default: Unit of measurement given by entity. +period: + required: true + description: The period to use for the calculation. [See below](#options-for-period). + type: map +theme: + required: false + description: Override the used theme for this card with any loaded theme. For more information about themes, see the [frontend documentation](/integrations/frontend/). + type: string +footer: + required: false + description: Footer widget to render. See [footer documentation](/dashboards/header-footer/). + type: map +{% endconfiguration %} + +## Example + +Alternatively, the card can be configured using YAML: + +```yaml +type: statistic +entity: sensor.energy_consumption +period: + calendar: + period: month +stat_type: change +``` + +## Options For Period + +Periods can be configured in 3 different ways: + +### Calendar + +Use a fixed period with an offset from the current period. + +{% configuration %} +period: + required: true + description: The period to use. `day`, `week`, `month`, `year` + type: string +offset: + required: false + description: The offset of the current period, so 0 means the current period, -1 is the previous period. + type: integer +{% endconfiguration %} + +Example, the change of the energy consumption during last month: + +```yaml +type: statistic +entity: sensor.energy_consumption +period: + calendar: + period: month + offset: -1 +stat_type: change +``` + +### Fixed period + +Specify a fixed period, the start and end are optional. + +{% configuration %} +start: + required: false + description: The start of the period + type: string +end: + required: false + description: The end of the period + type: string +{% endconfiguration %} + +Example, the change in 2022: + +```yaml +type: statistic +entity: sensor.energy_consumption +period: + fixed_period: + start: 2022-01-01 + end: 2022-12-31 +stat_type: change +``` + +Example, all time change, without a start or end: + +```yaml +type: statistic +entity: sensor.energy_consumption +period: + fixed_period: +stat_type: change +``` + +### Rolling Window + +{% configuration %} +duration: + required: true + description: The duration of the period + type: map +offset: + required: false + description: The offset of the current time, 0 means the current period, -1 is the previous period. + type: map +{% endconfiguration %} + +Example, a period of 1 hour, 10 minutes and 5 seconds ending 2 hours, 20 minutes and 10 seconds before now: + +```yaml +type: statistic +entity: sensor.energy_consumption +period: + rolling_window: + duration: + hours: 1 + minutes: 10 + seconds: 5 + offset: + hours: -2 + minutes: -20 + seconds: -10 +stat_type: change +``` \ No newline at end of file diff --git a/source/_dashboards/statistics-graph.markdown b/source/_dashboards/statistics-graph.markdown index c39cdfb4d59..79239b9d2c5 100644 --- a/source/_dashboards/statistics-graph.markdown +++ b/source/_dashboards/statistics-graph.markdown @@ -7,7 +7,7 @@ description: "The Statistics Graph card allows you to display a graph with stati The Statistics Graph card allows you to display a graph of statistics data for each of the entities listed. -Statistics are gathered every hour for sensors that support it. It will either keep the `min`, `max` and `mean` of a sensors value for a specific hour, or the `sum` for a metered entity. +Statistics are gathered every 5 minutes for sensors that support it. It will either keep the `min`, `max` and `mean` of a sensors value for a specific hour, or the `sum` for a metered entity. If your sensor doesn't work with statistics, check [this](/more-info/statistics/). @@ -30,7 +30,7 @@ type: type: string entities: required: true - description: "A list of entity IDs or `entity` objects, see below." + description: "A list of entity IDs or `entity` objects (see below), or an external statistic id" type: list days_to_show: required: false diff --git a/source/_dashboards/tile.markdown b/source/_dashboards/tile.markdown new file mode 100644 index 00000000000..b9ca80a6afb --- /dev/null +++ b/source/_dashboards/tile.markdown @@ -0,0 +1,73 @@ +--- +type: card +title: "Tile Card" +sidebar_label: Tile +description: "The tile card gives you a quick overview of your entity. The card allows you to toggle the entity, show the more info dialog, or custom actions." +--- + +The tile card gives you a quick overview of your entity. The card allows you to toggle the entity and show the more info dialog. A badge is shown for some entities like the [climate](/integrations/climate) or [person](/integrations/person) entities. + +

+ Screenshot of the tile card + Screenshot of the Tile card. +

+ +To add the Tile card to your user interface, click the menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Tile** from the card picker. + +{% configuration %} +type: + required: true + description: "`tile`" + type: string +entity: + required: true + description: Entity ID. + type: string +name: + required: false + description: Overwrites the name of entity. + type: string +icon: + required: false + description: Overwrites the icon of entity. + type: string +color: + required: false + description: Set the color when the entity is active. By default, the color is based on `state`, `domain`, and `device_class` of your entity. It accept [color token](/dashboards/tile/#available-color-tokens) or hex color code. + type: string + default: state +show_entity_picture: + required: false + description: If your entity has a picture, it will replace the icon. + type: boolean + default: false +tap_action: + required: false + description: Action taken on card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will show the "more-info" dialog. + type: map +icon_tap_action: + required: false + description: Action taken on icon card tap. See [action documentation](/dashboards/actions/#tap-action). By default, it will `toggle` the entity (if possible), otherwise, show the more-info" dialog. + type: map +{% endconfiguration %} + + +## Example + +Alternatively, the card can be configured using YAML: + +```yaml +- type: tile + entity: cover.kitchen_window +- type: tile + entity: light.bedroom + icon: mdi:lamp + color: yellow +- type: tile + entity: person.anne_therese + show_entity_picture: true +``` + +## Available color tokens + +Some color tokens are available to colorize the tile card : `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black` and `white`. diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 495d4a0f275..0b2fef45192 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -3,7 +3,7 @@ title: "Setup basic information" description: "Setting up the basic info of Home Assistant." --- -As part of the default onboarding process, Home Assistant can detect your location from IP address geolocation. Home Assistant will automatically select a temperature unit and time zone based on this location. You may adjust this during onboarding, or afterwards at {% my general title="Settings > System > General" %}. +As part of the default onboarding process, Home Assistant can detect your location from IP address geolocation. Home Assistant will automatically select a unit system and time zone based on this location. You may adjust this during onboarding, or afterwards at {% my general title="Settings > System > General" %}. If you prefer YAML, you can add the following information to your `configuration.yaml`: @@ -53,7 +53,7 @@ elevation: required: false type: integer unit_system: - description: "`metric` for Metric, `imperial` for Imperial. This also sets temperature_unit, Celsius for Metric and Fahrenheit for Imperial" + description: "`metric` for Metric, `us_customary` for US Customary. This also sets temperature_unit, Celsius for Metric and Fahrenheit for US Customary" required: false type: string temperature_unit: diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index b87f6e1d6eb..e3bf2de1db3 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -20,8 +20,8 @@ homeassistant: # Location required to calculate the time the sun rises and sets latitude: 37 longitude: -121 - # 'metric' for Metric, 'imperial' for Imperial - unit_system: imperial + # 'metric' for Metric, 'us_customary' for US Customary + unit_system: us_customary # Pick yours from here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: "America/Los_Angeles" customize: !include customize.yaml diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index b42e9a884cc..662a24e3112 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -110,6 +110,16 @@ Print out a list of all the sensor states: {% endraw %} +Entities that are on: + +{% raw %} + +```text +{{ ['light.kitchen', 'light.dinig_room'] | select('is_state', 'on') | list }} +``` + +{% endraw% } + Other state examples: {% raw %} @@ -142,6 +152,9 @@ Other state examples: {{ as_local(states.sensor.time.last_changed) }} {{ states('sensor.expires') | as_datetime }} + +# Make a list of states +{{ ['light.kitchen', 'light.dinig_room'] | map('states') | list }} ``` {% endraw %} @@ -182,6 +195,26 @@ With strings: {% endraw %} +List of friendly names: + +{% raw %} + +```text +{{ ['binary_sensor.garage_door', 'binary_sensor.front_door'] | map('state_attr', 'friendly_name') | list }} +``` + +{% endraw% } + +List of lights that are on with a brightness of 255: + +{% raw %} + +```text +{{ ['light.kitchen', 'light.dinig_room'] | select('is_state', 'on') | select('is_state_attr', 'brightness', 255) | list }} +``` + +{% endraw% } + ### Working with Groups Not supported in [limited templates](#limited-templates). @@ -260,6 +293,20 @@ The same thing can also be expressed as a test: {% endraw %} +### Config Entries + +- `config_entry_id(entity_id)` returns the config entry ID for a given entity ID. Can also be used as a filter. + +#### Config entries examples + +{% raw %} + +```text +{{ config_entry_id('sensor.sony') }} # deadbeefdeadbeefdeadbeefdeadbeef +``` + +{% endraw %} + ### Areas - `area_id(lookup_value)` returns the area ID for a given device ID, entity ID, or area name. Can also be used as a filter. @@ -699,7 +746,7 @@ Like `float` and `int`, `bool` has a filter form. Using `none` as the default va - `sqrt(value, default)` will return the square root of the input. If `value` can't be converted to a `float`, returns the `default` value, or if omitted raises an error. Can be used as a filter. - `max([x, y, ...])` will obtain the largest item in a sequence. Uses the same parameters as the built-in [max](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.max) filter. - `min([x, y, ...])` will obtain the smallest item in a sequence. Uses the same parameters as the built-in [min](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.min) filter. -- `average([x, y, ...])` will return the average value of the sequence. Can be used as a filter. +- `average([x, y, ...], default)` will return the average value of the sequence. If list is empty or contains non-numeric value, returns the `default` value, or if omitted raises an error. Can be used as a filter. - `e` mathematical constant, approximately 2.71828. - `pi` mathematical constant, approximately 3.14159. - `tau` mathematical constant, approximately 6.28318. diff --git a/source/_docs/energy.markdown b/source/_docs/energy.markdown index 31f1b58e8be..a9dcbc69284 100644 --- a/source/_docs/energy.markdown +++ b/source/_docs/energy.markdown @@ -15,6 +15,7 @@ Home Assistant is an open platform and so home energy management is not restrict - [Integrate your solar panels](/docs/energy/solar-panels/) - [Integrate your home batteries](/docs/energy/battery/) - [Integrate your gas consumption](/docs/energy/gas/) +- [Integrate your water consumption](/docs/energy/water/) - [Integrate individual devices](/docs/energy/individual-devices/) If you have a sensor that returns instantaneous power readings (W or kW), then to add a sensor that returns energy usage or generation (kWh) refer to [Riemann sum integral integration](/integrations/integration/#energy) diff --git a/source/_docs/energy/water.markdown b/source/_docs/energy/water.markdown new file mode 100644 index 00000000000..68b3fb09ce3 --- /dev/null +++ b/source/_docs/energy/water.markdown @@ -0,0 +1,29 @@ +--- +title: "Integrating your water usage" +description: "Learn how to add information about your water usage to Home Assistant home energy management." +--- + +Home Assistant allows you to track your water usage in the home energy management too. + +Although water is not strictly "energy", it is still a valuable resource to track and monitor as it is often tightly coupled with energy usage (like gas). Additionally, it can help you reduce your ecological footprint by using less water. + +## Hardware + +Home Assistant will need to know the amount of water that is being consumed in order to be able to track it. Several hardware options are available to do this. + +We have the following integrations available for existing products that can provide information about water usage: + +- [Flo](/integrations/flo) +- [Flume](/integrations/flume) +- [HomeWizard Energy](/integrations/homewizard) + +Alternatively, the following shops sell ESPHome-based devices, that use a proximity sensor to detect a rotating magnet in your water meter and use that pulse to count each liter of water used. + +- [S0tool](https://huizebruin.github.io/s0tool/) ("Made for ESPHome" approved) +- [Waterlezer dongle](https://smart-stuff.nl/product/esphome-waterlezer-dongle/) (Dutch) +- [Slimme Watermeter Gateway](https://smartgateways.nl/product/slimme-watermeter-gateway/) (Dutch) +- [watermeterkit.nl](https://watermeterkit.nl/) (Dutch) + +Maybe you like to build one yourself? Pieter Brinkman has quite a [nice blog article on how to create your own water sensor](https://www.pieterbrinkman.com/2022/02/02/build-a-cheap-water-usage-sensor-using-esphome-home-assistant-and-a-proximity-sensor/) using ESPHome, or [build a water meter](https://www.ztatz.nl/p1-monitor-watermeter/) that works with the [P1 Monitor](/integrations/p1_monitor) integration. + +For any of the above-listed options, make sure it actually works with the type of water meter you have before getting one. diff --git a/source/_docs/mqtt/birth_will.markdown b/source/_docs/mqtt/birth_will.markdown deleted file mode 100644 index 89fd94709dd..00000000000 --- a/source/_docs/mqtt/birth_will.markdown +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "MQTT Birth and Last will" -description: "Instructions on how to setup MQTT birth and last will messages within Home Assistant." -logo: mqtt.png ---- - -Home Assistant's MQTT integration supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about a disconnected client. Please note that the LWT message will be sent both in case of a clean (e.g. Home Assistant shutting down) and in case of an unclean (e.g. Home Assistant crashing or losing its network connection) disconnect. - -By default, Home Assistant sends `online` and `offline` to `homeassistant/status`. - -MQTT Birth and Last Will messages can be customized or disabled from the UI. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next". diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown deleted file mode 100644 index 23833fe1cbb..00000000000 --- a/source/_docs/mqtt/broker.markdown +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: "MQTT Broker" -description: "Instructions on how to setup a MQTT broker for Home Assistant." -logo: mqtt.png ---- - -The MQTT integration needs you to run an MQTT broker for Home Assistant to connect to. - -### Run your own - -The most private option is running your own MQTT broker. - -The recommended setup method is to use the [Mosquitto MQTT broker add-on](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/DOCS.md). - - - -
- -Neither ActiveMQ MQTT broker nor the RabbitMQ MQTT Plugin are supported, use a known working broker like Mosquitto instead. -There are [at least two](https://issues.apache.org/jira/browse/AMQ-6360) [issues](https://issues.apache.org/jira/browse/AMQ-6575) with the ActiveMQ MQTT broker which break MQTT message retention. -There is [an issue](https://github.com/rabbitmq/rabbitmq-server/issues/154) with the RabbitMQ MQTT Plugin which breaks MQTT message retention. - -
- -## Connect to a public broker - -The Mosquitto project runs a [public broker](https://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. To use the public mosquitto broker, configure the MQTT integration to connect to broker `test.mosquitto.org` on port 1183 or 8883. - -
- -If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add `certificate: auto` to your broker configuration and restart Home Assistant. - -
- -## Broker configuration - -MQTT broker settings are configured when the MQTT integration is first setup, and can be changed if needed. To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT". - -## Advanced broker configuration - -Some broker configuration options can't be set via the user interface, but require changes of your `configuration.yaml` file. -Additional SSL certificate options are documented [here](/docs/mqtt/certificate/). - -{% configuration %} -client_id: - required: false - description: The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one. - type: string -keepalive: - required: false - description: The time in seconds between sending keep alive messages for this client. Default is 60. - type: integer -protocol: - required: false - description: "Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1." - type: string -certificate: - required: false - description: Path to the certificate file, e.g., `/ssl/server.crt`. - type: string -tls_insecure: - required: false - description: Set the verification of the server hostname in the server certificate. - type: boolean - default: false -{% endconfiguration %} - -
- -If you are running a Mosquitto instance on a different server with proper SSL encryption using a service like Let's Encrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of Ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt` - -
- diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown deleted file mode 100644 index a1dc43c41a6..00000000000 --- a/source/_docs/mqtt/certificate.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "MQTT Certificate" -description: "Instructions on how to setup MQTT with a certificate in Home Assistant." -logo: mqtt.png ---- - -Using certificates will give you an additional layer of security for your MQTT communication. - -To integrate MQTT with certificate into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt: - certificate: /home/paulus/dev/addtrustexternalcaroot.crt -``` - -{% configuration %} -certificate: - description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. To enable a secure (TLS) connection to your server you must define the 'certificate' configuration parameter. 'auto' uses the certifite CAs bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`." - required: false - type: string -client_key: - description: Client key, e.g., `/home/user/owntracks/cookie.key`. - required: false - type: string -client_cert: - description: Client certificate, e.g., `/home/user/owntracks/cookie.crt`. - required: false - type: string -{% endconfiguration %} diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown deleted file mode 100644 index 01bef85409e..00000000000 --- a/source/_docs/mqtt/discovery.markdown +++ /dev/null @@ -1,449 +0,0 @@ ---- -title: "MQTT Discovery" -description: "Instructions on how to setup MQTT Discovery within Home Assistant." -logo: mqtt.png ---- - -The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/integrations/http/#binary-sensor) and the [HTTP sensor](/integrations/http/#sensor). To prevent multiple identical entries if a device reconnects, a unique identifier is necessary. Two parts are required on the device side: The configuration topic which contains the necessary device type and unique identifier, and the remaining device configuration without the device type. - -Supported by MQTT discovery: - -- [Alarm control panels](/integrations/alarm_control_panel.mqtt/) -- [Binary sensors](/integrations/binary_sensor.mqtt/) -- [Buttons](/integrations/button.mqtt/) -- [Cameras](/integrations/camera.mqtt/) -- [Covers](/integrations/cover.mqtt/) -- [Device Trackers](/integrations/device_tracker.mqtt/) -- [Device Triggers](/integrations/device_trigger.mqtt/) -- [Fans](/integrations/fan.mqtt/) -- [Humidifiers](/integrations/humidifier.mqtt/) -- [HVACs](/integrations/climate.mqtt/) -- [Lights](/integrations/light.mqtt/) -- [Locks](/integrations/lock.mqtt/) -- [Numbers](/integrations/number.mqtt/) -- [Scenes](/integrations/scene.mqtt/) -- [Selects](/integrations/select.mqtt/) -- [Sensors](/integrations/sensor.mqtt/) -- [Sirens](/integrations/siren.mqtt/) -- [Switches](/integrations/switch.mqtt/) -- [Tag Scanners](/integrations/tag.mqtt/) -- [Vacuums](/integrations/vacuum.mqtt/) - -## Configuration - -MQTT discovery is enabled by default, but can be disabled. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next". - -### Advanced discovery configuration - -It's possible to configure the prefix of the discovery topic through `configuration.yaml`. - -{% configuration %} -discovery_prefix: - description: The prefix for the discovery topic. - required: false - default: homeassistant - type: string -{% endconfiguration %} - -## Discovery messages - -## Discovery topic - -The discovery topic needs to follow a specific format: - -```text -//[/]/config -``` - -- ``: One of the supported MQTT components, eg. `binary_sensor`. -- `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). -- ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). - -The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. - -Best practice for entities with a `unique_id` is to set `` to `unique_id` and omit the ``. - -## Discovery payload - -The payload must be a serialized JSON dictionary and will be checked like an entry in your `configuration.yaml` file if a new device is added, with the exception that unknown configuration keys are allowed but ignored. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the payload. The reason for allowing unknown documentation keys is allow some backwards compatibility, software generating MQTT discovery messages can then be used with older Home Assistant versions which will simply ignore new features. - -Subsequent messages on a topic where a valid payload has been received will be handled as a configuration update, and a configuration update with an empty payload will cause a previously discovered device to be deleted. - -A base topic `~` may be defined in the payload to conserve memory when the same topic base is used multiple times. -In the value of configuration variables ending with `_topic`, `~` will be replaced with the base topic, if the `~` occurs at the beginning or end of the value. - -Configuration variable names in the discovery payload may be abbreviated to conserve memory when sending a discovery message from memory constrained devices. - -Supported abbreviations: - -```txt - 'act_t': 'action_topic', - 'act_tpl': 'action_template', - 'atype': 'automation_type', - 'aux_cmd_t': 'aux_command_topic', - 'aux_stat_tpl': 'aux_state_template', - 'aux_stat_t': 'aux_state_topic', - 'av_tones': 'available_tones', - 'avty' 'availability', - 'avty_mode': 'availability_mode', - 'avty_t': 'availability_topic', - 'avty_tpl': 'availability_template', - 'away_mode_cmd_t': 'away_mode_command_topic', - 'away_mode_stat_tpl': 'away_mode_state_template', - 'away_mode_stat_t': 'away_mode_state_topic', - 'b_tpl': 'blue_template', - 'bri_cmd_t': 'brightness_command_topic', - 'bri_cmd_tpl': 'brightness_command_template', - 'bri_scl': 'brightness_scale', - 'bri_stat_t': 'brightness_state_topic', - 'bri_tpl': 'brightness_template', - 'bri_val_tpl': 'brightness_value_template', - 'clr_temp_cmd_tpl': 'color_temp_command_template', - 'bat_lev_t': 'battery_level_topic', - 'bat_lev_tpl': 'battery_level_template', - 'chrg_t': 'charging_topic', - 'chrg_tpl': 'charging_template', - 'clr_temp_cmd_t': 'color_temp_command_topic', - 'clr_temp_stat_t': 'color_temp_state_topic', - 'clr_temp_tpl': 'color_temp_template', - 'clr_temp_val_tpl': 'color_temp_value_template', - 'cln_t': 'cleaning_topic', - 'cln_tpl': 'cleaning_template', - 'cmd_off_tpl': 'command_off_template', - 'cmd_on_tpl': 'command_on_template', - 'cmd_t': 'command_topic', - 'cmd_tpl': 'command_template', - 'cod_arm_req': 'code_arm_required', - 'cod_dis_req': 'code_disarm_required', - 'cod_trig_req': 'code_trigger_required', - 'curr_temp_t': 'current_temperature_topic', - 'curr_temp_tpl': 'current_temperature_template', - 'dev': 'device', - 'dev_cla': 'device_class', - 'dock_t': 'docked_topic', - 'dock_tpl': 'docked_template', - 'e': 'encoding', - 'ent_cat': 'entity_category, - 'err_t': 'error_topic', - 'err_tpl': 'error_template', - 'fanspd_t': 'fan_speed_topic', - 'fanspd_tpl': 'fan_speed_template', - 'fanspd_lst': 'fan_speed_list', - 'flsh_tlng': 'flash_time_long', - 'flsh_tsht': 'flash_time_short', - 'fx_cmd_t': 'effect_command_topic', - 'fx_cmd_tpl': 'effect_command_template', - 'fx_list': 'effect_list', - 'fx_stat_t': 'effect_state_topic', - 'fx_tpl': 'effect_template', - 'fx_val_tpl': 'effect_value_template', - 'exp_aft': 'expire_after', - 'fan_mode_cmd_tpl': 'fan_mode_command_template', - 'fan_mode_cmd_t': 'fan_mode_command_topic', - 'fan_mode_stat_tpl': 'fan_mode_state_template', - 'fan_mode_stat_t': 'fan_mode_state_topic', - 'frc_upd': 'force_update', - 'g_tpl': 'green_template', - 'hold_cmd_tpl': 'hold_command_template', - 'hold_cmd_t': 'hold_command_topic', - 'hold_stat_tpl': 'hold_state_template', - 'hold_stat_t': 'hold_state_topic', - 'hs_cmd_t': 'hs_command_topic', - 'hs_stat_t': 'hs_state_topic', - 'hs_val_tpl': 'hs_value_template', - 'ic': 'icon', - 'init': 'initial', - 'hum_cmd_t': 'target_humidity_command_topic', - 'hum_cmd_tpl': 'target_humidity_command_template', - 'hum_stat_t': 'target_humidity_state_topic', - 'hum_stat_tpl': 'target_humidity_state_template', - 'json_attr': 'json_attributes', - 'json_attr_t': 'json_attributes_topic', - 'json_attr_tpl': 'json_attributes_template', - 'max_mirs': 'max_mireds', - 'min_mirs': 'min_mireds', - 'max_temp': 'max_temp', - 'min_temp': 'min_temp', - 'max_hum': 'max_humidity', - 'min_hum': 'min_humidity', - 'mode_cmd_tpl': 'mode_command_template', - 'mode_cmd_t': 'mode_command_topic', - 'mode_stat_tpl': 'mode_state_template', - 'mode_stat_t': 'mode_state_topic', - 'modes': 'modes', - 'name': 'name', - 'obj_id': 'object_id', - 'off_dly': 'off_delay', - 'on_cmd_type': 'on_command_type', - 'opt': 'optimistic', - 'osc_cmd_t': 'oscillation_command_topic', - 'osc_cmd_tpl': 'oscillation_command_template', - 'osc_stat_t': 'oscillation_state_topic', - 'osc_val_tpl': 'oscillation_value_template', - 'pct_cmd_t': 'percentage_command_topic', - 'pct_cmd_tpl': 'percentage_command_template', - 'pct_stat_t': 'percentage_state_topic', - 'pct_val_tpl': 'percentage_value_template', - 'pl': 'payload', - 'pl_arm_away': 'payload_arm_away', - 'pl_arm_home': 'payload_arm_home', - 'pl_arm_custom_b': 'payload_arm_custom_bypass', - 'pl_arm_nite': 'payload_arm_night', - 'pl_avail': 'payload_available', - 'pl_cln_sp': 'payload_clean_spot', - 'pl_cls': 'payload_close', - 'pl_disarm': 'payload_disarm', - 'pl_home': 'payload_home', - 'pl_lock': 'payload_lock', - 'pl_loc': 'payload_locate', - 'pl_not_avail': 'payload_not_available', - 'pl_not_home': 'payload_not_home', - 'pl_off': 'payload_off', - 'pl_on': 'payload_on', - 'pl_open': 'payload_open', - 'pl_osc_off': 'payload_oscillation_off', - 'pl_osc_on': 'payload_oscillation_on', - 'pl_paus': 'payload_pause', - 'pl_stop': 'payload_stop', - 'pl_strt': 'payload_start', - 'pl_stpa': 'payload_start_pause', - 'pl_ret': 'payload_return_to_base', - 'pl_rst_hum': 'payload_reset_humidity', - 'pl_rst_mode': 'payload_reset_mode', - 'pl_rst_pct': 'payload_reset_percentage', - 'pl_rst_pr_mode': 'payload_reset_preset_mode', - 'pl_toff': 'payload_turn_off', - 'pl_ton': 'payload_turn_on', - 'pl_trig': 'payload_trigger', - 'pl_unlk': 'payload_unlock', - 'pos_clsd': 'position_closed', - 'pos_open': 'position_open', - 'pow_cmd_t': 'power_command_topic', - 'pow_stat_t': 'power_state_topic', - 'pow_stat_tpl': 'power_state_template', - 'pr_mode_cmd_t': 'preset_mode_command_topic', - 'pr_mode_cmd_tpl': 'preset_mode_command_template', - 'pr_mode_stat_t': 'preset_mode_state_topic', - 'pr_mode_val_tpl': 'preset_mode_value_template', - 'pr_modes': 'preset_modes', - 'r_tpl': 'red_template', - 'ret': 'retain', - 'rgb_cmd_tpl': 'rgb_command_template', - 'rgb_cmd_t': 'rgb_command_topic', - 'rgb_stat_t': 'rgb_state_topic', - 'rgb_val_tpl': 'rgb_value_template', - 'send_cmd_t': 'send_command_topic', - 'send_if_off': 'send_if_off', - 'set_fan_spd_t': 'set_fan_speed_topic', - 'set_pos_tpl': 'set_position_template', - 'set_pos_t': 'set_position_topic', - 'pos_t': 'position_topic', - 'pos_tpl': 'position_template', - 'spd_rng_min': 'speed_range_min', - 'spd_rng_max': 'speed_range_max', - 'src_type': 'source_type', - 'stat_cla': 'state_class', - 'stat_clsd': 'state_closed', - 'stat_closing': 'state_closing', - 'stat_off': 'state_off', - 'stat_on': 'state_on', - 'stat_open': 'state_open', - 'stat_opening': 'state_opening', - 'stat_stopped': 'state_stopped', - 'stat_locked': 'state_locked', - 'stat_unlocked': 'state_unlocked', - 'stat_t': 'state_topic', - 'stat_tpl': 'state_template', - 'stat_val_tpl': 'state_value_template', - 'stype': 'subtype', - 'sup_duration': 'support_duration', - 'sup_vol': 'support_volume_set', - 'sup_feat': 'supported_features', - 'sup_off': 'supported_turn_off', - 'swing_mode_cmd_tpl': 'swing_mode_command_template', - 'swing_mode_cmd_t': 'swing_mode_command_topic', - 'swing_mode_stat_tpl': 'swing_mode_state_template', - 'swing_mode_stat_t': 'swing_mode_state_topic', - 'temp_cmd_tpl': 'temperature_command_template', - 'temp_cmd_t': 'temperature_command_topic', - 'temp_hi_cmd_tpl': 'temperature_high_command_template', - 'temp_hi_cmd_t': 'temperature_high_command_topic', - 'temp_hi_stat_tpl': 'temperature_high_state_template', - 'temp_hi_stat_t': 'temperature_high_state_topic', - 'temp_lo_cmd_tpl': 'temperature_low_command_template', - 'temp_lo_cmd_t': 'temperature_low_command_topic', - 'temp_lo_stat_tpl': 'temperature_low_state_template', - 'temp_lo_stat_t': 'temperature_low_state_topic', - 'temp_stat_tpl': 'temperature_state_template', - 'temp_stat_t': 'temperature_state_topic', - 'temp_unit': 'temperature_unit', - 'tilt_clsd_val': 'tilt_closed_value', - 'tilt_cmd_t': 'tilt_command_topic', - 'tilt_cmd_tpl': 'tilt_command_template', - 'tilt_inv_stat': 'tilt_invert_state', - 'tilt_max': 'tilt_max', - 'tilt_min': 'tilt_min', - 'tilt_opnd_val': 'tilt_opened_value', - 'tilt_opt': 'tilt_optimistic', - 'tilt_status_t': 'tilt_status_topic', - 'tilt_status_tpl': 'tilt_status_template', - 't': 'topic', - 'uniq_id': 'unique_id', - 'unit_of_meas': 'unit_of_measurement', - 'val_tpl': 'value_template', - 'whit_val_cmd_t': 'white_value_command_topic', - 'whit_val_scl': 'white_value_scale', - 'whit_val_stat_t': 'white_value_state_topic', - 'whit_val_tpl': 'white_value_template', - 'xy_cmd_t': 'xy_command_topic', - 'xy_stat_t': 'xy_state_topic', - 'xy_val_tpl': 'xy_value_template', -``` - -Supported abbreviations for device registry configuration: - -```txt - 'cu': 'configuration_url' - 'cns': 'connections', - 'ids': 'identifiers', - 'name': 'name', - 'mf': 'manufacturer', - 'mdl': 'model', - 'hw': 'hw_version', - 'sw': 'sw_version', - 'sa': 'suggested_area', -``` - -## Support by third-party tools - -The following software has built-in support for MQTT discovery: - -- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) -- [ebusd](https://github.com/john30/ebusd) -- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) -- [ESPHome](https://esphome.io) -- [ESPurna](https://github.com/xoseperez/espurna) -- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) -- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) -- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) -- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) -- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) -- [SmartHome](https://github.com/roncoa/SmartHome) -- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) -- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) -- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) -- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) -- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) -- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) -- [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt) -- [Zwave2Mqtt](https://github.com/OpenZWave/Zwave2Mqtt) (starting with 2.0.1) - -## Examples - -### Motion detection (binary sensor) - -A motion detection device which can be represented by a [binary sensor](/integrations/binary_sensor.mqtt/) for your garden would send its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant. - -- Configuration topic: `homeassistant/binary_sensor/garden/config` -- State topic: `homeassistant/binary_sensor/garden/state` -- Payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}` -- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. - -To create a new sensor manually. - -```bash -mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}' -``` - -Update the state. - -```bash -mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON -``` - -Delete the sensor by sending an empty message. - - ```bash -mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '' -``` - -For more details please refer to the [MQTT testing section](/docs/mqtt/testing/). - -### Sensors - -Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. - -- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` -- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` -- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` -- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` -- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` - -### Entities with command topics - -Setting up a light, switch etc. is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/). - -- Configuration topic: `homeassistant/switch/irrigation/config` -- State topic: `homeassistant/switch/irrigation/state` -- Command topic: `homeassistant/switch/irrigation/set` -- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}` -- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. - -```bash -mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \ - -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}' -``` - -Set the state. - -```bash -mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON -``` - -### Using abbreviations and base topic - -Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length. - -- Configuration topic: `homeassistant/switch/irrigation/config` -- Command topic: `homeassistant/switch/irrigation/set` -- State topic: `homeassistant/switch/irrigation/state` -- Configuration payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` - -### Another example using abbreviations topic name and base topic - -Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-schema), with abbreviated configuration variable names: - -- Configuration topic: `homeassistant/light/kitchen/config` -- Command topic: `homeassistant/light/kitchen/set` -- State topic: `homeassistant/light/kitchen/state` -- Example state payload: `{"state": "ON", "brightness": 255}` -- Configuration payload: - - ```json - { - "~": "homeassistant/light/kitchen", - "name": "Kitchen", - "unique_id": "kitchen_light", - "cmd_t": "~/set", - "stat_t": "~/state", - "schema": "json", - "brightness": true - } - ``` - -### Use object_id to influence the entity id - -The entity id is automatically generated from the entity's name. All MQTT entity components optionally support providing an `object_id` which will be used instead if provided. - -- Configuration topic: `homeassistant/sensor/device1/config` -- Example configuration payload: - -```json -{ - "name":"My Super Device", - "object_id":"my_super_device", - "state_topic": "homeassistant/sensor/device1/state" -} -``` - -In the example above, the entity_id will be `sensor.my_super_device` instead of `sensor.device1`. diff --git a/source/_docs/mqtt/logging.markdown b/source/_docs/mqtt/logging.markdown deleted file mode 100644 index ef77050610a..00000000000 --- a/source/_docs/mqtt/logging.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "MQTT Logging" -description: "Instructions on how to setup MQTT Logging within Home Assistant." -logo: mqtt.png ---- - -The [logger](/integrations/logger/) integration allows the logging of received MQTT messages. - -```yaml -# Example configuration.yaml entry -logger: - default: warning - logs: - homeassistant.components.mqtt: debug -``` diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown deleted file mode 100644 index 7d19a98c056..00000000000 --- a/source/_docs/mqtt/service.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "MQTT Publish service" -description: "Instructions on how to setup the MQTT Publish service within Home Assistant." -logo: mqtt.png ---- - -The MQTT integration will register the service `mqtt.publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. - -## Service `mqtt.publish` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `topic` | no | Topic to publish payload to. -| `topic_template` | no | Template to render as topic to publish payload to. -| `payload` | yes | Payload to publish. -| `payload_template` | yes | Template to render as payload value. -| `qos` | yes | Quality of Service to use. (default: 0) -| `retain` | yes | If message should have the retain flag set. (default: false) - -

-You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both. -

- -```yaml -topic: home-assistant/light/1/command -payload: on -``` - -{% raw %} - -```yaml -topic: home-assistant/light/1/state -payload_template: "{{ states('device_tracker.paulus') }}" -``` - -{% endraw %} - -{% raw %} -```yaml -topic_template: "home-assistant/light/{{ states('sensor.light_active') }}/state" -payload_template: "{{ states('device_tracker.paulus') }}" -``` -{% endraw %} - -`payload` must be a string. If you want to send JSON then you need to format/escape it properly. Like: - -```yaml -topic: home-assistant/light/1/state -payload: "{\"Status\":\"off\", \"Data\":\"something\"}" -``` - -Example of how to use `qos` and `retain`: - -```yaml -topic: home-assistant/light/1/command -payload: on -qos: 2 -retain: true -``` - -### Service `mqtt.dump` - -Listen to the specified topic matcher and dumps all received messages within a specific duration into the file `mqtt_dump.txt` in your configuration folder. This is useful when debugging a problem. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `topic` | no | Topic to dump. Can contain a wildcard (`#` or `+`). -| `duration` | yes | Duration in seconds that we will listen for messages. Default is 5 seconds. - -```yaml -topic: openzwave/# -``` diff --git a/source/_docs/mqtt/testing.markdown b/source/_docs/mqtt/testing.markdown deleted file mode 100644 index c1c46054233..00000000000 --- a/source/_docs/mqtt/testing.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "MQTT Testing" -description: "Instructions on how to test your MQTT setup." -logo: mqtt.png ---- - -The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below: - -```bash -mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" -``` - -Another way to send MQTT messages manually is to use the "MQTT" integration in the frontend. Choose "Settings" on the left menu, click "Devices & Services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" . - -```bash - home-assistant/switch/1/power -``` - -and in the Payload field - -```bash - ON -``` - -In the "Listen to a topic" field, type `#` to see everything, or "home-assistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: - -```bash -Message 23 received on home-assistant/switch/1/power/stat/POWER at 12:16 PM: -ON -QoS: 0 - Retain: false -Message 22 received on home-assistant/switch/1/power/stat/RESULT at 12:16 PM: -{ - "POWER": "ON" -} -QoS: 0 - Retain: false -``` - -For reading all messages sent on the topic `home-assistant` to a broker running on localhost: - -```bash -mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" -``` diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index f810a2fb70e..2c20b2a2ad9 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -376,16 +376,14 @@ condition: ### Sunset/sunrise condition -The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. When both keys are used, the result is a logical `and` of separate conditions. +The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. -Note that if only `before` key is used, the condition will be `true` _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be `true` from sunset/sunrise _until midnight_. Therefore, to cover time between sunset and sunrise one need to use `after: sunset` and `before: sunrise` as 2 separate conditions and combine them using `or`. +Note that if only `before` key is used, the condition will be `true` _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be `true` from sunset/sunrise _until midnight_. If both `before: sunrise` and `after: sunset` keys are used, the condition will be `true` _from midnight_ until sunrise **and** from sunset _until midnight_. If both `after: sunrise` and `before: sunset` keys are used, the condition will be `true` from sunrise until sunset. [sun_trigger]: /docs/automation/trigger/#sun-trigger
-The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with a highly skewed local time zone. - -In those cases it is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions. +The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with a highly skewed local time zone. In those cases it is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions.
This is an example of 1 hour offset before sunset: @@ -414,18 +412,6 @@ condition: before: sunset ``` -We cannot use both keys in this case as it will always be `false`. - -```yaml -condition: - condition: or - conditions: - - condition: sun - after: sunset - - condition: sun - before: sunrise -``` - A visual timeline is provided below showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true. ![Graphic showing an example of sun conditions](/images/docs/scripts/sun-conditions.svg) diff --git a/source/_examples/notify.mqtt.markdown b/source/_examples/notify.mqtt.markdown deleted file mode 100644 index 57cf2af9c2c..00000000000 --- a/source/_examples/notify.mqtt.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: "MQTT Notifications" -description: "Instructions on how to add MQTT notifications to Home Assistant." -logo: mqtt.png -ha_category: Notifications -ha_iot_class: Configurable ---- - -The MQTT notification support is different than the other [notification](/integrations/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. - -**Call Service** section from **Developer Tools** -> **Services** allows you to send MQTT messages. Choose *mqtt.publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. - -```json -{"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0} -``` - -

- -

- -The same will work for automations. - -

- -

- - -## Examples - -### REST API - -Using the [REST API](https://developers.home-assistant.io/docs/api/rest/) to send a message to a given topic. - -```bash -$ curl -X POST \ - -H "Authorization: Bearer ABCDEFGH" \ - -H "Content-Type: application/json" \ - -d '{"payload": "Test message from HA", "topic": "home/notification"}' \ - http://IP_ADDRESS:8123/api/services/mqtt/publish -``` - -### Automations - -Use as [`script`](/integrations/script/) in automations. - -{% raw %} -```yaml -automation: - alias: "Send me a message when I get home" - trigger: - platform: state - entity_id: device_tracker.me - to: "home" - action: - service: script.notify_mqtt - data: - target: "me" - message: "I'm home" - -script: - notify_mqtt: - sequence: - - service: mqtt.publish - data: - payload: "{{ message }}" - topic: home/"{{ target }}" - retain: true -``` -{% endraw %} diff --git a/source/_integrations/3_day_blinds.markdown b/source/_integrations/3_day_blinds.markdown index 273fd4f7a86..16d6206973b 100644 --- a/source/_integrations/3_day_blinds.markdown +++ b/source/_integrations/3_day_blinds.markdown @@ -4,18 +4,18 @@ description: Connect and control your 3 Day Blinds devices using the Motion Blin ha_category: - Cover ha_domain: 3_day_blinds +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/accuweather.markdown b/source/_integrations/accuweather.markdown index e3ce0c896a3..e04f810ab04 100644 --- a/source/_integrations/accuweather.markdown +++ b/source/_integrations/accuweather.markdown @@ -14,7 +14,7 @@ ha_platforms: - diagnostics - sensor - weather -ha_integration_type: integration +ha_integration_type: service --- The AccuWeather integration uses the [AccuWeather](https://accuweather.com/) web service as a source for weather data for your location. diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown index e2e7bbb43a9..6006bbab057 100644 --- a/source/_integrations/adguard.markdown +++ b/source/_integrations/adguard.markdown @@ -14,7 +14,7 @@ ha_domain: adguard ha_platforms: - sensor - switch -ha_integration_type: integration +ha_integration_type: service --- AdGuard Home is a network-wide ad- and tracker-blocking DNS server with parental diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index b237471a8a0..ed003690be9 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -13,7 +13,7 @@ ha_quality_scale: platinum ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The Airly integration uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. diff --git a/source/_integrations/airnow.markdown b/source/_integrations/airnow.markdown index bd0a139665e..e29e9cdaa72 100644 --- a/source/_integrations/airnow.markdown +++ b/source/_integrations/airnow.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@asymworks' ha_domain: airnow ha_platforms: + - diagnostics - sensor ha_integration_type: integration --- diff --git a/source/_integrations/airthings_ble.markdown b/source/_integrations/airthings_ble.markdown new file mode 100644 index 00000000000..82d81b38b22 --- /dev/null +++ b/source/_integrations/airthings_ble.markdown @@ -0,0 +1,51 @@ +--- +title: Airthings BLE +description: Instructions on how to set up Airthings Devices over Bluetooth LE. +ha_category: + - Environment + - Sensor +ha_release: '2022.11' +ha_iot_class: Local Polling +ha_codeowners: + - '@vincegio' +ha_domain: airthings_ble +ha_bluetooth: true +ha_platforms: + - sensor +ha_config_flow: true +ha_integration_type: integration +--- + +Integrates Airthings BLE sensors into Home Assistant. + +[Airthings](https://www.airthings.com/) provide different sensors for measuring the air quality. The focus specially on Radon sensors. + +Requires Airthings hardware and a compatible Bluetooth dongle. + +{% include integrations/config_flow.md %} + +The Airthings BLE integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. This will include the device name and its serial number. + +There are two ways of retrieving the 10-digit serial number of a Wave device: +1. At the back of the device, located under the magnetic backplate. +2. Airthings app: **Device settings -> Device info -> Serial Number** + +This integration uses the last 6 digits of the serial number. + +## Supported Devices + +- Wave +- Wave+ +- Wave mini + +## Sensors + +Sensor entities added to Home Assistant, depending on the device model: +- Humidity +- Illuminance +- Pressure (relative depending on home elevation) +- Radon 1-day and longterm average, as well as levels +- Temperature +- VOC +- Co2 +- Battery diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index 11caba2353d..b392719dbf6 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -12,7 +12,7 @@ ha_config_flow: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: device --- The `airvisual` sensor platform queries the [AirVisual](https://www.iqair.com) cloud API for air quality data. Data can be collected via latitude/longitude, by city/state/country, or from an [AirVisual Node/Pro unit](https://www.iqair.com/air-quality-monitors/airvisual-pro). diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index 8dd035eb58d..9077891255c 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -9,6 +9,7 @@ ha_quality_scale: internal ha_domain: alert ha_codeowners: - '@home-assistant/core' + - '@frenck' ha_integration_type: integration --- @@ -103,7 +104,7 @@ done_message: type: template notifiers: description: "List of `notification` integrations to use for alerts." - required: true + required: false type: list data: description: "Dictionary of extra parameters to send to the notifier." diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index 9e2c8223419..3bb52f055e2 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -13,7 +13,7 @@ ha_platforms: - binary_sensor - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: hub --- The `Ambient Weather Station` integration retrieves local weather information diff --git a/source/_integrations/amp_motorization.markdown b/source/_integrations/amp_motorization.markdown index 975fc00af23..5035a0ffe62 100644 --- a/source/_integrations/amp_motorization.markdown +++ b/source/_integrations/amp_motorization.markdown @@ -4,18 +4,18 @@ description: Connect and control your AMP Motorization devices using the Motion ha_category: - Cover ha_domain: amp_motorization +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 59028c877a2..1d7aabe1b7a 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -106,7 +106,8 @@ Some sensors are disabled by default, since they provide information that is onl - UPS Register 2 Fault (REG2) - UPS Register 3 Fault (REG3) - UPS Restore Requirement (RETPCT) -- UPS Last Self Test (SELFTEST) +- UPS Last Self Test (LASTSTEST) +- UPS Self Test Result (SELFTEST) - UPS Sensitivity (SENSE) - UPS Serial Number (SERIALNO) - UPS Startup Time (STARTTIME) diff --git a/source/_integrations/august_ble.markdown b/source/_integrations/august_ble.markdown index f82dab10e08..23917be0013 100644 --- a/source/_integrations/august_ble.markdown +++ b/source/_integrations/august_ble.markdown @@ -5,20 +5,20 @@ ha_category: - Binary Sensor - Lock - Sensor -ha_bluetooth: true ha_release: 2022.9 -ha_iot_class: Local Push +ha_domain: august_ble +ha_integration_type: virtual +ha_supporting_domain: yalexs_ble +ha_supporting_integration: Yale Access Bluetooth +ha_bluetooth: true ha_codeowners: - '@bdraco' -ha_domain: august_ble ha_config_flow: true ha_platforms: - binary_sensor - lock - sensor -ha_integration_type: integration -ha_supporting_domain: yalexs_ble -ha_supporting_integration: Yale Access Bluetooth +ha_iot_class: Local Push --- Integrates [August](https://august.com/) locks over Bluetooth into Home Assistant. diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index e35204632f0..55975493d39 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -17,7 +17,7 @@ The `aws` integration provides a single place to interact with [Amazon Web Servi You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/tutorials/control-your-costs-free-tier-budgets/) guide for more information. -The `lambda`, `sns` and `sqs` services, used in the `aws` component, all provide an **Always Free** tier for all users even after the 12-month period. The general usage in Home Automation will most likely not reach the free tier limit. Please read [Lambda Pricing](https://aws.amazon.com/lambda/pricing/), [SNS Pricing](https://aws.amazon.com/sns/pricing/) and [SQS Pricing](https://aws.amazon.com/sqs/pricing/) for more details. +The `lambda`, `sns`, `sqs`, and `events` services, used in the `aws` component, all provide an **Always Free** tier for all users even after the 12-month period. The general usage in Home Automation will most likely not reach the free tier limit. Please read [Lambda Pricing](https://aws.amazon.com/lambda/pricing/), [SNS Pricing](https://aws.amazon.com/sns/pricing/), [SQS Pricing](https://aws.amazon.com/sqs/pricing/), and [EventBridge Pricing](https://aws.amazon.com/eventbridge/pricing/) for more details. The `aws` integration is using [botocore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html) to communicate with Amazon Web Services, which is also used by the [AWS Command Client Interface](https://aws.amazon.com/cli/) tool. Therefore, `aws` shares the same credential and profiles with `awscli` tool. Please read [Configuring the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) to learn how to get access keys and how to manage them on your local system securely. @@ -172,3 +172,61 @@ The SQS event payload will contain everything passed in the service call payload "message": "Hello world!" } ``` +## EventBridge Notify Usage + +AWS EventBridge is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the event bus for all targets given in the notification payload. A target must be a name of an event bus accessible by the given credentials. A target is not required, and the default event bus will be used if none are specified. For more information, please see the [EventBridge documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html) and [bototcore documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events.html#EventBridge.Client.put_events) + +There are two options for generating the event detail based on the service call payload. If the `detail` attribute is specified, then its value will be serialized as a JSON object and used for the event detail. If the attribute is not specified, then the value of the `message` attribute is serialized as a simple JSON object with a single key named `message` and the value of the message supplied to the service call. + +Here are a couple of examples showing the service call input and corresponding API entry: + +```jsonc +// Service call payload +{ + "message": "Hello world!" +} + +// Corresponding Entries +{ + "Detail": "{\"message\": \"Hello world!\"}" + "DetailType": "", + "Source": "homeassistant", + "Resources": [], +} +``` + +```jsonc +// Service Call Payload: +{ + "target": ["eventbus1", "eventbus2"] + "data": { + "detail_type": "test_event": + "detail": { + "key1", "value1", + "key2", "value2" + }, + "resources": ["resource1", "resource2"], + "source": "example" + } + +} + +// Corresponding Entries +[ + { + "Detail": "{\"key1\": \"value1\",\"key2\": \"key2\": \"value2\"}" + "DetailType": "test_event", + "EventBusName": "eventbus1", + "Resources": ["resource1", "resource2"], + "Source": "example" + }, + { + "Detail": "{\"key1\": \"value1\",\"key2\": \"key2\": \"value2\"}" + "DetailType": "test_event", + "EventBusName": "eventbus2", + "Resources": ["resource1", "resource2"], + "Source": "example" + } +] + +``` diff --git a/source/_integrations/axis.markdown b/source/_integrations/axis.markdown index 3ef48495bc6..b5bdd506078 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -23,7 +23,7 @@ ha_platforms: - diagnostics - light - switch -ha_integration_type: integration +ha_integration_type: device --- [Axis Communications](https://www.axis.com/) devices are surveillance cameras, speakers, access control and other security-related network connected hardware. Event API works with firmware 5.50 and newer. diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index aada7ca7ff2..f72a13ba1d8 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -73,6 +73,10 @@ name: required: false type: string default: Bayesian Binary Sensor +unique_id: + description: An ID that uniquely identifies this bayesian entity. If two entities have the same unique ID, Home Assistant will raise an exception. + required: false + type: string device_class: description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend. required: false @@ -119,8 +123,9 @@ The following is an example for the `state` observation platform. ```yaml # Example configuration.yaml entry binary_sensor: - name: "in_bed" platform: "bayesian" + name: "in_bed" + unique_id: "172b6ef1-e37e-4f04-8d64-891e84c02b43" # generated on https://www.uuidgenerator.net/ prior: 0.25 # I spend 6 hours a day in bed 6hr/24hr is 0.25 probability_threshold: 0.8 # I am going to be using this sensor to turn out the lights so I only want to to activate when I am sure observations: diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index e765d214eed..5e8ab96116d 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -11,7 +11,7 @@ ha_codeowners: - '@riokuu' ha_domain: blebox ha_platforms: - - air_quality + - binary_sensor - button - climate - cover @@ -36,11 +36,19 @@ This integration adds the BleBox device as a cover in Home Assistant. Currently, this includes support for the following product classes: - BleBox shutterBox -- BleBox gateController +- BleBox rollerGate - BleBox gateBox For now, only a minimum set of features are supported (e.g., no tilt support for shutterBox). +## Binary sensors +This integration adds BleBox device as a binary_sensor in Home Assistant. + +Currently, this includes support for the following product classes: + +- BleBox rainSensor +- BleBox wind&rainSensor (rain only) + ## Sensors This integration adds the BleBox device as a sensor in Home Assistant. diff --git a/source/_integrations/bliss_automation.markdown b/source/_integrations/bliss_automation.markdown index e7851bb69f4..a1fbe430489 100644 --- a/source/_integrations/bliss_automation.markdown +++ b/source/_integrations/bliss_automation.markdown @@ -4,18 +4,18 @@ description: Connect and control your Bliss Automation devices using the Motion ha_category: - Cover ha_domain: bliss_automation +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/bloc_blinds.markdown b/source/_integrations/bloc_blinds.markdown index fe4ea502b36..11661c81800 100644 --- a/source/_integrations/bloc_blinds.markdown +++ b/source/_integrations/bloc_blinds.markdown @@ -4,18 +4,18 @@ description: Connect and control your Bloc Blinds devices using the Motion Blind ha_category: - Cover ha_domain: bloc_blinds +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 51a4d14898e..bde701d0c4b 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -17,7 +17,7 @@ ha_platforms: - media_player - remote ha_ssdp: true -ha_integration_type: integration +ha_integration_type: device --- The Bravia TV integration allows you to control a [Sony Bravia TV](https://www.sony.com/). diff --git a/source/_integrations/brel_home.markdown b/source/_integrations/brel_home.markdown index 77a06217e1a..297dca15e1a 100644 --- a/source/_integrations/brel_home.markdown +++ b/source/_integrations/brel_home.markdown @@ -4,18 +4,18 @@ description: Connect and control your Brel Home devices using the Motion Blinds ha_category: - Cover ha_domain: brel_home +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown index 4b3c5921bee..4e5fa3f0a22 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -14,7 +14,7 @@ ha_zeroconf: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: device --- The `Brother Printer` integration allows you to read current data from your local Brother printer. diff --git a/source/_integrations/bswitch.markdown b/source/_integrations/bswitch.markdown index e1ecd617d48..cab36d9ac62 100644 --- a/source/_integrations/bswitch.markdown +++ b/source/_integrations/bswitch.markdown @@ -3,21 +3,25 @@ title: BSwitch description: Connect and control your BSwitch devices using the SwitchBee integration ha_category: - Button + - Climate + - Cover - Light - Switch ha_domain: bswitch -ha_codeowners: - - '@jafar-atili' -ha_integration_type: integration -ha_config_flow: true -ha_platforms: - - button - - light - - switch -ha_iot_class: Local Polling +ha_integration_type: virtual ha_supporting_domain: switchbee ha_supporting_integration: SwitchBee ha_release: '2022.10' +ha_codeowners: + - '@jafar-atili' +ha_config_flow: true +ha_platforms: + - button + - climate + - cover + - light + - switch +ha_iot_class: Local Polling --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index 993508842b5..d8a0c40fa78 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.82 ha_iot_class: Local Polling ha_codeowners: - - '@jxwolstenholme' + - '@typhoon2099' ha_domain: bt_smarthub ha_platforms: - device_tracker diff --git a/source/_integrations/bticino.markdown b/source/_integrations/bticino.markdown index 7dfb86efd0e..bf7a40d9b19 100644 --- a/source/_integrations/bticino.markdown +++ b/source/_integrations/bticino.markdown @@ -13,9 +13,12 @@ ha_category: - Switch - Weather ha_domain: bticino +ha_integration_type: virtual +ha_supporting_domain: netatmo +ha_supporting_integration: Netatmo +ha_release: '0.20' ha_codeowners: - '@cgtobi' -ha_integration_type: integration ha_config_flow: true ha_platforms: - camera @@ -28,9 +31,6 @@ ha_platforms: - switch ha_iot_class: Cloud Polling ha_homekit: true -ha_supporting_domain: netatmo -ha_supporting_integration: Netatmo -ha_release: '0.20' --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/bubendorff.markdown b/source/_integrations/bubendorff.markdown index b4ad3290b67..a3daffbc186 100644 --- a/source/_integrations/bubendorff.markdown +++ b/source/_integrations/bubendorff.markdown @@ -13,9 +13,12 @@ ha_category: - Switch - Weather ha_domain: bubendorff +ha_integration_type: virtual +ha_supporting_domain: netatmo +ha_supporting_integration: Netatmo +ha_release: '0.20' ha_codeowners: - '@cgtobi' -ha_integration_type: integration ha_config_flow: true ha_platforms: - camera @@ -28,9 +31,6 @@ ha_platforms: - switch ha_iot_class: Cloud Polling ha_homekit: true -ha_supporting_domain: netatmo -ha_supporting_integration: Netatmo -ha_release: '0.20' --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index cbb815c4a5f..1a368bc74a6 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -13,7 +13,7 @@ ha_integration_type: integration The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. -Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`. +After creating your account, you should now be able to obtain your `username` and `api_key` [here](https://dashboard.clicksend.com/account/subaccounts). To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: @@ -29,10 +29,10 @@ notify: name: description: Setting the optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME. required: false - default: ClickSend + default: clicksend_tts type: string username: - description: Your username. + description: Your username (probably your email address). required: true type: string api_key: @@ -40,15 +40,11 @@ api_key: required: true type: string recipient: - description: Recipient phone number. This is the phone number that you want to call and notify via TTS (e.g., `09171234567`). + description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like `+14151234567`. This is the phone number that you want to call and notify via TTS, see [ClickSend Documentation](https://developers.clicksend.com/docs/rest/v3/#Send-Voice-Message) for more info. required: true type: string -caller: - description: Caller phone number. This is the phone number that you want to be the TTS call originator (e.g., `09181234567`). If not defined the recipient number is used. - required: false - type: string language: - description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](https://clicksend.docs.apiary.io/#reference/voice/voice-languages). + description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](https://developers.clicksend.com/docs/rest/v3/#Send-Voice-Message). required: false default: en-us type: string @@ -59,4 +55,17 @@ voice: type: string {% endconfiguration %} -To use notifications, please see the [getting started with automation page](/getting-started/automation/). +### Usage + +ClickSend is a notify platform and thus can be controlled by calling the notify service [as described here](/integrations/notify/). It will send a notification to the E.164 phone number you configured as **recipient**. + +```yaml +alias: "The sun has set" +trigger: + - platform: sun + event: sunset +action: + - service: notify.clicksend_tts + data: + message: "The sun has set" +``` diff --git a/source/_integrations/cloud.markdown b/source/_integrations/cloud.markdown index 0bbb6dfec19..25f64ba07a0 100644 --- a/source/_integrations/cloud.markdown +++ b/source/_integrations/cloud.markdown @@ -13,7 +13,7 @@ ha_platforms: - binary_sensor - stt - tts -ha_integration_type: integration +ha_integration_type: system --- The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa and Google Assistant. [Learn more.](/cloud) diff --git a/source/_integrations/cozytouch.markdown b/source/_integrations/cozytouch.markdown index 8d0ebb3e81a..bc2c1baf1c8 100644 --- a/source/_integrations/cozytouch.markdown +++ b/source/_integrations/cozytouch.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: cozytouch +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index ef46239865c..d36e52f0e37 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -13,7 +13,7 @@ ha_config_flow: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: device --- The CPU Speed integration allows you to monitor the current CPU speed. diff --git a/source/_integrations/dacia.markdown b/source/_integrations/dacia.markdown index 901c17f420a..fe6358422b0 100644 --- a/source/_integrations/dacia.markdown +++ b/source/_integrations/dacia.markdown @@ -8,9 +8,12 @@ ha_category: - Select - Sensor ha_domain: dacia +ha_integration_type: virtual +ha_supporting_domain: renault +ha_supporting_integration: Renault +ha_release: 2021.8 ha_codeowners: - '@epenet' -ha_integration_type: integration ha_config_flow: true ha_platforms: - binary_sensor @@ -20,9 +23,6 @@ ha_platforms: - select - sensor ha_iot_class: Cloud Polling -ha_supporting_domain: renault -ha_supporting_integration: Renault -ha_release: 2021.8 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/debugpy.markdown b/source/_integrations/debugpy.markdown index c2525d75a75..edceb4421f2 100644 --- a/source/_integrations/debugpy.markdown +++ b/source/_integrations/debugpy.markdown @@ -9,7 +9,7 @@ ha_codeowners: ha_domain: debugpy ha_quality_scale: internal ha_iot_class: Local Push -ha_integration_type: integration +ha_integration_type: service --- The remote Python debugger integration allows you to use the Visual Studio Code diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 0b83c8d2c93..682bbae3ecd 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -37,7 +37,7 @@ ha_platforms: - sensor - siren - switch -ha_integration_type: integration +ha_integration_type: hub --- [deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index 128a9e31885..e0db645a10c 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -33,6 +33,7 @@ This integration is a meta-component and configures a default set of integration - [Input select](/integrations/input_select/) (`input_select`) - [Input text](/integrations/input_text/) (`input_text`) - [Logbook](/integrations/logbook/) (`logbook`) +- [Logger](/integrations/logger/) (`logger`) - [Map](/integrations/map/) (`map`) - [Media Source](/integrations/media_source/) (`media_source`) - [Mobile App Support](/integrations/mobile_app/) (`mobile_app`) diff --git a/source/_integrations/devolo_home_control.markdown b/source/_integrations/devolo_home_control.markdown index fae92419f97..3875e5bc697 100755 --- a/source/_integrations/devolo_home_control.markdown +++ b/source/_integrations/devolo_home_control.markdown @@ -26,7 +26,7 @@ ha_platforms: - siren - switch ha_zeroconf: true -ha_integration_type: integration +ha_integration_type: hub --- devolo Home Control is a Z-Wave ecosystem with a Z-Wave to IP gateway in the center. The integration allows you to control devices connected to the gateway. diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index eafcd5de54b..d08b5aad986 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -18,7 +18,7 @@ ha_platforms: - device_tracker - sensor ha_zeroconf: true -ha_integration_type: integration +ha_integration_type: device --- The devolo Home Network integration allows you to monitor your PLC network. diff --git a/source/_integrations/diaz.markdown b/source/_integrations/diaz.markdown new file mode 100644 index 00000000000..bf407beb823 --- /dev/null +++ b/source/_integrations/diaz.markdown @@ -0,0 +1,21 @@ +--- +title: Diaz +description: Connect and control your Diaz devices using the Motion Blinds integration +ha_category: + - Cover +ha_domain: diaz +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - cover + - sensor +ha_iot_class: Local Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/digital_loggers.markdown b/source/_integrations/digital_loggers.markdown index e0b5d5296f5..2ec329dc28a 100644 --- a/source/_integrations/digital_loggers.markdown +++ b/source/_integrations/digital_loggers.markdown @@ -8,9 +8,12 @@ ha_category: - Light - Switch ha_domain: digital_loggers +ha_integration_type: virtual +ha_supporting_domain: wemo +ha_supporting_integration: Belkin WeMo +ha_release: pre 0.7 ha_codeowners: - '@esev' -ha_integration_type: integration ha_config_flow: true ha_platforms: - binary_sensor @@ -19,11 +22,8 @@ ha_platforms: - sensor - switch ha_iot_class: Local Push -ha_ssdp: true ha_homekit: true -ha_supporting_domain: wemo -ha_supporting_integration: Belkin WeMo -ha_release: pre 0.7 +ha_ssdp: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/dooya.markdown b/source/_integrations/dooya.markdown index 8fb43fff34a..be4e6b48b5b 100644 --- a/source/_integrations/dooya.markdown +++ b/source/_integrations/dooya.markdown @@ -4,18 +4,18 @@ description: Connect and control your Dooya devices using the Motion Blinds inte ha_category: - Cover ha_domain: dooya +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index 52004327f0a..57a3a250f9f 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -13,7 +13,7 @@ ha_codeowners: - '@frenck' ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: hub --- A sensor platform for Belgian, Dutch, Luxembourg and Swedish Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. Swedish meters with a 'HAN port' are not supported by this integration. diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index c76ed259aff..3fa2e58fc6d 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -84,30 +84,17 @@ You must [restart Home Assistant](/docs/configuration/#reloading-changes) for th ## Notifications -To get your ecobee notifications working with Home Assistant, you must first have the main ecobee integration loaded and running. Once you have that configured, you can set up this integration to send messages to your ecobee device. +The `ecobee` notify platform allows you to send notifications to an ecobee thermostat. The `target` parameter of the service call is required to specify the index of the recipient thermostat. The index values assigned to the thermostats are consecutive integers, starting at 0. -To use this notification platform in your installation, add the following to your `configuration.yaml` file: +Example service call: ```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: ecobee +service: notify.ecobee +data: + message: "Hello, this is your thermostat." + target: 0 ``` -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: "`notify`" - type: string -index: - description: If you have multiple thermostats, you can specify which one to send the notification to by setting an `index`. The index values assigned to the thermostats are consecutive integers, starting at 0. - required: false - default: 0 - type: integer -{% endconfiguration %} - To use notifications, please see the [getting started with automation page](/getting-started/automation/). ## Thermostat diff --git a/source/_integrations/edl21.markdown b/source/_integrations/edl21.markdown index 22ffceb610e..62153f01a4e 100644 --- a/source/_integrations/edl21.markdown +++ b/source/_integrations/edl21.markdown @@ -6,8 +6,6 @@ ha_category: ha_iot_class: Local Push ha_release: 0.107 ha_domain: edl21 -ha_codeowners: - - '@mtdcr' ha_platforms: - sensor ha_integration_type: integration diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown index 97a2eed45ac..3b010b62f5e 100644 --- a/source/_integrations/elgato.markdown +++ b/source/_integrations/elgato.markdown @@ -15,7 +15,7 @@ ha_platforms: - button - diagnostics - light -ha_integration_type: integration +ha_integration_type: device --- The [Elgato](https://www.elgato.com/) Lights sets the bar for high-end studio diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index 8d501f5307f..c06a41e91c7 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -11,6 +11,7 @@ ha_config_flow: true ha_codeowners: - '@gtdiehl' ha_platforms: + - diagnostics - sensor ha_integration_type: integration --- diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index a7f3b2f2bfb..f61d37e7aba 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -27,7 +27,7 @@ ha_platforms: - select - sensor - switch -ha_integration_type: integration +ha_integration_type: device ha_dhcp: true works_with: - local diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown index 0a8064afa7b..f707beb020a 100644 --- a/source/_integrations/fan.template.markdown +++ b/source/_integrations/fan.template.markdown @@ -13,6 +13,8 @@ The `template` platform creates fans that combine integrations and provides the ability to run scripts or invoke services for each of the `turn_on`, `turn_off`, `set_percentage`, `set_preset_mode`, `set_oscillating`, and `set_direction` commands of a fan. +## Configuration + To enable Template Fans in your installation, add the following to your `configuration.yaml` file: @@ -146,3 +148,110 @@ When converting a fan with 3 speeds from the old fan entity model, the following 33 - `low` 66 - `medium` 100 - `high` + +## Examples + +### Helper Fan + +This example uses an input_boolean and an input_number to mimic a fan, and +the example shows multiple service calls for set_percentage. + +{% raw %} + +```yaml +fan: + - platform: template + fans: + helper_fan: + friendly_name: "Helper Fan" + value_template: "{{ states('input_boolean.state') }}" + turn_on: + - service: input_boolean.turn_on + target: + entity_id: input_boolean.state + turn_off: + - service: input_boolean.turn_off + target: + entity_id: input_boolean.state + percentage_template: > + {{ states('input_number.percentage') if is_state('input_boolean.state', 'on') else 0 }} + speed_count: 6 + set_percentage: + - service: input_boolean.turn_{{ 'on' if percentage > 0 else 'off' }} + target: + entity_id: input_boolean.state + - service: input_number.set_value + target: + entity_id: input_number.percentage + data: + value: "{{ percentage }}" +``` + +{% endraw %} + +### Preset Modes Fan + +This example uses an existing fan with only a percentage. It extends the +percentage value into useable preset modes without a helper entity. + +{% raw %} + +```yaml +fan: + - platform: template + fans: + preset_mode_fan: + friendly_name: "Preset Mode Fan Example" + value_template: "{{ states('fan.percentage_fan') }}" + turn_on: + - service: fan.turn_on + target: + entity_id: fan.percentage_fan + turn_off: + - service: fan.turn_off + target: + entity_id: fan.percentage_fan + percentage_template: > + {{ state_attr('fan.percentage_fan', 'percentage') }} + speed_count: 3 + set_percentage: + - service: fan.set_percentage + target: + entity_id: fan.percentage_fan + data: + percentage: "{{ percentage }}" + preset_modes: + - "off" + - "low" + - "medium" + - "high" + preset_mode_template: > + {% if is_state('fan.percentage_fan', 'on') %} + {% if state_attr('fan.percentage_fan', 'percentage') == 100 %} + high + {% elif state_attr('fan.percentage_fan', 'percentage') == 66 %} + medium + {% else %} + low + {% endif %} + {% else %} + off + {% endif %} + set_preset_mode: + - service: fan.set_percentage + target: + entity_id: fan.percentage_fan + data: + percentage: >- + {% if preset_mode == 'high' %} + 100 + {% elif preset_mode == 'medium' %} + 66 + {% elif preset_mode == 'low' %} + 33 + {% else %} + 0 + {% endif %} +``` + +{% endraw %} diff --git a/source/_integrations/fireservicerota.markdown b/source/_integrations/fireservicerota.markdown index 74364869f6e..151c28c5866 100644 --- a/source/_integrations/fireservicerota.markdown +++ b/source/_integrations/fireservicerota.markdown @@ -63,6 +63,7 @@ This is the main entity of the integration containing the incident message as it | `longitude` | The Longitude of the incident.| | `address_type` | Type of address, e.g. `home`.| | `formatted_address` | Address in string format.| +| `task_ids` | ID(s) of appliance(s) or task(s).| ### Duty Binary Sensor diff --git a/source/_integrations/flexom.markdown b/source/_integrations/flexom.markdown index d7ae3d11c5e..b4a6566106c 100644 --- a/source/_integrations/flexom.markdown +++ b/source/_integrations/flexom.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: flexom +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index e97c3767e94..0ffc78a6195 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -2,6 +2,7 @@ title: Flume description: Documentation about the flume sensor. ha_category: + - Binary Sensor - Sensor ha_iot_class: Cloud Polling ha_release: 0.103 @@ -13,6 +14,7 @@ ha_codeowners: ha_domain: flume ha_dhcp: true ha_platforms: + - binary_sensor - sensor ha_integration_type: integration --- @@ -27,6 +29,17 @@ You can find your Client ID and Client Secret under "API Access" on the [setting To add `Flume` to your installation, go to **Settings** -> **Devices & Services** in the UI, click the button with `+` sign and from the list of integrations select **Flume**. +## Notifications + +Flume notifications are available via binary sensors. To clear the notifications, you will need to use your Flume app or go to: [https://portal.flumewater.com/notifications]([https://portal.flumewater.com/notifications]) and clear the notification in question. + +The following notifications are supported: + +* Bridge disconnected +* High flow +* Leak detected + + ## Configuration for Binary Sensor The following YAML creates a binary sensor. This requires the default sensor to be configured successfully. diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index 1afa2960d9b..fa7194f4426 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -14,7 +14,7 @@ ha_platforms: - diagnostics - sensor ha_quality_scale: platinum -ha_integration_type: integration +ha_integration_type: service --- The [Forecast.Solar](https://forecast.solar/) service provides solar production diff --git a/source/_integrations/forked_daapd.markdown b/source/_integrations/forked_daapd.markdown index ddc8bda9275..ef829a445bd 100644 --- a/source/_integrations/forked_daapd.markdown +++ b/source/_integrations/forked_daapd.markdown @@ -1,6 +1,6 @@ --- -title: forked-daapd -description: Instructions on how to integrate a forked-daapd server into Home Assistant. +title: Owntone +description: Instructions on how to integrate an Owntone server into Home Assistant. ha_category: - Media Player ha_release: '0.110' @@ -15,22 +15,26 @@ ha_platforms: ha_integration_type: integration --- -The `forked_daapd` integration allows you to control your [OwnTone (previously forked-daapd)](https://github.com/owntone/owntone-server) server from Home Assistant. This integration can control the forked-daapd outputs (zones) with limited playback control (play/pause, previous/next track) and media info support. Playlist manipulation is not supported. +The Owntone integration allows you to control your [OwnTone (previously forked-daapd)](https://github.com/owntone/owntone-server) server from Home Assistant. This integration can control the Owntone outputs (zones) with limited playback control (play/pause, previous/next track) and media info support. Playlist manipulation is not supported. ## Requirements -The `forked_daapd` integration requires a OwnTone server built with libwebsockets enabled, version >= 27.0. +The Owntone integration requires an OwnTone server built with libwebsockets enabled, version >= 27.0. {% include integrations/config_flow.md %} ## Outputs -Once the `forked-daapd` integration is set up, outputs will automatically be loaded from the server and added to HA in real time. +Once the Owntone integration is set up, outputs will automatically be loaded from the server and added to HA in real-time. ## Pipes -As OwnTone supports playing audio input via a pipe, this integration supports the forwarding of basic player controls (play, pause, next track, previous track) directly to the pipe's source. Currently only the pipe source librespot-java is supported. To use this, configure your forked-daapd server to autostart pipes and name your librespot-java pipe "librespot-java" (accompanying metadata is also supported through forked-daapd via a metadata pipe named"librespot-java.metadata"). The `forked-daapd` integration will find the librespot-java pipe in the database and will set it up as a source. +As OwnTone supports playing audio input via a pipe, this integration supports the forwarding of basic player controls (play, pause, next track, previous track) directly to the pipe's source. Currently, only the pipe source librespot-java is supported. To use this, configure your Owntone server to autostart pipes and name your librespot-java pipe "librespot-java" (accompanying metadata is also supported through Owntone via a metadata pipe named "librespot-java.metadata"). The Owntone integration will find the librespot-java pipe in the database and will set it up as a source. ## Playlists -The `forked-daapd` integration will treat playlists in the database as sources. The number of playlists shown as sources can be set in the integration's configuration options. +The Owntone integration will treat playlists in the database as sources. The number of playlists shown as sources can be set in the integration's configuration options. + +## Spotify + +The Owntone integration supports media browsing via the [Spotify integration](/integrations/spotify). However, to play Spotify content, your Owntone instance must be logged in with Spotify. This can be done through Owntone's own web interface. For more details, see [Owntone's notes on Spotify](https://owntone.github.io/owntone-server/integrations/spotify/#spotify). You should log in with the same Spotify account for both the Owntone server and the Home Assistant [Spotify integration](/integrations/spotify). diff --git a/source/_integrations/fritzbox_callmonitor.markdown b/source/_integrations/fritzbox_callmonitor.markdown index 414a570bda2..077044e40bf 100644 --- a/source/_integrations/fritzbox_callmonitor.markdown +++ b/source/_integrations/fritzbox_callmonitor.markdown @@ -9,7 +9,7 @@ ha_domain: fritzbox_callmonitor ha_config_flow: true ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: device ha_codeowners: - '@cdce8p' --- diff --git a/source/_integrations/fully_kiosk.markdown b/source/_integrations/fully_kiosk.markdown index 90a2f6d4aaf..6ddf9275bcb 100644 --- a/source/_integrations/fully_kiosk.markdown +++ b/source/_integrations/fully_kiosk.markdown @@ -67,3 +67,43 @@ The following controls are available:
The Fully Kiosk Browser app does not provide feedback on the device volume or media playback status, so we are unable to display the current volume level or playback status.
+ +## Services + +**Service `load_url`** + +You can use the service `fully_kiosk.load_url` to have the tablet open the specified URL. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `device_id` | yes | Device ID (or list of device IDs) to load the URL on. +| `url` | yes | The URL to load. + +Example: + +```yaml +service: fully_kiosk.load_url +data: + url: "https://home-assistant.io" +target: + device_id: a674c90eca95eca91f6020415de07713 +``` + +**Service `start_application`** + +You can use the service `fully_kiosk.start_application` to have the tablet launch the specified app. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `device_id` | yes | Device ID (or list of device IDs) to load the URL on. +| `application` | yes | The package name of the app to load. + +Example: + +```yaml +service: fully_kiosk.start_application +data: + application: "de.ozerov.fully" +target: + device_id: a674c90eca95eca91f6020415de07713 +``` diff --git a/source/_integrations/gaviota.markdown b/source/_integrations/gaviota.markdown index e61429f0986..5d90b425fab 100644 --- a/source/_integrations/gaviota.markdown +++ b/source/_integrations/gaviota.markdown @@ -4,18 +4,18 @@ description: Connect and control your Gaviota devices using the Motion Blinds in ha_category: - Cover ha_domain: gaviota +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown index 212da2a4fce..77da90c8aa5 100644 --- a/source/_integrations/gios.markdown +++ b/source/_integrations/gios.markdown @@ -13,7 +13,7 @@ ha_quality_scale: platinum ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The `gios` integration uses the [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) web service as a source for air quality data for your location. diff --git a/source/_integrations/gree.markdown b/source/_integrations/gree.markdown index 7ef6a0df1aa..770e67aa95c 100644 --- a/source/_integrations/gree.markdown +++ b/source/_integrations/gree.markdown @@ -37,6 +37,7 @@ Any Gree Smart device working with the Gree+ app should be supported, including - Cooper & Hunter - Proklima - Tadiran +- Heiwa ## Climate diff --git a/source/_integrations/guardian.markdown b/source/_integrations/guardian.markdown index 2d80d271f8c..74be90a680d 100644 --- a/source/_integrations/guardian.markdown +++ b/source/_integrations/guardian.markdown @@ -20,7 +20,7 @@ ha_platforms: - sensor - switch ha_dhcp: true -ha_integration_type: integration +ha_integration_type: device --- The `guardian` integration integrates diff --git a/source/_integrations/hassio.markdown b/source/_integrations/hassio.markdown index f5624335ae2..1bc143ec49c 100644 --- a/source/_integrations/hassio.markdown +++ b/source/_integrations/hassio.markdown @@ -16,7 +16,7 @@ ha_platforms: - update ha_codeowners: - '@home-assistant/supervisor' -ha_integration_type: system +ha_integration_type: integration --- Supervisor integration allows you to monitor and control Supervisor add-ons and operating system from Home Assistant. diff --git a/source/_integrations/havana_shade.markdown b/source/_integrations/havana_shade.markdown new file mode 100644 index 00000000000..efa7b8b1037 --- /dev/null +++ b/source/_integrations/havana_shade.markdown @@ -0,0 +1,21 @@ +--- +title: Havana Shade +description: Connect and control your Havana Shade devices using the Motion Blinds integration +ha_category: + - Cover +ha_domain: havana_shade +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - cover + - sensor +ha_iot_class: Local Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/heiwa.markdown b/source/_integrations/heiwa.markdown new file mode 100644 index 00000000000..55c5a9b6341 --- /dev/null +++ b/source/_integrations/heiwa.markdown @@ -0,0 +1,20 @@ +--- +title: Heiwa +description: Connect and control your Heiwa devices using the Gree Climate integration +ha_category: + - Climate +ha_release: 0.117 +ha_domain: heiwa +ha_integration_type: virtual +ha_supporting_domain: gree +ha_supporting_integration: Gree Climate +ha_codeowners: + - '@cmroche' +ha_config_flow: true +ha_platforms: + - climate + - switch +ha_iot_class: Local Polling +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/hi_kumo.markdown b/source/_integrations/hi_kumo.markdown index b9dc7b509fc..c66114cb9ee 100644 --- a/source/_integrations/hi_kumo.markdown +++ b/source/_integrations/hi_kumo.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: hi_kumo +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/homeassistant_alerts.markdown b/source/_integrations/homeassistant_alerts.markdown index f98ba10ee55..2d9b2842ab6 100644 --- a/source/_integrations/homeassistant_alerts.markdown +++ b/source/_integrations/homeassistant_alerts.markdown @@ -7,7 +7,7 @@ ha_category: ha_codeowners: - '@home-assistant/core' ha_domain: homeassistant_alerts -ha_integration_type: integration +ha_integration_type: system ha_quality_scale: internal --- diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index 83baadccef5..924520fbcc2 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -23,7 +23,7 @@ ha_platforms: - sensor - switch ha_zeroconf: true -ha_integration_type: integration +ha_integration_type: hub --- The Philips Hue integration allows you to control and monitor the lights and sensors connected to your Hue bridge. diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 71a968f9428..b23853631b8 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -5,6 +5,7 @@ ha_category: - Button - Cover - Scene + - Select - Sensor ha_release: 0.15 ha_domain: hunterdouglas_powerview @@ -20,6 +21,7 @@ ha_platforms: - cover - diagnostics - scene + - select - sensor ha_zeroconf: true ha_dhcp: true @@ -33,6 +35,7 @@ There is currently support for the following device types within Home Assistant: - Button - Cover - Scene +- Select - Sensor
@@ -53,40 +56,35 @@ If your shade is not listed please raise a feature request on the community foru | Name (Type) | Capabilities | | :---------------------------------------- | :------------------------------ | -| Roman (4) | Bottom Up | -| Bottom Up (5) | Bottom Up | -| Duette (6) | Bottom Up | -| Duette, Top Down Bottom Up (8) | Top Down, Bottom Up | -| Duette DuoLite, Top Down Bottom Up (9) | Top Down, Bottom Up | -| Silhouette (18) | 90° Tilt when closed | -| Silhouette (23) | 90° Tilt when closed | -| Duette Architella, Top Down Bottom Up (9) | Top Down, Bottom Up | -| M25T Roller Blind (42) | Bottom Up | -| Facette (43) | 90° Tilt when closed | -| Twist (44) | 180° Tilt when closed | -| Pleated, Top Down Bottom Up (47) | Top Down, Bottom Up | | AC Roller (49) | Bottom Up | - -### Devices with limited functionality - -
-These devices are currently still being tested. We ask you wait patiently while this completes. Until this is completed these may perform basic or slightly odd functionality. -
- -| Name (Type) | Capabilities | -| :---------------------------------------- | :------------------------------ | +| Bottom Up (5) | Bottom Up | +| Curtain, Left Stack (69) | Vertical | +| Curtain, Right Stack (70) | Vertical | +| Curtain, Split Stack (71) | Vertical | +| Facette (43) | Bottom Up TiltOnClosed 90° | +| Duette (6) | Bottom Up | +| Duette, Top Down Bottom Up (8) | Top Down Bottom Up | +| Duette Architella, Top Down Bottom Up (9) | Top Down Bottom Up | +| Duette DuoLite, Top Down Bottom Up (9) | Top Down Bottom Up | +| Duolite Lift (79) | Dual Shade Overlapped | +| M25T Roller Blind (42) | Bottom Up | +| Palm Beach Shutters (66) | Tilt Only 180° | +| Pirouette (18) | Bottom Up TiltOnClosed 90° | +| Pleated, Top Down Bottom Up (47) | Top Down Bottom Up | +| Roman (4) | Bottom Up | +| Silhouette (23) | Bottom Up TiltOnClosed 90° | +| Silhouette Duolite (38) | Dual Shade Overlapped Tilt 90° | +| Skyline Panel, Left Stack (26) | Vertical | +| Skyline Panel, Right Stack (27) | Vertical | +| Skyline Panel, Split Stack (28) | Vertical | | Top Down (7) | Top Down | -| Silhouette Duolite (38) | Dual Shade Blackout + 90° Tilt | -| Venetian, Tilt Anywhere (51) | 180° Tilt Anywhere | -| Vertical Slats, Left Stack (54) | 180° Tilt when closed, Vertical | -| Vertical Slats, Right Stack (55) | 180° Tilt when closed, Vertical | -| Vertical Slats, Split Stack (56) | 180° Tilt when closed, Vertical | -| Venetian, Tilt Anywhere (62) | 180° Tilt Anywhere, Vertical | -| Vignette Duolite (65) | Dual Shade Blackout | -| Curtain, Left Stack (69) | 180° Tilt when closed, Vertical | -| Curtain, Right Stack (70) | 180° Tilt when closed, Vertical | -| Curtain, Split Stack (71) | 180° Tilt when closed, Vertical | -| Duolite Lift (79) | Dual Shade Blackout 90° Tilt | +| Twist (44) | Bottom Up TiltOnClosed 180° | +| Venetian, Tilt Anywhere (51) | Bottom Up TiltAnywhere 180° | +| Venetian, Tilt Anywhere (62) | Bottom Up TiltAnywhere 180° | +| Vertical Slats, Left Stack (54) | Vertical TiltAnywhere 180° | +| Vertical Slats, Right Stack (55) | Vertical TiltAnywhere 180° | +| Vertical Slats, Split Stack (56) | Vertical TiltAnywhere 180° | +| Vignette Duolite (65) | Dual Shade Overlapped | ## Capabilities Information @@ -96,14 +94,13 @@ These shades offer only the simple up/down movement of your conventional shades. ### Top Down -
Full functionality not currently implemented
- These shades offer a unique movement that is inverse to your conventional shade, where the shade is fixed to the floor and lowered from the roof. -### Top Down, Bottom Up (TDBU) +### Top Down Bottom Up(TDBU) TDBU shades consist of two rails controlled by two motors designated by Top and Bottom with fabric in between. The Top and Bottom can move independently to cover different parts of the window but cannot pass the other. + Two different entities that will be created for each blind: Top and Bottom. #### Top entity @@ -126,15 +123,35 @@ Shades with Tilt when closed functionality only allow a shade to tilt when it is ### Tilt Anywhere -
Full functionality not currently implemented
- These shades can tilt in any position and do not require the shade to be open or closed to adjust the tilt position. -### Dual Shade Blackout +### Dual Shade Overlapped -
Full functionality not currently implemented
+These shades consist of two pieces of fabric attached to a single rail. The front shade is sheer, with the rear being opaque, and neither panel can move independently from the other. -These shades consist of two pieces of fabric attached to a single rail. The front shade is sheer, with the rear being blackout, and neither panel can move independently from the other. +Three different entities that will be created for each blind: Front, Rear and Combined. + +#### Front entity + +- 'Up/Open' will move the front shade to the ceiling +- 'Down/Close' will move the front shade to the floor +- As the positioning of the front requires the rear opaque to be fully opened any move will force the rear shade to be opened + +#### Rear entity + +- 'Up/Open' will move the rear shade to the ceiling +- 'Down/Close' will move the rear shade to the floor +- As the positioning of the rear requires the front sheer to be fully closed any move will force the front shade to be closed + +#### Combined entity + +- 'Up/Open' will move the front and rear shades to the ceiling +- 'Down/Close' will move the front and rear shades to the floor +- This entity combines movement for two entities in one + - 0-50 represents the rear shade + - 51-100 represents the front shade +- Tilt functionality will also be present on this entity for shades that support tilt + - When Tilted the front sheer needs to be fully closed, this will happen automatically ## Buttons @@ -146,6 +163,16 @@ Initiate a calibration of the shade position. Calibration is a common requiremen Identify will 'jog' the shade position as a diagnostic tool to ensure the shade you are trying to move is both the intended shade and communicating correctly. +### Favorite + +Move the shade to the favorite position as programmed physically on the device. This will perform the same move as the heart on the pebble remote. + +## Selection Entities + +### Power Source + +Set the type for connected power source. Available options are Hardwired Power Supply, Battery Wand and Rechargeable Battery + ## Example Automations ### Calling a Powerview Scene diff --git a/source/_integrations/hurrican_shutters_wholesale.markdown b/source/_integrations/hurrican_shutters_wholesale.markdown index 02955313c61..03b283762fb 100644 --- a/source/_integrations/hurrican_shutters_wholesale.markdown +++ b/source/_integrations/hurrican_shutters_wholesale.markdown @@ -4,18 +4,18 @@ description: Connect and control your Hurrican Shutters Wholesale devices using ha_category: - Cover ha_domain: hurrican_shutters_wholesale +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index a3673a6fbb4..b5c51841a15 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -61,9 +61,11 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr ## Known working devices +- [Blue Charm Beacons BC-U1-USB-Powered-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-ibeacon-bc-u1-multibeacon-usb-powered/) - [Blue Charm Beacons BC011-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-multi-beacon-bc011/) - [Blue Charm Beacons BC021-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-ibeacon-bc021-multibeacon-with-button-trigger-and-motion-sensor/) -- [Blue Charm Beacons BC-U1-USB-Powered-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-ibeacon-bc-u1-multibeacon-usb-powered/) +- [Blue Charm Beacons BC037G-GeoPattern-iBeacon](https://bluecharmbeacons.com/product/blue-charm-bc037-ibeacon/) +- [Blue Charm Beacons BC037S-SmoothPattern-iBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-ibeacon-bc037s-ibeacon/) - [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/) - Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued) - Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued) diff --git a/source/_integrations/inspired_shades.markdown b/source/_integrations/inspired_shades.markdown new file mode 100644 index 00000000000..72a6854504a --- /dev/null +++ b/source/_integrations/inspired_shades.markdown @@ -0,0 +1,21 @@ +--- +title: Inspired Shades +description: Connect and control your Inspired Shades devices using the Motion Blinds integration +ha_category: + - Cover +ha_domain: inspired_shades +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - cover + - sensor +ha_iot_class: Local Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/intellifire.markdown b/source/_integrations/intellifire.markdown index 74ca168405d..4cc15c34a69 100644 --- a/source/_integrations/intellifire.markdown +++ b/source/_integrations/intellifire.markdown @@ -5,6 +5,7 @@ ha_category: - Binary Sensor - Climate - Fan + - Number - Sensor - Switch ha_iot_class: Local Polling @@ -17,6 +18,7 @@ ha_platforms: - binary_sensor - climate - fan + - number - sensor - switch ha_dhcp: true @@ -49,8 +51,11 @@ The following controllable entities are available: - **Thermostat** - This entity will be present if your unit has thermostatic control. -### Sensor Types +### Number +The integration uses a Number entity to control flame height. Valid flame height vales are `1-5`. + +### Sensor Types The following sensors are available as either a **Binary Sensor** when dealing with on/off. @@ -63,7 +68,7 @@ The following sensors are available as either a **Binary Sensor** when dealing w ### Sensor -- **Flame Height**: Numerical indicator of flame height, where `0` is the lowest setting. +- **Flame Height**: Numerical indicator of flame height, where `1` is the lowest setting and `5` is the highest setting. - **Temperature**: Current ambient temperature as read by the fireplace remote. - **Target Temperature**: If the thermostat is engaged this is the target temperature the fireplace will try to reach, as measured by the remote. - **Fan Speed**: Numerical indicator of fan speed. diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index aa0ab692926..e17ca809b58 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -12,7 +12,7 @@ ha_domain: iqvia ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The `iqvia` sensor platform collects and displays allergy, asthma and disease diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 752d845dd8d..7a3bcd2cb61 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -18,11 +18,21 @@ The Islamic Prayer Times (`islamic_prayer_times`) integration displays the vario This platform calculates prayer times using the following calculation methods: -- University of Islamic Sciences in Karachi +- Shia Ithna-Ansari - Islamic Society of North America +- University of Islamic Sciences, Karachi - Muslim World League -- Umm Al-Qura University in Makkah -- Moonsighting +- Umm Al-Qura University, Makkah +- Egyptian General Authority of Survey +- Institute of Geophysics, University of Tehran +- Gulf Region +- Kuwait +- Qatar +- Majlis Ugama Islam Singapura, Singapore +- Union Organization islamic de France +- Diyanet İşleri Başkanlığı, Turkiye +- Spiritual Administration of Muslims of Russia +- Moonsighting Committee Worldwide {% include integrations/config_flow.md %} diff --git a/source/_integrations/ismartwindow.markdown b/source/_integrations/ismartwindow.markdown index 0646162c16d..ac1fd715cc7 100644 --- a/source/_integrations/ismartwindow.markdown +++ b/source/_integrations/ismartwindow.markdown @@ -4,18 +4,18 @@ description: Connect and control your iSmartWindow devices using the Motion Blin ha_category: - Cover ha_domain: ismartwindow +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown index 1bcbc85086e..ff00c58f607 100644 --- a/source/_integrations/iss.markdown +++ b/source/_integrations/iss.markdown @@ -11,7 +11,7 @@ ha_platforms: ha_codeowners: - '@DurgNomis-drol' ha_config_flow: true -ha_integration_type: integration +ha_integration_type: service --- The International Space Station (ISS) integration uses the diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index d0a4cb243e6..015110725bb 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -29,7 +29,7 @@ ha_platforms: - sensor - switch ha_dhcp: true -ha_integration_type: integration +ha_integration_type: hub --- The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. diff --git a/source/_integrations/jellyfin.markdown b/source/_integrations/jellyfin.markdown index d695dc23687..732d1347f4b 100644 --- a/source/_integrations/jellyfin.markdown +++ b/source/_integrations/jellyfin.markdown @@ -2,14 +2,21 @@ title: Jellyfin description: Instructions on how to integrate the Jellyfin integration into Home Assistant. ha_category: + - Media Player - Media Source + - Sensor ha_release: '2021.12' ha_iot_class: Local Polling ha_codeowners: - '@j-stienstra' + - '@ctalkington' ha_config_flow: true ha_domain: jellyfin -ha_integration_type: integration +ha_platforms: + - diagnostics + - media_player + - sensor +ha_integration_type: service --- The Jellyfin integration exposes a [Jellyfin](https://jellyfin.org/) server as a Media Source in Home Assistant. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index ba10dfebaf2..d19917800b5 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -40,7 +40,7 @@ ha_platforms: - switch - weather ha_config_flow: true -ha_integration_type: integration +ha_integration_type: hub --- The [KNX](https://www.knx.org) integration for Home Assistant allows you to connect to KNX/IP devices. @@ -1661,6 +1661,10 @@ entity_category: required: false type: string default: None +device_class: + description: Sets the [class of the device](/integrations/switch/), changing the device state and icon that is displayed on the frontend. + required: false + type: string {% 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. diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index a8701a7ebf3..e6343c9e10a 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -5,26 +5,119 @@ ha_category: - Button - Notifications - Number + - Select + - Sensor + - Switch ha_iot_class: Local Polling ha_release: 0.49 ha_codeowners: - '@robbiet480' - '@frenck' + - '@bachya' ha_domain: lametric ha_platforms: - button + - diagnostics - notify - number -ha_integration_type: integration + - select + - sensor + - switch +ha_integration_type: device ha_config_flow: true ha_ssdp: true ha_dhcp: true +ha_quality_scale: platinum --- [LaMetric TIME](https://lametric.com/) is a smart clock that can be used to access applications, listen to web radio and display notifications. {% include integrations/config_flow.md %} +## Services + +The LaMetric integration provides services to interact with your LaMetric +device(s). Those service can be called in, for example, automations. + +### Service `lametric.chart` + +The {% my developer_call_service service="lametric.chart" title="`lametric.chart`" %} +service allows you to display a little chart to your LaMetric. + +{% my developer_call_service badge service="lametric.chart" %} + +{% configuration "lametric.chart" %} +device_id: + description: The ID of the device to send the message to. + required: true + type: string +data: + description: The data points in the chart, as a list of numbers. For example `[1, 2, 3, 2, 1]`. + required: true + type: list +cycles: + description: "Defines how long the notification will be displayed. Set to `0` to require manual dismissal." + required: false + type: integer + default: 1 +priority: + description: "Defines the priority of the notification. Allowed values are `info`, `warning`, and `critical`." + required: false + type: string + default: info +icon_type: + description: "Defines the nature of notification. Allowed values are `none`, `info`, and `alert`." + required: false + type: string + default: none +sound: + description: "Defines the sound of the notification. Allowed are listed [below](#list-of-notification-sounds)." + required: false + type: string +{% endconfiguration %} + +### Service `lametric.message` + +The {% my developer_call_service service="lametric.message" title="`lametric.message`" %} +service allows you to send a message to your LaMetric. These +messages can be enrichted with icons and sounds. + +{% my developer_call_service badge service="lametric.message" %} + +{% configuration "lametric.message" %} +device_id: + description: The ID of the device to send the message to. + required: true + type: string +message: + description: The message to send to the LaMetric device. + required: true + type: string +icon: + description: "An icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)." + required: false + type: string +cycles: + description: "Defines how long the notification will be displayed. Set to `0` to require manual dismissal." + required: false + type: integer + default: 1 +priority: + description: "Defines the priority of the notification. Allowed values are `info`, `warning`, and `critical`." + required: false + type: string + default: info +icon_type: + description: "Defines the nature of notification. Allowed values are `none`, `info`, and `alert`." + required: false + type: string + default: none +sound: + description: "Defines the sound of the notification. Allowed are listed [below](#list-of-notification-sounds)." + required: false + type: string +{% endconfiguration %} + ## Notifications You can send notifications to your LaMetric device using @@ -38,7 +131,7 @@ called "My LaMetric", the service would become `notify.my_lametric`. The notification service call against an LaMetric device can take the following, additional, optional parameters: -{% configuration %} +{% configuration "notification" %} icon: description: "An icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)." required: false diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index c8813bc14c3..3d116dc98be 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -13,7 +13,7 @@ ha_platforms: - diagnostics - sensor ha_config_flow: true -ha_integration_type: integration +ha_integration_type: service --- The `launch_library` sensor will provide you with information about the next planned space launch and SpaceX Starship event. diff --git a/source/_integrations/legrand.markdown b/source/_integrations/legrand.markdown index f7bf94dec16..4676b3c62ef 100644 --- a/source/_integrations/legrand.markdown +++ b/source/_integrations/legrand.markdown @@ -13,9 +13,12 @@ ha_category: - Switch - Weather ha_domain: legrand +ha_integration_type: virtual +ha_supporting_domain: netatmo +ha_supporting_integration: Netatmo +ha_release: '0.20' ha_codeowners: - '@cgtobi' -ha_integration_type: integration ha_config_flow: true ha_platforms: - camera @@ -28,9 +31,6 @@ ha_platforms: - switch ha_iot_class: Cloud Polling ha_homekit: true -ha_supporting_domain: netatmo -ha_supporting_integration: Netatmo -ha_release: '0.20' --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index 38a0fc7e597..83737c6166a 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -12,8 +12,10 @@ ha_homekit: true ha_platforms: - binary_sensor - button + - diagnostics - light - select + - sensor ha_integration_type: integration ha_codeowners: - '@bdraco' @@ -66,6 +68,28 @@ To determine whether or not a HEV cycle is currently running, Home Assistant exp | `power` | Start a HEV cycle (`True`) or stop a cycle (`False`). | `duration` | Duration (in seconds) for the HEV cycle. The default duration of two hours (7200 seconds) is used if this attribute is omitted. +## Sensors + +The following sensors are available depending on the LIFX model: + +| Sensor | Description | +| ------ | ----------- | +| Clean cycle | Indicates whether a HEV cycle is currently active on a LIFX Clean bulb | +| Infrared brightness | Controls the infrared brightness amount on a LIFX Nightvision bulb | +| RSSI | Indicates the current WiFi signal strength on any LIFX bulb (disabled by default) | + +Note that these sensors are only updated every 30 seconds and may not reflect the current state if changes are made externally to Home Assistant. + +## Themes + +Home Assistant provides a collection of predefined themes for LIFX multizone lights, each designed to mimic the theme of the same name from the LIFX smartphone app. + +To apply a theme interactively, use the theme selection drop-down box found on the device configuration screen. + +To apply a theme as part of an automation, use the `select.select_option` service call. You can also apply a theme when calling the `lifx.effect_move` service. See the **Light effects** section below for more details, including how to set a custom theme for that effect. + +The following themes are available: `autumn`, `blissful`, `cheerful`, `dream`, `energizing`, `epic`, `exciting`, `focusing`, `halloween`, `hanukkah`, `holly`, `independence_day`, `intense`, `mellow`, `peaceful`, `powerful`, `relaxing`, `santa`, `serene`, `soothing`, `sports`, `spring`, `tranquil`, `warming`. + ## Light effects The LIFX platform supports several software-controlled light effects and one hardware based effect. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`](/integrations/light/#service-lightturn_on) service, for example like this: @@ -100,13 +124,17 @@ script:          change: 35 ``` -The `lifx.effect_move` effect is hardware effect that is only available on LIFX multizone devices like the LIFX Z, Lightstrip or Beam. Note that if all the LEDs of the multizone device are set to the same color, the effect will not be visible. The effect can be stopped and started regardless of the power state of the device, but the default is to turn the device on when starting the effect. Set the `power_on` attribute of the `lifx.effect_move` service to `false` to override the default. +### Hardware effects + +The Flame (`lifx_effect_flame`), Morph (`lifx.effect_morph`) and Move (`lifx.effect_move`) effects are hardware-based and only work on specific LIFX devices. Flame and Morph are available on the LIFX Tile and Candle, while the Move effect requires a LIFX Z, Lightstrip, or Beam. + +All hardware-based effects can be stopped and started regardless of the device's power state, but the default behavior for each service is to turn the device on when starting an effect. Set the `power_on` attribute of the service to `false` to override this default. All the available light effects and their options are listed below. ### Service `lifx.effect_pulse` -Run a flash effect by changing to a color and then back. +Run a software-based flash effect by changing to a color and then back. | Service data attribute | Description | | ---------------------- | ----------- | @@ -121,7 +149,7 @@ Run a flash effect by changing to a color and then back. ### Service `lifx.effect_colorloop` -Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. +Run a software-based effect that continuously loops colors around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. | Service data attribute | Description | | ---------------------- | ----------- | @@ -133,9 +161,35 @@ Run an effect with colors looping around the color wheel. All participating ligh | `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359). | `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). +### Service `lifx.effect_flame` + +Run a hardware-based effect on LIFX matrix devices that creates a flame effect on the device. The device will be powered on by default, but this can be overridden by setting `power_on` to `false`. The `speed` attribute controls the speed of the flames. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of matrix lights. +| `speed` | Duration in seconds for the effect to travel the length of the device (min: 1s, max: 25s) +| `power_on` | Whether to turn the light on before starting the effect (optional, default: true) + +### Service `lifx.effect_morph` + +Run a hardware-based effect on LIFX matrix devices that animates blobs of colors across the device. The `speed` attribute controls the speed of the movement. + +You must provide a `palette` or `theme` to use for the effect, but not both. The `palette` attribute allows you to select the colors used by the effect, while the `theme` attribute allows you to select one of the pre-configured themes which match those found in the LIFX smartphone app. + +The device will be powered on by default, but this can be overridden by setting `power_on` to `false`. + +| Service data attribute | Description | +| ---------------------- | ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of matrix lights. +| `speed` | Duration in seconds for the effect to travel the length of the device (min: 1s, max: 25s) +| `palette` | A list of at least 2 and at most 16 HSBK values to use for this effect. +| `theme` | The theme to use for the effect. Must be one of: `autumn`, `blissful`, `cheerful`, `dream`, `energizing`, `epic`, `exciting`, `focusing`, `halloween`, `hanukkah`, `holly`, `independence` `day`, `intense`, `mellow`, `peaceful`, `powerful`, `relaxing`, `santa`, `serene`, `soothing`, `sports`, `spring`, `tranquil`, `warming`. +| `power_on` | Whether to turn the light on before starting the effect (optional, default: true) + ### Service `lifx.effect_move` -A harware-based effect available on LIFX multizone devices that creates a movement animation of the colors currently set on the device. The direction and speed of the animation are controlled by the `speed` and `direction` attributes. You can change the colors of the effect while it is running using the `lifx.set_state` service. +Run a hardware-based effect on LIFX multizone devices that move the current colors on the device in a particular direction. The direction and speed of the animation are controlled by the `speed` and `direction` attributes. You can change the effect's colors while running using the `lifx.set_state` service. The effect will not be visible if all LEDs on the device are set to the same color and is ignored by unsupported devices. @@ -144,6 +198,7 @@ The effect will not be visible if all LEDs on the device are set to the same col | `entity_id` | String or list of strings that point at `entity_id`s of multizone lights. | `speed` | Duration in seconds for the effect to travel the length of the device (min: 0.1s, max: 60s) | `direction` | The direction in which the effect will travel, either "right" or "left" (default: right) +| `theme` | The name of a pre-defined theme to apply to the multizone device before starting the effect. | `power_on` | Whether to turn the light on before starting the effect (optional, default: true) ### Service `lifx.effect_stop` diff --git a/source/_integrations/logger.markdown b/source/_integrations/logger.markdown index 6d852e3d606..edd69d1c10f 100644 --- a/source/_integrations/logger.markdown +++ b/source/_integrations/logger.markdown @@ -79,7 +79,6 @@ where **namespace** is the ** currently logging. description: Default log level. See [log_level](#log-levels). required: false type: string - default: debug logs: description: List of integrations and their log level. required: false diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index e661fb863af..162947d9f30 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -15,7 +15,7 @@ ha_domain: luftdaten ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: device --- The Sensor.Communtiy integration will query the open data API of [Sensor.Community](https://sensor.community) to monitor air quality and other weather data from a specific (self build) sensor station. diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 44e4756145f..ab278dd3fba 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -4,6 +4,7 @@ description: Instructions on how to use Lutron Caseta devices with Home Assistan featured: true ha_category: - Binary Sensor + - Button - Cover - Fan - Hub @@ -22,6 +23,7 @@ ha_zeroconf: true ha_homekit: true ha_platforms: - binary_sensor + - button - cover - diagnostics - fan @@ -128,8 +130,6 @@ For non-dimmable lights or switched loads, see the switch section on this page. For more information on working with lights in Home Assistant, see the [Lights component](/integrations/light/). -Available services: `light.turn_on`, `light.turn_off` and `light.toggle`. The `light.turn_on` service supports attributes `brightness`, `brightness_pct` and `transition`. - ## Scene The Lutron Caseta scene platform allows you to control your Smart Bridge Scenes that are created in the Lutron mobile app. @@ -138,9 +138,7 @@ After setup, scenes will appear in Home Assistant using an `entity_id` based on For more information on working with scenes in Home Assistant, see the [Scenes component](/integrations/scene/). -Scenes are not currently supported on RA3 and QSX models. - -Available services: `scene.turn_on`. +Scenes are not directly supported on RA3 and QSX models, however the button platform (see below) can be used to activate scenes for these systems. ## Switch @@ -150,16 +148,12 @@ For dimmable lights including wall and plug-in dimmers, see the light section on For more information on working with switches in Home Assistant, see the [Switches component](/integrations/switch/). -Available services: `switch.turn_on` and `switch.turn_off`. - ## Fan After setup, fans will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light switch called 'Master Bedroom Ceiling Fan' will appear in Home Assistant as `fan.master_bedroom_ceiling_fan`. For more information on working with fans in Home Assistant, see the [Fans component](/components/fan/). -Available services: `fan.turn_on`, `fan.turn_off`, and `fan.set_speed`. - ## Sensor Occupancy sensors can be added to a Lutron Caseta system to trigger events when an area becomes vacant and, optionally, occupied. However, Lutron systems report occupancy and vacancy statuses only in *occupancy groups* -- that is, groups of one or more sensors. @@ -174,6 +168,13 @@ Because Lutron Caseta devices automatically report state to Home Assistant (rath For more information on working with binary sensors in Home Assistant, see the [Binary Sensors Component](/components/binary_sensor/) +## Button + +Button Entities are created for each Keypad button and Pico Remote button present within the system. +Radio RA3 and HomeWorks QSX systems can use these button entities to activate scenes that are defined within the Lutron system. + +For more information on working with buttons in Home Assistant, see the [Buttons integration](/integrations/button/). + ## Pico and Shade Remotes Pico and Shade remotes are supported on the Smart Bridge (L-BDG2-WH), Smart Bridge PRO (L-BDGPRO2-WH), and RA2 Select (RR-SEL-REP2-BL) models. diff --git a/source/_integrations/luxaflex.markdown b/source/_integrations/luxaflex.markdown index 0d0f2dc076f..18eec7c1192 100644 --- a/source/_integrations/luxaflex.markdown +++ b/source/_integrations/luxaflex.markdown @@ -5,27 +5,29 @@ ha_category: - Button - Cover - Scene + - Select - Sensor ha_domain: luxaflex +ha_integration_type: virtual +ha_supporting_domain: hunterdouglas_powerview +ha_supporting_integration: Hunter Douglas PowerView +ha_release: 0.15 ha_codeowners: - '@bdraco' - '@kingy444' - '@trullock' -ha_integration_type: integration ha_config_flow: true ha_platforms: - button - cover - diagnostics - scene + - select - sensor ha_iot_class: Local Polling -ha_zeroconf: true -ha_homekit: true ha_dhcp: true -ha_supporting_domain: hunterdouglas_powerview -ha_supporting_integration: Hunter Douglas PowerView -ha_release: 0.15 +ha_homekit: true +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/map.markdown b/source/_integrations/map.markdown index de079f9a409..3702fe90909 100644 --- a/source/_integrations/map.markdown +++ b/source/_integrations/map.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.56 ha_quality_scale: internal ha_domain: map -ha_integration_type: integration +ha_integration_type: system --- This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/integrations/device_tracker/) documentation. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: diff --git a/source/_integrations/marantz.markdown b/source/_integrations/marantz.markdown index c04acbb6c0e..23f1eed96d2 100644 --- a/source/_integrations/marantz.markdown +++ b/source/_integrations/marantz.markdown @@ -4,18 +4,18 @@ description: Connect and control your Marantz devices using the Denon AVR Networ ha_category: - Media Player ha_domain: marantz +ha_integration_type: virtual +ha_supporting_domain: denonavr +ha_supporting_integration: Denon AVR Network Receivers +ha_release: 0.7.2 ha_codeowners: - '@ol-iver' - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - media_player ha_iot_class: Local Polling ha_ssdp: true -ha_supporting_domain: denonavr -ha_supporting_integration: Denon AVR Network Receivers -ha_release: 0.7.2 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/martec.markdown b/source/_integrations/martec.markdown index cd4679f478d..a108bd80c38 100644 --- a/source/_integrations/martec.markdown +++ b/source/_integrations/martec.markdown @@ -4,18 +4,18 @@ description: Connect and control your Martec devices using the Motion Blinds int ha_category: - Cover ha_domain: martec +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/melcloud.markdown b/source/_integrations/melcloud.markdown index 20dcb215e8b..21ea026aff3 100644 --- a/source/_integrations/melcloud.markdown +++ b/source/_integrations/melcloud.markdown @@ -62,6 +62,7 @@ The following attributes are available for `sensor` platform entities: - Room temperature - Energy - The total consumed energy in kWh. **Not supported by all models.** +- Daily energy - Energy consumption within a 24h window in kWh. This reading resets at midnight on the timezone of the MELCloud service. The exact time needs to be determined by following the sensor value until a reset is detected. ## Air-to-Water device diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 6b45731b1b5..7a6a6612679 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -70,4 +70,8 @@ round_digits: required: false type: integer default: 2 +unique_id: + description: Unique id to be able to configure the entity in the UI. + required: false + type: string {% endconfiguration %} diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index fa7b1d87c18..28407afa11b 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -364,7 +364,7 @@ binary_sensors: required: false type: string input_type: - description: type of address (discrete_input/coil) + description: type of address (discrete_input/coil/holding) required: false default: coil type: string @@ -408,6 +408,18 @@ modbus: target_temp_register: 2782 temp_step: 1 temperature_unit: C + - name: "Bedroom Air Condition" + address: 10 + target_temp_register: 10 + hvac_mode_register: + address: 11 + values: + auto: 0 + cool: 1 + heat: 2 + fan_only: 3 + dry: 4 + hvac_onoff_register: 11 ``` {% configuration %} @@ -454,6 +466,56 @@ climates: required: false type: string default: C + hvac_mode_register: + description: Definition of a register holding and controlling an HVAC mode + required: false + type: [map] + keys: + address: + description: The address of the HVAC mode register. + required: true + type: integer + values: + description: A mapping between the register values and HVAC modes + required: true + type: [map] + keys: + "off": + description: The register value corresponding to HVAC Off mode. + required: false + type: integer + heat: + description: The register value corresponding to HVAC Heat mode. + required: false + type: integer + cool: + description: The register value corresponding to HVAC Cool mode. + required: false + type: integer + auto: + description: The register value corresponding to HVAC Auto mode. + required: false + type: integer + dry: + description: The register value corresponding to HVAC Dry mode. + required: false + type: integer + fan_only: + description: The register value corresponding to HVAC Fan only mode. + required: false + type: integer + heat_cool: + description: The register value corresponding to HVAC Heat/Cool mode. + required: false + type: integer + hvac_onoff_register: + description: Address of a register holding and controlling the On/Off state of the climate device. + When zero is read from this register, the HVAC state is set to Off, otherwise the `hvac_mode_register` + dictates the state of the HVAC. If no such register is defined, it defaults to Auto. + When the HVAC mode is set to Off, the value 0 is written to the register, otherwise the + value 1 is written. + required: false + type: integer unique_id: description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. required: false @@ -466,6 +528,12 @@ climates: | ------- | ----------- | | set_temperature | Set Temperature. Requires `value` to be passed in, which is the desired target temperature. `value` should be in the same type as `data_type` | +### Service `modbus.set_hvac_mode` + +| Service | Description | +| ------- | ----------- | +| set_hvac_mode | Set HVAC mode. Requires `value` to be passed in, which is the desired mode. `value` should be a valid HVAC mode. A mapping between the desired state and the value to be written to the HVAC mode register must exist. Calling this service will also set the On/Off register to an appropriate value, if such a register is defined. | + ## Configuring platform cover The `modbus` cover platform allows you to control covers (such as blinds, a roller shutter, or a garage door). diff --git a/source/_integrations/moon.markdown b/source/_integrations/moon.markdown index 58543b71028..e5ec9508f68 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -13,7 +13,7 @@ ha_domain: moon ha_platforms: - sensor ha_config_flow: true -ha_integration_type: integration +ha_integration_type: service --- The Moon integration tracks the phases of the moon. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index bded17ba423..1004494a61e 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -3,6 +3,7 @@ title: MQTT description: Instructions on how to setup MQTT within Home Assistant. ha_category: - Hub + - Update featured: true ha_release: pre 0.7 ha_iot_class: Local Push @@ -27,27 +28,758 @@ ha_platforms: - sensor - siren - switch + - tag + - update + - vacuum ha_integration_type: integration --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. -Your first step to get MQTT and Home Assistant working is to choose a [broker](/docs/mqtt/broker). - {% include integrations/config_flow.md %} +Your first step to get MQTT and Home Assistant working is to choose a broker. + +## Choose a MQTT broker + +### Run your own + +The most private option is running your own MQTT broker. + +The recommended setup method is to use the [Mosquitto MQTT broker add-on](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/DOCS.md). + +
+ +
+ +Neither ActiveMQ MQTT broker nor the RabbitMQ MQTT Plugin are supported, use a known working broker like Mosquitto instead. +There are [at least two](https://issues.apache.org/jira/browse/AMQ-6360) [issues](https://issues.apache.org/jira/browse/AMQ-6575) with the ActiveMQ MQTT broker which break MQTT message retention. + +
+ +### Connect to a public broker + +The Mosquitto project runs a [public broker](https://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. To use the public mosquitto broker, configure the MQTT integration to connect to broker `test.mosquitto.org` on port 1183 or 8883. + +
+ +If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add `certificate: auto` to your broker configuration and restart Home Assistant. + +
+ +## Broker configuration + +MQTT broker settings are configured when the MQTT integration is first setup, and can be changed if needed. To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT". + ### Advanced broker configuration -Some broker configuration options can't be set via the user interface, but require changes to your `configuration.yaml` file. See [advanced broker configuration](/docs/mqtt/broker/#advanced-broker-configuration) for all configuration variables. +Advanced broker configuration options include setting a custom client ID, setting a client certificate and key for authentication and enabling TLS validation of the brokers certificate for. To access the advanced settings, open the MQTT broker settings, switch on `Advanced options` and click `Next`. The advanced options will be shown by default if there are advanced settings active already. -## Additional features +#### Alternative client ID -- [Certificate](/docs/mqtt/certificate/) -- [Discovery](/docs/mqtt/discovery/) -- [Publish & Dump services](/docs/mqtt/service/) -- [Birth and last will messages](/docs/mqtt/birth_will/) -- [Testing your setup](/docs/mqtt/testing/) -- [Logging](/docs/mqtt/logging/) +You can set a custom MQTT client ID, this can help when debugging. Mind that the client ID must be unique. Leave this settings default if you want Home Assistant to generate a unique ID. + +#### Keep alive + +The time in seconds between sending keep alive messages for this client. The default is 60 seconds. The keep alive setting should be minimal 15 seconds. + +#### Broker certificate validation + +To enable a secure the broker certificate should be validated. If your broker uses a trusted certificate then choose `auto`. This will allow validation against certifite CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM encoded CA-certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate. +If the server certificate does not match the hostname then validation will fail. To allow a connection without the verification of the hostname, turn the `Ignore broker certificate validation` switch on. + +#### Securing the the connection + +With a secure broker connection it is possible to use a client certificate for authentication. To set the client certificate and private key turn on the option `Use a client certificate` and click "Next" to show the controls to upload the files. Only a PEM encoded client certificates together with a PEM encoded private key can be uploaded. Make sure the private key has no password set. + +
+ +A configured client certificate will only be active if broker certificate validation is enabled. + +
+ +## Configure MQTT options + +To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT". Click `NEXT` to open the MQTT options page. + +### Discovery options + +MQTT discovery is enabled by default. Discovery can be turned off. The prefix for the discovery topic (default `homeassistant`) can be changed. +See the [MQTT Discovery section](#mqtt-discovery) + +### Birth and last will messages + +Home Assistant's MQTT integration supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about a disconnected client. Please note that the LWT message will be sent both in case of a clean (e.g. Home Assistant shutting down) and in case of an unclean (e.g. Home Assistant crashing or losing its network connection) disconnect. + +By default, Home Assistant sends `online` and `offline` to `homeassistant/status`. + +MQTT Birth and Last Will messages can be customized or disabled from the UI. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next". + +## Testing your setup + +The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below: + +```bash +mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" +``` + +Another way to send MQTT messages manually is to use the "MQTT" integration in the frontend. Choose "Settings" on the left menu, click "Devices & Services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" . + +```bash + home-assistant/switch/1/power +``` + +and in the Payload field + +```bash + ON +``` + +In the "Listen to a topic" field, type `#` to see everything, or "home-assistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: + +```bash +Message 23 received on home-assistant/switch/1/power/stat/POWER at 12:16 PM: +ON +QoS: 0 - Retain: false +Message 22 received on home-assistant/switch/1/power/stat/RESULT at 12:16 PM: +{ + "POWER": "ON" +} +QoS: 0 - Retain: false +``` + +For reading all messages sent on the topic `home-assistant` to a broker running on localhost: + +```bash +mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" +``` + +## MQTT Discovery + +The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/integrations/http/#binary-sensor) and the [HTTP sensor](/integrations/http/#sensor). To prevent multiple identical entries if a device reconnects, a unique identifier is necessary. Two parts are required on the device side: The configuration topic which contains the necessary device type and unique identifier, and the remaining device configuration without the device type. + +{% details "Platforms supported by MQTT discovery" %} + +- [Alarm control panel](/integrations/alarm_control_panel.mqtt/) +- [Binary sensor](/integrations/binary_sensor.mqtt/) +- [Button](/integrations/button.mqtt/) +- [Camera](/integrations/camera.mqtt/) +- [Cover](/integrations/cover.mqtt/) +- [Device Tracker](/integrations/device_tracker.mqtt/) +- [Device Trigger](/integrations/device_trigger.mqtt/) +- [Fan](/integrations/fan.mqtt/) +- [Humidifier](/integrations/humidifier.mqtt/) +- [Climate/HVAC](/integrations/climate.mqtt/) +- [Light](/integrations/light.mqtt/) +- [Lock](/integrations/lock.mqtt/) +- [Number](/integrations/number.mqtt/) +- [Scene](/integrations/scene.mqtt/) +- [Select](/integrations/select.mqtt/) +- [Sensor](/integrations/sensor.mqtt/) +- [Siren](/integrations/siren.mqtt/) +- [Switch](/integrations/switch.mqtt/) +- [Update](/integrations/update.mqtt/) +- [Tag Scanner](/integrations/tag.mqtt/) +- [Vacuum](/integrations/vacuum.mqtt/) + +{% enddetails %} + +MQTT discovery is enabled by default, but can be disabled. The prefix for the discovery topic (default `homeassistant`) can be changed. +See the [MQTT Options sections](#configure-mqtt-options) + +### Discovery messages + +#### Discovery topic + +The discovery topic needs to follow a specific format: + +```text +//[/]/config +``` + +- ``: One of the supported MQTT components, eg. `binary_sensor`. +- `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). +- ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). + +The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. + +Best practice for entities with a `unique_id` is to set `` to `unique_id` and omit the ``. + +#### Discovery payload + +The payload must be a serialized JSON dictionary and will be checked like an entry in your `configuration.yaml` file if a new device is added, with the exception that unknown configuration keys are allowed but ignored. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the payload. The reason for allowing unknown documentation keys is allow some backwards compatibility, software generating MQTT discovery messages can then be used with older Home Assistant versions which will simply ignore new features. + +Subsequent messages on a topic where a valid payload has been received will be handled as a configuration update, and a configuration update with an empty payload will cause a previously discovered device to be deleted. + +A base topic `~` may be defined in the payload to conserve memory when the same topic base is used multiple times. +In the value of configuration variables ending with `_topic`, `~` will be replaced with the base topic, if the `~` occurs at the beginning or end of the value. + +Configuration variable names in the discovery payload may be abbreviated to conserve memory when sending a discovery message from memory constrained devices. + +{% details "Supported abbreviations" %} + +```txt + 'act_t': 'action_topic', + 'act_tpl': 'action_template', + 'atype': 'automation_type', + 'aux_cmd_t': 'aux_command_topic', + 'aux_stat_tpl': 'aux_state_template', + 'aux_stat_t': 'aux_state_topic', + 'av_tones': 'available_tones', + 'avty' 'availability', + 'avty_mode': 'availability_mode', + 'avty_t': 'availability_topic', + 'avty_tpl': 'availability_template', + 'away_mode_cmd_t': 'away_mode_command_topic', + 'away_mode_stat_tpl': 'away_mode_state_template', + 'away_mode_stat_t': 'away_mode_state_topic', + 'b_tpl': 'blue_template', + 'bri_cmd_t': 'brightness_command_topic', + 'bri_cmd_tpl': 'brightness_command_template', + 'bri_scl': 'brightness_scale', + 'bri_stat_t': 'brightness_state_topic', + 'bri_tpl': 'brightness_template', + 'bri_val_tpl': 'brightness_value_template', + 'clr_temp_cmd_tpl': 'color_temp_command_template', + 'bat_lev_t': 'battery_level_topic', + 'bat_lev_tpl': 'battery_level_template', + 'chrg_t': 'charging_topic', + 'chrg_tpl': 'charging_template', + 'clr_temp_cmd_t': 'color_temp_command_topic', + 'clr_temp_stat_t': 'color_temp_state_topic', + 'clr_temp_tpl': 'color_temp_template', + 'clr_temp_val_tpl': 'color_temp_value_template', + 'cln_t': 'cleaning_topic', + 'cln_tpl': 'cleaning_template', + 'cmd_off_tpl': 'command_off_template', + 'cmd_on_tpl': 'command_on_template', + 'cmd_t': 'command_topic', + 'cmd_tpl': 'command_template', + 'cod_arm_req': 'code_arm_required', + 'cod_dis_req': 'code_disarm_required', + 'cod_trig_req': 'code_trigger_required', + 'curr_temp_t': 'current_temperature_topic', + 'curr_temp_tpl': 'current_temperature_template', + 'dev': 'device', + 'dev_cla': 'device_class', + 'dock_t': 'docked_topic', + 'dock_tpl': 'docked_template', + 'e': 'encoding', + 'ent_cat': 'entity_category', + 'ent_pic': 'entity_picture', + 'err_t': 'error_topic', + 'err_tpl': 'error_template', + 'fanspd_t': 'fan_speed_topic', + 'fanspd_tpl': 'fan_speed_template', + 'fanspd_lst': 'fan_speed_list', + 'flsh_tlng': 'flash_time_long', + 'flsh_tsht': 'flash_time_short', + 'fx_cmd_t': 'effect_command_topic', + 'fx_cmd_tpl': 'effect_command_template', + 'fx_list': 'effect_list', + 'fx_stat_t': 'effect_state_topic', + 'fx_tpl': 'effect_template', + 'fx_val_tpl': 'effect_value_template', + 'exp_aft': 'expire_after', + 'fan_mode_cmd_tpl': 'fan_mode_command_template', + 'fan_mode_cmd_t': 'fan_mode_command_topic', + 'fan_mode_stat_tpl': 'fan_mode_state_template', + 'fan_mode_stat_t': 'fan_mode_state_topic', + 'frc_upd': 'force_update', + 'g_tpl': 'green_template', + 'hold_cmd_tpl': 'hold_command_template', + 'hold_cmd_t': 'hold_command_topic', + 'hold_stat_tpl': 'hold_state_template', + 'hold_stat_t': 'hold_state_topic', + 'hs_cmd_t': 'hs_command_topic', + 'hs_stat_t': 'hs_state_topic', + 'hs_val_tpl': 'hs_value_template', + 'ic': 'icon', + 'init': 'initial', + 'hum_cmd_t': 'target_humidity_command_topic', + 'hum_cmd_tpl': 'target_humidity_command_template', + 'hum_stat_t': 'target_humidity_state_topic', + 'hum_stat_tpl': 'target_humidity_state_template', + 'json_attr': 'json_attributes', + 'json_attr_t': 'json_attributes_topic', + 'json_attr_tpl': 'json_attributes_template', + 'l_ver_t': 'latest_version_topic', + 'l_ver_tpl': 'latest_version_template', + 'max_mirs': 'max_mireds', + 'min_mirs': 'min_mireds', + 'max_temp': 'max_temp', + 'min_temp': 'min_temp', + 'max_hum': 'max_humidity', + 'min_hum': 'min_humidity', + 'mode_cmd_tpl': 'mode_command_template', + 'mode_cmd_t': 'mode_command_topic', + 'mode_stat_tpl': 'mode_state_template', + 'mode_stat_t': 'mode_state_topic', + 'modes': 'modes', + 'name': 'name', + 'obj_id': 'object_id', + 'off_dly': 'off_delay', + 'on_cmd_type': 'on_command_type', + 'opt': 'optimistic', + 'osc_cmd_t': 'oscillation_command_topic', + 'osc_cmd_tpl': 'oscillation_command_template', + 'osc_stat_t': 'oscillation_state_topic', + 'osc_val_tpl': 'oscillation_value_template', + 'pct_cmd_t': 'percentage_command_topic', + 'pct_cmd_tpl': 'percentage_command_template', + 'pct_stat_t': 'percentage_state_topic', + 'pct_val_tpl': 'percentage_value_template', + 'pl': 'payload', + 'pl_arm_away': 'payload_arm_away', + 'pl_arm_home': 'payload_arm_home', + 'pl_arm_custom_b': 'payload_arm_custom_bypass', + 'pl_arm_nite': 'payload_arm_night', + 'pl_avail': 'payload_available', + 'pl_cln_sp': 'payload_clean_spot', + 'pl_cls': 'payload_close', + 'pl_disarm': 'payload_disarm', + 'pl_home': 'payload_home', + 'pl_inst': 'payload_install', + 'pl_lock': 'payload_lock', + 'pl_loc': 'payload_locate', + 'pl_not_avail': 'payload_not_available', + 'pl_not_home': 'payload_not_home', + 'pl_off': 'payload_off', + 'pl_on': 'payload_on', + 'pl_open': 'payload_open', + 'pl_osc_off': 'payload_oscillation_off', + 'pl_osc_on': 'payload_oscillation_on', + 'pl_paus': 'payload_pause', + 'pl_stop': 'payload_stop', + 'pl_strt': 'payload_start', + 'pl_stpa': 'payload_start_pause', + 'pl_ret': 'payload_return_to_base', + 'pl_rst_hum': 'payload_reset_humidity', + 'pl_rst_mode': 'payload_reset_mode', + 'pl_rst_pct': 'payload_reset_percentage', + 'pl_rst_pr_mode': 'payload_reset_preset_mode', + 'pl_toff': 'payload_turn_off', + 'pl_ton': 'payload_turn_on', + 'pl_trig': 'payload_trigger', + 'pl_unlk': 'payload_unlock', + 'pos_clsd': 'position_closed', + 'pos_open': 'position_open', + 'pow_cmd_t': 'power_command_topic', + 'pow_stat_t': 'power_state_topic', + 'pow_stat_tpl': 'power_state_template', + 'pr_mode_cmd_t': 'preset_mode_command_topic', + 'pr_mode_cmd_tpl': 'preset_mode_command_template', + 'pr_mode_stat_t': 'preset_mode_state_topic', + 'pr_mode_val_tpl': 'preset_mode_value_template', + 'pr_modes': 'preset_modes', + 'r_tpl': 'red_template', + 'rel_s': 'release_summary', + 'rel_u': 'release_url', + 'ret': 'retain', + 'rgb_cmd_tpl': 'rgb_command_template', + 'rgb_cmd_t': 'rgb_command_topic', + 'rgb_stat_t': 'rgb_state_topic', + 'rgb_val_tpl': 'rgb_value_template', + 'send_cmd_t': 'send_command_topic', + 'send_if_off': 'send_if_off', + 'set_fan_spd_t': 'set_fan_speed_topic', + 'set_pos_tpl': 'set_position_template', + 'set_pos_t': 'set_position_topic', + 'pos_t': 'position_topic', + 'pos_tpl': 'position_template', + 'spd_rng_min': 'speed_range_min', + 'spd_rng_max': 'speed_range_max', + 'src_type': 'source_type', + 'stat_cla': 'state_class', + 'stat_clsd': 'state_closed', + 'stat_closing': 'state_closing', + 'stat_off': 'state_off', + 'stat_on': 'state_on', + 'stat_open': 'state_open', + 'stat_opening': 'state_opening', + 'stat_stopped': 'state_stopped', + 'stat_locked': 'state_locked', + 'stat_unlocked': 'state_unlocked', + 'stat_t': 'state_topic', + 'stat_tpl': 'state_template', + 'stat_val_tpl': 'state_value_template', + 'stype': 'subtype', + 'sup_duration': 'support_duration', + 'sup_vol': 'support_volume_set', + 'sup_feat': 'supported_features', + 'sup_off': 'supported_turn_off', + 'swing_mode_cmd_tpl': 'swing_mode_command_template', + 'swing_mode_cmd_t': 'swing_mode_command_topic', + 'swing_mode_stat_tpl': 'swing_mode_state_template', + 'swing_mode_stat_t': 'swing_mode_state_topic', + 'temp_cmd_tpl': 'temperature_command_template', + 'temp_cmd_t': 'temperature_command_topic', + 'temp_hi_cmd_tpl': 'temperature_high_command_template', + 'temp_hi_cmd_t': 'temperature_high_command_topic', + 'temp_hi_stat_tpl': 'temperature_high_state_template', + 'temp_hi_stat_t': 'temperature_high_state_topic', + 'temp_lo_cmd_tpl': 'temperature_low_command_template', + 'temp_lo_cmd_t': 'temperature_low_command_topic', + 'temp_lo_stat_tpl': 'temperature_low_state_template', + 'temp_lo_stat_t': 'temperature_low_state_topic', + 'temp_stat_tpl': 'temperature_state_template', + 'temp_stat_t': 'temperature_state_topic', + 'temp_unit': 'temperature_unit', + 'tilt_clsd_val': 'tilt_closed_value', + 'tilt_cmd_t': 'tilt_command_topic', + 'tilt_cmd_tpl': 'tilt_command_template', + 'tilt_inv_stat': 'tilt_invert_state', + 'tilt_max': 'tilt_max', + 'tilt_min': 'tilt_min', + 'tilt_opnd_val': 'tilt_opened_value', + 'tilt_opt': 'tilt_optimistic', + 'tilt_status_t': 'tilt_status_topic', + 'tilt_status_tpl': 'tilt_status_template', + 'tit': 'title', + 't': 'topic', + 'uniq_id': 'unique_id', + 'unit_of_meas': 'unit_of_measurement', + 'val_tpl': 'value_template', + 'whit_val_cmd_t': 'white_value_command_topic', + 'whit_val_scl': 'white_value_scale', + 'whit_val_stat_t': 'white_value_state_topic', + 'whit_val_tpl': 'white_value_template', + 'xy_cmd_t': 'xy_command_topic', + 'xy_stat_t': 'xy_state_topic', + 'xy_val_tpl': 'xy_value_template', +``` + +{% enddetails %} +{% details "Supported abbreviations for device registry configuration" %} + +```txt + 'cu': 'configuration_url' + 'cns': 'connections', + 'ids': 'identifiers', + 'name': 'name', + 'mf': 'manufacturer', + 'mdl': 'model', + 'hw': 'hw_version', + 'sw': 'sw_version', + 'sa': 'suggested_area', +``` +{% enddetails %} + +### Support by third-party tools + +The following software has built-in support for MQTT discovery: + +- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) +- [ebusd](https://github.com/john30/ebusd) +- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) +- [ESPHome](https://esphome.io) +- [ESPurna](https://github.com/xoseperez/espurna) +- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) +- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) +- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) +- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) +- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) +- [SmartHome](https://github.com/roncoa/SmartHome) +- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) +- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) +- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) +- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) +- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) +- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) +- [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt) +- [Zwave2Mqtt](https://github.com/OpenZWave/Zwave2Mqtt) (starting with 2.0.1) + + +### Discovery examples + +#### Motion detection (binary sensor) + +A motion detection device which can be represented by a [binary sensor](/integrations/binary_sensor.mqtt/) for your garden would send its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant. + +- Configuration topic: `homeassistant/binary_sensor/garden/config` +- State topic: `homeassistant/binary_sensor/garden/state` +- Payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}` +- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. + +To create a new sensor manually. + +```bash +mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}' +``` + +Update the state. + +```bash +mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON +``` + +Delete the sensor by sending an empty message. + + ```bash +mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '' +``` + +For more details please refer to the [MQTT testing section](/docs/mqtt/testing/). + +#### Sensors + +Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. + +- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` +- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` +- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` +- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` +- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` + +#### Entities with command topics + +Setting up a light, switch etc. is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/). + +- Configuration topic: `homeassistant/switch/irrigation/config` +- State topic: `homeassistant/switch/irrigation/state` +- Command topic: `homeassistant/switch/irrigation/set` +- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}` +- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. + +```bash +mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \ + -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}' +``` + +Set the state. + +```bash +mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON +``` + +#### Using abbreviations and base topic + +Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length. + +- Configuration topic: `homeassistant/switch/irrigation/config` +- Command topic: `homeassistant/switch/irrigation/set` +- State topic: `homeassistant/switch/irrigation/state` +- Configuration payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` + +#### Another example using abbreviations topic name and base topic + +Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-schema), with abbreviated configuration variable names: + +- Configuration topic: `homeassistant/light/kitchen/config` +- Command topic: `homeassistant/light/kitchen/set` +- State topic: `homeassistant/light/kitchen/state` +- Example state payload: `{"state": "ON", "brightness": 255}` +- Configuration payload: + + ```json + { + "~": "homeassistant/light/kitchen", + "name": "Kitchen", + "unique_id": "kitchen_light", + "cmd_t": "~/set", + "stat_t": "~/state", + "schema": "json", + "brightness": true + } + ``` + +#### Use object_id to influence the entity id + + +The entity id is automatically generated from the entity's name. All MQTT entity components optionally support providing an `object_id` which will be used instead if provided. + +- Configuration topic: `homeassistant/sensor/device1/config` +- Example configuration payload: + +```json +{ + "name":"My Super Device", + "object_id":"my_super_device", + "state_topic": "homeassistant/sensor/device1/state" + } +``` + +In the example above, the entity_id will be `sensor.my_super_device` instead of `sensor.device1`. + +## Manual configured MQTT items + +For most platforms it is also possible to manual set up MQTT items in `configuration.yaml`. Read more [about configuration in YAML](/docs/configuration/yaml). + +{% details "MQTT platforms that support setup via YAML" %} + +- [Alarm control panel](/integrations/alarm_control_panel.mqtt/) +- [Binary sensor](/integrations/binary_sensor.mqtt/) +- [Button](/integrations/button.mqtt/) +- [Camera](/integrations/camera.mqtt/) +- [Cover](/integrations/cover.mqtt/) +- [Device Tracker](/integrations/device_tracker.mqtt/) +- [Fan](/integrations/fan.mqtt/) +- [Humidifier](/integrations/humidifier.mqtt/) +- [Climate/HVACs](/integrations/climate.mqtt/) +- [Light](/integrations/light.mqtt/) +- [Lock](/integrations/lock.mqtt/) +- [Number](/integrations/number.mqtt/) +- [Scene](/integrations/scene.mqtt/) +- [Select](/integrations/select.mqtt/) +- [Sensor](/integrations/sensor.mqtt/) +- [Siren](/integrations/siren.mqtt/) +- [Switch](/integrations/switch.mqtt/) +- [Vacuum](/integrations/vacuum.mqtt/) + +{% enddetails %} + +## Using Templates + +The MQTT platform support templating. Read more [about using templates with the MQTT integration](/docs/configuration/templating/#using-templates-with-the-mqtt-integration). + +## MQTT Notifications + +The MQTT notification support is different than the other [notification](/integrations/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. + +**Call Service** section from **Developer Tools** -> **Services** allows you to send MQTT messages. Choose *mqtt.publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. + +```json +{"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0} +``` + +

+ +

+ +The same will work for automations. + +

+ +

+ + +### Examples + +#### REST API + +Using the [REST API](https://developers.home-assistant.io/docs/api/rest/) to send a message to a given topic. + +```bash +$ curl -X POST \ + -H "Authorization: Bearer ABCDEFGH" \ + -H "Content-Type: application/json" \ + -d '{"payload": "Test message from HA", "topic": "home/notification"}' \ + http://IP_ADDRESS:8123/api/services/mqtt/publish +``` + +#### Automations + +Use as [`script`](/integrations/script/) in automations. + +{% raw %} + +```yaml +automation: + alias: "Send me a message when I get home" + trigger: + platform: state + entity_id: device_tracker.me + to: "home" + action: + service: script.notify_mqtt + data: + target: "me" + message: "I'm home" + +script: + notify_mqtt: + sequence: + - service: mqtt.publish + data: + payload: "{{ message }}" + topic: home/"{{ target }}" + retain: true +``` + +{% endraw %} + +## Publish & Dump services + +The MQTT integration will register the service `mqtt.publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. + +### Service `mqtt.publish` + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `topic` | no | Topic to publish payload to. +| `topic_template` | no | Template to render as topic to publish payload to. +| `payload` | yes | Payload to publish. +| `payload_template` | yes | Template to render as payload value. +| `qos` | yes | Quality of Service to use. (default: 0) +| `retain` | yes | If message should have the retain flag set. (default: false) + +

+You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both. +

+ +```yaml +topic: home-assistant/light/1/command +payload: on +``` + +{% raw %} + +```yaml +topic: home-assistant/light/1/state +payload_template: "{{ states('device_tracker.paulus') }}" +``` + +{% endraw %} + +{% raw %} + +```yaml +topic_template: "home-assistant/light/{{ states('sensor.light_active') }}/state" +payload_template: "{{ states('device_tracker.paulus') }}" +``` + +{% endraw %} + +`payload` must be a string. If you want to send JSON then you need to format/escape it properly. Like: + +```yaml +topic: home-assistant/light/1/state +payload: "{\"Status\":\"off\", \"Data\":\"something\"}" +``` + +Example of how to use `qos` and `retain`: + +```yaml +topic: home-assistant/light/1/command +payload: on +qos: 2 +retain: true +``` + +### Service `mqtt.dump` + +Listen to the specified topic matcher and dumps all received messages within a specific duration into the file `mqtt_dump.txt` in your configuration folder. This is useful when debugging a problem. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `topic` | no | Topic to dump. Can contain a wildcard (`#` or `+`). +| `duration` | yes | Duration in seconds that we will listen for messages. Default is 5 seconds. + +```yaml +topic: openzwave/# +``` + +## Logging + +The [logger](/integrations/logger/) integration allows the logging of received MQTT messages. + +```yaml +# Example configuration.yaml entry +logger: + default: warning + logs: + homeassistant.components.mqtt: debug +``` ## Event `event_mqtt_reloaded` diff --git a/source/_integrations/nam.markdown b/source/_integrations/nam.markdown index 6ad7171e542..b21d249a435 100644 --- a/source/_integrations/nam.markdown +++ b/source/_integrations/nam.markdown @@ -15,7 +15,7 @@ ha_platforms: - sensor ha_quality_scale: platinum ha_zeroconf: true -ha_integration_type: integration +ha_integration_type: device --- The Nettigo Air Monitor integration allows you to read temperature, humidity, pressure and air quality data from Nettigo Air Monitor devices. [Nettigo Air Monitor](https://air.nettigo.pl/?setlang=en) is a DIY air quality monitoring system with open source firmware, based on an open hardware project. diff --git a/source/_integrations/nexity.markdown b/source/_integrations/nexity.markdown index 5359cd7329d..75cfc0bdf22 100644 --- a/source/_integrations/nexity.markdown +++ b/source/_integrations/nexity.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: nexity +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/nextdns.markdown b/source/_integrations/nextdns.markdown index e38f2384cb0..0f2e26d1e9a 100644 --- a/source/_integrations/nextdns.markdown +++ b/source/_integrations/nextdns.markdown @@ -15,7 +15,7 @@ ha_platforms: - diagnostics - sensor - switch -ha_integration_type: integration +ha_integration_type: service ha_quality_scale: platinum --- diff --git a/source/_integrations/nobo_hub.markdown b/source/_integrations/nobo_hub.markdown index dd54eaed586..b8ce9632dc9 100644 --- a/source/_integrations/nobo_hub.markdown +++ b/source/_integrations/nobo_hub.markdown @@ -12,6 +12,7 @@ ha_codeowners: ha_domain: nobo_hub ha_platforms: - climate + - sensor ha_integration_type: integration --- @@ -24,6 +25,10 @@ on the back of the hub. If the hub is on a different network than Home Assistant {% include integrations/config_flow.md %} +# Heaters + +Each zone containing floor or wall mounted heaters is represented as an HVAC entity. + ## Operation modes Currently, you can see and change operation and preset for zones and set eco/comfort temperatures if you have @@ -50,3 +55,8 @@ Nobø system (perhaps related to frozen pipes due to frost in Nordic regions). "Away" temperature is fixed to 7°C and cannot be altered. On/off receivers will be off when the zone is in "Away" status. For more information, see the [Nobø Ecohub manual](https://help.nobo.no/en/user-manual/before-you-start/what-is-a-weekly-program/). + +# Nobø Switch + +Each Nobø Switch (SW4) is represented as a temperature sensor. If a switch is linked to a zone, the temperature is +also available as the current temperature of the HVAC entity. diff --git a/source/_integrations/notion.markdown b/source/_integrations/notion.markdown index 5e3725d2385..bc3f7e6e4d9 100644 --- a/source/_integrations/notion.markdown +++ b/source/_integrations/notion.markdown @@ -15,7 +15,7 @@ ha_platforms: - binary_sensor - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: hub --- The `Notion` component retrieves data from [Notion](https://getnotion.com) wireless diff --git a/source/_integrations/nutrichef.markdown b/source/_integrations/nutrichef.markdown index 4aa03dd3ad2..0188dbfd363 100644 --- a/source/_integrations/nutrichef.markdown +++ b/source/_integrations/nutrichef.markdown @@ -3,18 +3,18 @@ title: Nutrichef description: Connect and control your Nutrichef devices using the INKBIRD integration ha_category: - Sensor -ha_bluetooth: true ha_release: 2022.8 -ha_iot_class: Local Push +ha_domain: nutrichef +ha_integration_type: virtual +ha_supporting_domain: inkbird +ha_supporting_integration: INKBIRD +ha_bluetooth: true ha_codeowners: - '@bdraco' -ha_domain: nutrichef ha_config_flow: true ha_platforms: - sensor -ha_integration_type: integration -ha_supporting_domain: inkbird -ha_supporting_integration: INKBIRD +ha_iot_class: Local Push --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/octoprint.markdown b/source/_integrations/octoprint.markdown index 3366fefe87f..37c5e4c78ee 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -17,6 +17,7 @@ ha_ssdp: true ha_platforms: - binary_sensor - button + - camera - sensor ha_integration_type: integration --- @@ -79,13 +80,7 @@ Supported sensors: ## Camera -If the OctoPrint host is equipped with a web camera it is possible to add this as well using the [`MJPEG IP Camera`](/integrations/mjpeg) integration. Use `http://YOUR_OCTOPRINT_HOST_IP/webcam/?action=stream` for the MJPEG URL and `http://YOUR_OCTOPRINT_HOST_IP/webcam/?action=snapshot` as the still image URL. - - - -{% my config_flow_start badge domain="mjpeg" %} - - +The OctoPrint integration provides a camera feed if one is configured in OctoPrint. ## Buttons diff --git a/source/_integrations/oncue.markdown b/source/_integrations/oncue.markdown index 55d3f45a3b1..2437fd14983 100644 --- a/source/_integrations/oncue.markdown +++ b/source/_integrations/oncue.markdown @@ -9,6 +9,7 @@ ha_release: 2022.2 ha_config_flow: true ha_codeowners: - '@bdraco' + - '@peterager' ha_dhcp: true ha_domain: oncue ha_platforms: diff --git a/source/_integrations/open_meteo.markdown b/source/_integrations/open_meteo.markdown index 50fb5cdc64f..f69cd272d99 100644 --- a/source/_integrations/open_meteo.markdown +++ b/source/_integrations/open_meteo.markdown @@ -12,7 +12,7 @@ ha_domain: open_meteo ha_platforms: - diagnostics - weather -ha_integration_type: integration +ha_integration_type: service --- The Open-Meteo integration integrates the free weather forecast from diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index b5ead6caa89..51bb8696831 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -15,7 +15,7 @@ ha_platforms: - binary_sensor - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The `openuv` integration displays UV and Ozone data from [openuv.io](https://www.openuv.io/). diff --git a/source/_integrations/oralb.markdown b/source/_integrations/oralb.markdown new file mode 100644 index 00000000000..c90709eff95 --- /dev/null +++ b/source/_integrations/oralb.markdown @@ -0,0 +1,31 @@ +--- +title: Oral-B +description: Instructions on how to integrate Oral-B devices into Home Assistant. +ha_category: + - Sensor +ha_bluetooth: true +ha_release: 2022.11 +ha_iot_class: Local Push +ha_codeowners: + - '@bdraco' +ha_domain: oralb +ha_config_flow: true +ha_platforms: + - sensor +ha_integration_type: integration +--- + +Integrates [Oral-B](https://oralb.com/) devices into Home Assistant. + +{% include integrations/config_flow.md %} + +The Oral-B integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. + +## Supported devices + +- [IO 4 Series](https://oralb.com/en-us/products/electric-toothbrushes/oralbio) +- [IO 7 Series](https://oralb.com/en-us/products/electric-toothbrushes/oralbio) +- [IO 8 Series](https://oralb.com/en-us/products/electric-toothbrushes/oralbio) +- [IO 9 Series](https://oralb.com/en-us/products/electric-toothbrushes/oralbio) +- [Smart Series 7000](https://oralb.com/en-us/products/electric-toothbrushes/smart-7000-rechargeable-electric-toothbrush/) +- [Genius Series 9000](https://oralb.com/en-us/products/electric-toothbrushes/genius-9600-rechargeable-electric-toothbrush-white/) diff --git a/source/_integrations/pcs_lighting.markdown b/source/_integrations/pcs_lighting.markdown new file mode 100644 index 00000000000..d33cae5d642 --- /dev/null +++ b/source/_integrations/pcs_lighting.markdown @@ -0,0 +1,21 @@ +--- +title: PCS Lighting +description: Connect and control your PCS Lighting devices using the Universal Powerline Bus (UPB) integration +ha_category: + - Light + - Scene +ha_domain: pcs_lighting +ha_integration_type: virtual +ha_supporting_domain: upb +ha_supporting_integration: Universal Powerline Bus (UPB) +ha_release: '0.110' +ha_codeowners: + - '@gwww' +ha_config_flow: true +ha_platforms: + - light + - scene +ha_iot_class: Local Push +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index df4da3f2d4f..3b46f16919f 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -9,7 +9,7 @@ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' ha_domain: persistent_notification -ha_integration_type: integration +ha_integration_type: system --- The `persistent_notification` integration can be used to show a notification on the frontend that has to be dismissed by the user. diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 99a53c303a3..8e2948d8272 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -26,7 +26,7 @@ ha_platforms: - select - sensor - switch -ha_integration_type: integration +ha_integration_type: hub --- This enables [Plugwise](https://www.plugwise.com) components with a central Smile gateway to be integrated. This integration talks locally to your **Smile** interface, and you will need its password and IP address. diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index 34eee9326e0..b26b2b846d6 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -13,7 +13,7 @@ ha_platforms: - diagnostics - sensor ha_quality_scale: platinum -ha_integration_type: integration +ha_integration_type: device --- The PVOutput integration consumes information from [PVOutput](https://pvoutput.org/) which was uploaded by your solar photovoltaic (PV) system. diff --git a/source/_integrations/qingping.markdown b/source/_integrations/qingping.markdown index 53c78ce323e..7a502ec9dd4 100644 --- a/source/_integrations/qingping.markdown +++ b/source/_integrations/qingping.markdown @@ -33,3 +33,4 @@ The Qingping integration will automatically discover devices once the [Bluetooth - [LEE GUITARS Thermo-Hygrometer](https://www.qingping.co/lee-guitars-thermo-hygrometer/overview) (CGM1) - [Motion & Ambient Light Sensor](https://www.qingping.co/motion-light-sensor/overview) (CGPR1) - [Temp RH M](https://www.qingping.co/temp-rh-monitor/overview#mi) (CGG1) +- [Temp RH Pro E](https://www.qingping.co/temp-rh-monitor-pro-e/overview) (CGF1W) diff --git a/source/_integrations/radio_browser.markdown b/source/_integrations/radio_browser.markdown index cfd2101c04f..57c8216387c 100644 --- a/source/_integrations/radio_browser.markdown +++ b/source/_integrations/radio_browser.markdown @@ -10,7 +10,7 @@ ha_domain: radio_browser ha_config_flow: true ha_codeowners: - '@frenck' -ha_integration_type: integration +ha_integration_type: service --- The Radio Browser integration allows you to use the directory of diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index cb5fa3f4f1d..675853e227d 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -23,7 +23,7 @@ ha_platforms: - update ha_zeroconf: true ha_homekit: true -ha_integration_type: integration +ha_integration_type: device --- The RainMachine integration is the main integration to integrate all platforms related to [RainMachine smart Wi-Fi sprinkler controllers](https://www.rainmachine.com/). @@ -45,6 +45,7 @@ Services accept either device IDs or entity IDs, depending on the nature of the - Services that require a device ID as a target: - `rainmachine.pause_watering` + - `rainmachine.push_flow_meter_data` - `rainmachine.push_weather_data` - `rainmachine.restrict_watering` - `rainmachine.stop_all` @@ -64,13 +65,22 @@ Pause all watering activities for a number of seconds. After the pause is comple | ---------------------- | -------- | ------------------------------ | | `seconds` | no | The number of seconds to pause | +### `rainmachine.push_flow_meter_data` + +Push Flow Meter data from Home Assistant to the RainMachine device. + +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------- | +| `value` | no | The flow meter value to send. May be any positive number. | +| `unit_of_measurement` | yes | The flow meter units to send. String must be one of "clicks", "gal", "litre", or "m3" (default: "litre"). | + ### `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: +See details of RainMachine API here: | Service Data Attribute | Optional | Description | diff --git a/source/_integrations/raven_rock_mfg.markdown b/source/_integrations/raven_rock_mfg.markdown index 40fb8fa41fd..e4deec6d450 100644 --- a/source/_integrations/raven_rock_mfg.markdown +++ b/source/_integrations/raven_rock_mfg.markdown @@ -4,18 +4,18 @@ description: Connect and control your Raven Rock MFG devices using the Motion Bl ha_category: - Cover ha_domain: raven_rock_mfg +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/rdw.markdown b/source/_integrations/rdw.markdown index 610ac3cae90..a1db085ece0 100644 --- a/source/_integrations/rdw.markdown +++ b/source/_integrations/rdw.markdown @@ -16,7 +16,7 @@ ha_platforms: - binary_sensor - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- [RDW](https://www.rdw.nl) is the Netherlands Vehicle Authority. Their tasks diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown index a6093ba5ef6..e4f5194b8de 100644 --- a/source/_integrations/recollect_waste.markdown +++ b/source/_integrations/recollect_waste.markdown @@ -12,7 +12,7 @@ ha_config_flow: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The `recollect_waste` integration allows you to track the next scheduled waste pickup and what type of waste from [ReCollect](https://recollect.net/waste-haulers/). diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index e809003dba4..c299fd4a560 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -1,5 +1,5 @@ --- -title: remote_rpi_gpio +title: Raspberry Pi Remote GPIO description: Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant. ha_category: - Binary Sensor diff --git a/source/_integrations/rexel.markdown b/source/_integrations/rexel.markdown index c48c8befba0..805903a7149 100644 --- a/source/_integrations/rexel.markdown +++ b/source/_integrations/rexel.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: rexel +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/ridwell.markdown b/source/_integrations/ridwell.markdown index ed650792bd4..93202149d64 100644 --- a/source/_integrations/ridwell.markdown +++ b/source/_integrations/ridwell.markdown @@ -13,7 +13,7 @@ ha_platforms: - diagnostics - sensor - switch -ha_integration_type: integration +ha_integration_type: service --- The Ridwell integration allows users to track waste recycling pickups scheduled with [Ridwell](https://www.ridwell.com). diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index 9d673036b1c..79c8e98851f 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -11,8 +11,6 @@ ha_category: ha_release: 0.42 ha_iot_class: Cloud Polling ha_config_flow: true -ha_codeowners: - - '@balloob' ha_domain: ring ha_dhcp: true ha_platforms: diff --git a/source/_integrations/risco.markdown b/source/_integrations/risco.markdown index 00c29eee796..a4e584b4265 100644 --- a/source/_integrations/risco.markdown +++ b/source/_integrations/risco.markdown @@ -45,7 +45,7 @@ No dependency on the cloud, and instantaneous updates, but is harder to set up. You will need the panel access code (default 5678) to your system, this access code is NOT the same as the installer/subinstaller code, and with older models, you might need to either disconnect your system from the cloud, or set up a proxy that will allow you to connect both locally and via the cloud. -The local version of the integration does not support events, and the `arming` state. +The local version of the integration does not support events, and the `arming` state, but provides an additional binary sensor per zone (with the `_alarmed` suffix) that signals whether this zone is currently triggering an alarm. {% include integrations/config_flow.md %} diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown new file mode 100644 index 00000000000..9de58cdc5c6 --- /dev/null +++ b/source/_integrations/roborock.markdown @@ -0,0 +1,43 @@ +--- +title: Roborock +description: Connect and control your Roborock devices using the Xiaomi Miio integration +ha_category: + - Alarm + - Fan + - Health + - Hub + - Light + - Presence Detection + - Remote + - Vacuum +ha_domain: roborock +ha_integration_type: virtual +ha_supporting_domain: xiaomi_miio +ha_supporting_integration: Xiaomi Miio +ha_release: 0.51 +ha_codeowners: + - '@rytilahti' + - '@syssi' + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - air_quality + - alarm_control_panel + - binary_sensor + - button + - device_tracker + - diagnostics + - fan + - humidifier + - light + - number + - remote + - select + - sensor + - switch + - vacuum +ha_iot_class: Local Polling +ha_zeroconf: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index ce8cd0e15af..3dcd701713b 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -24,7 +24,7 @@ ha_platforms: - remote - select - sensor -ha_integration_type: integration +ha_integration_type: device --- The Roku integration allows you to control a [Roku](https://www.roku.com/) device. diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index cf55b2029ea..ecaf985ae1a 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -7,6 +7,8 @@ ha_release: 0.31 ha_iot_class: Cloud Polling ha_codeowners: - '@fabaff' + - '@gjohansson-ST' + - '@epenet' ha_domain: scrape ha_platforms: - sensor @@ -93,6 +95,10 @@ headers: description: Headers to use for the web request. required: false type: string +unique_id: + description: An ID that uniquely identifies this scrape entity. + required: false + type: string {% endconfiguration %} ## Examples diff --git a/source/_integrations/screenaway.markdown b/source/_integrations/screenaway.markdown new file mode 100644 index 00000000000..2d8012c2850 --- /dev/null +++ b/source/_integrations/screenaway.markdown @@ -0,0 +1,21 @@ +--- +title: ScreenAway +description: Connect and control your ScreenAway devices using the Motion Blinds integration +ha_category: + - Cover +ha_domain: screenaway +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - cover + - sensor +ha_iot_class: Local Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index 1700f035cd1..2e7907697d5 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -13,7 +13,7 @@ ha_platforms: - sensor ha_codeowners: - '@frenck' -ha_integration_type: integration +ha_integration_type: service --- The season integration will provide the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 96f73750c55..88882d80b99 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -117,18 +117,41 @@ For AirQ device, these sensors are available: - TVOC - CO2 +For climate devices, these sensors are available: + +- Climate React low temperature threshold +- Climate React high temperature threshold + ## Switch Entities -For climate devices, this integration provides support to enable/disable a timer to delay a start or stop (depending on the current state) of your device. +For climate devices, these switches are available: + +Support to enable/disable a timer to delay a start or stop (depending on the current state) of your device. The switch uses a timer of 60 minutes delay. You can choose a custom delay using the custom `sensibo.enable_timer` service. See [Timer](#timer). +Support to enable/disable Climate React + +Usage of the Climate React switch requires that the service has been configured previously in the app or by using the custom `sensibo.enable_climate_react` service. See [Climate React](#climate-react) + For Pure devices, this integration provides support to enable/disable Pure Boost. To customize the settings of Pure Boost, you can use the custom `sensibo.enable_pure_boost` service. See [Pure Boost](#pure-boost) ## Custom Services +### Full state + +You can send a full state command to Sensibo instead of single commands using the service `sensibo.full_state`. + +All fields are required to be according to Sensibo API specifications and are case-sensitive. + +To see the options for each field to use this service: + +1. Switch to the relevant HVAC mode (not all HVAC modes have the same options). +2. Retrieve the options for `fan_modes` and `swing_modes` from the climate entity's attributes. +3. Retrieve the option set from the respective select entity for `horizontal_swing` and `light` if those are present. + ### Assume state For devices which are also controlled in other ways or often goes out of sync with Sensibo there is a `sensibo.assume_state` service. @@ -147,6 +170,31 @@ Using Geo integration for Pure Boost is only possible by pre-configuration of Pr You can enable a timer with a custom delay using the service `sensibo.enable_timer` that is provided. +### Climate React + +You can configure your Climate React settings using the services `sensibo.enable_climate_react`. + +- Configuring this service also turns Climate React on + +When using the service, the state needs to be set to precisely what Sensibo API expects. The first time it's recommended to use the app to configure it. From that point, you can see what the API requires and how to write from the Climate React switch attribute. + +Example for low threshold state: + +{% raw %} + +```yaml +on: true +fanLevel: "high" +temperatureUnit: "C" +targetTemperature: 23 +mode: "cool" +swing: "fixedBottom" +horizontalSwing: "fixedLeft" +light: "on" +``` + +{% endraw %} + ## Adding a quick switch example If you want a "Quick Switch" to turn your AC On / Off, you can do that using the following `Switch Template`: diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 3ccbfec0ea5..6e5f6010182 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -45,6 +45,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T - **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **power_factor**: Power factor in % - **power**: Power in W or kW +- **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d, or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg, or psi - **reactive_power**: Reactive power in var - **signal_strength**: Signal strength in dB or dBm @@ -55,7 +56,9 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ - **voltage**: Voltage in V - **volume**: Generic volume in L, mL, gal, fl. oz., m³, or ft³ +- **water**: Water consumption in L, gal, m³, or ft³ - **weight**: Generic mass in kg, g, mg, µg, oz, or lb +- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph

diff --git a/source/_integrations/sensorblue.markdown b/source/_integrations/sensorblue.markdown index 5aa323fae4e..99b916ffb9f 100644 --- a/source/_integrations/sensorblue.markdown +++ b/source/_integrations/sensorblue.markdown @@ -3,18 +3,18 @@ title: SensorBlue description: Connect and control your SensorBlue devices using the ThermoBeacon integration ha_category: - Sensor -ha_bluetooth: true ha_release: 2022.9 -ha_iot_class: Local Push +ha_domain: sensorblue +ha_integration_type: virtual +ha_supporting_domain: thermobeacon +ha_supporting_integration: ThermoBeacon +ha_bluetooth: true ha_codeowners: - '@bdraco' -ha_domain: sensorblue ha_config_flow: true ha_platforms: - sensor -ha_integration_type: integration -ha_supporting_domain: thermobeacon -ha_supporting_integration: ThermoBeacon +ha_iot_class: Local Push --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown index 4c98a49c63f..febe05e1878 100644 --- a/source/_integrations/sentry.markdown +++ b/source/_integrations/sentry.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@dcramer' - '@frenck' ha_domain: sentry -ha_integration_type: integration +ha_integration_type: service ---

diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 2e6b81708f4..72ca5b750e7 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -32,7 +32,7 @@ ha_platforms: - sensor - switch - update -ha_integration_type: integration +ha_integration_type: device --- Integrate [Shelly devices](https://shelly.cloud) into Home Assistant. @@ -45,10 +45,16 @@ There are two generations of devices. Both generations are supported by this int ## Shelly device configuration (generation 1) -Shelly devices use the `CoIoT` protocol to communicate with integration. For Shelly firmware 1.10.0 or newer, `CoIoT` must be enabled in the device settings. Navigate to the local IP address of your Shelly device, **Internet & Security** >> **ADVANCED - DEVELOPER SETTINGS** and check the box **Enable CoIoT**. +Generation 1 devices use the `CoIoT` protocol to communicate with the integration. For Shelly firmware 1.10.0 or newer, `CoIoT` must be enabled in the device settings. Navigate to the local IP address of your Shelly device, **Internet & Security** >> **ADVANCED - DEVELOPER SETTINGS** and check the box **Enable CoIoT**. We recommend using `unicast` for communication. To enable this, enter the local IP address of the Home Assistant server and port `5683` into the **CoIoT peer** field and push **SAVE** button. This is mandatory for Shelly Motion with firmware 1.1.0 or newer. After changing the **CoIoT peer**, the Shelly device needs to be manually restarted. +## Shelly device configuration (generation 2) + +Generation 2 devices use the `RPC` protocol to communicate with the integration. Battery powered devices need manual outbound websocket configuration, Navigate to the local IP address of your Shelly device, **Networks** >> **Outbound websocket** and check the box **Enable**, under server enter the following address: + +`ws://` + `Home_Assistant_local_address:Port` + `/api/shelly/ws` (for example: `ws://homeassistant.local:8123/api/shelly/ws`), click **Apply** to save the settings. +
Integration is communicating directly with the device; cloud connection is not needed.
diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 8fbcbfec86b..13b12469ae7 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -19,7 +19,7 @@ ha_platforms: - lock - sensor ha_dhcp: true -ha_integration_type: integration +ha_integration_type: hub --- The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. diff --git a/source/_integrations/simply_automated.markdown b/source/_integrations/simply_automated.markdown new file mode 100644 index 00000000000..fdf86e0d5ac --- /dev/null +++ b/source/_integrations/simply_automated.markdown @@ -0,0 +1,21 @@ +--- +title: Simply Automated +description: Connect and control your Simply Automated devices using the Universal Powerline Bus (UPB) integration +ha_category: + - Light + - Scene +ha_domain: simply_automated +ha_integration_type: virtual +ha_supporting_domain: upb +ha_supporting_integration: Universal Powerline Bus (UPB) +ha_release: '0.110' +ha_codeowners: + - '@gwww' +ha_config_flow: true +ha_platforms: + - light + - scene +ha_iot_class: Local Push +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index 0db56b4eb0f..242968d61ac 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -12,7 +12,7 @@ ha_codeowners: - '@tkdrob' ha_platforms: - notify -ha_integration_type: integration +ha_integration_type: service --- The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index ce66c226f9f..b08bc9e122b 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -30,8 +30,9 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the | name | Unit | Description | | --- | --- | --- | | status | | Status of the device | -| pv_power_a | W | Current power generated by the solar panels (A side) | -| pv_power_b | W | Current power generated by the solar panels (B side) | +| pv_power | W | Current power provided to the AC side by all the solar panels | +| pv_power_a | W | Current power generated on the DC side by the solar panels (A side) | +| pv_power_b | W | Current power generated on the DC side by the solar panels (B side) | | pv_voltage_a | V | Current voltage generated by the solar panels (A side) | | pv_voltage_b | V | Current voltage generated by the solar panels (B side) | | pv_current_a | A | Current amperage generated by the solar panels (A side) | diff --git a/source/_integrations/smart_blinds.markdown b/source/_integrations/smart_blinds.markdown index d0d2453daae..2034bdecc7d 100644 --- a/source/_integrations/smart_blinds.markdown +++ b/source/_integrations/smart_blinds.markdown @@ -4,18 +4,18 @@ description: Connect and control your Smart Blinds devices using the Motion Blin ha_category: - Cover ha_domain: smart_blinds +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/smart_home.markdown b/source/_integrations/smart_home.markdown index af3d88c0713..5ff7c3e700a 100644 --- a/source/_integrations/smart_home.markdown +++ b/source/_integrations/smart_home.markdown @@ -4,18 +4,18 @@ description: Connect and control your Smart Home devices using the Motion Blinds ha_category: - Cover ha_domain: smart_home +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/smarther.markdown b/source/_integrations/smarther.markdown index 3bd187365cd..db9ec1a3223 100644 --- a/source/_integrations/smarther.markdown +++ b/source/_integrations/smarther.markdown @@ -13,9 +13,12 @@ ha_category: - Switch - Weather ha_domain: smarther +ha_integration_type: virtual +ha_supporting_domain: netatmo +ha_supporting_integration: Netatmo +ha_release: '0.20' ha_codeowners: - '@cgtobi' -ha_integration_type: integration ha_config_flow: true ha_platforms: - camera @@ -28,9 +31,6 @@ ha_platforms: - switch ha_iot_class: Cloud Polling ha_homekit: true -ha_supporting_domain: netatmo -ha_supporting_integration: Netatmo -ha_release: '0.20' --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/snooz.markdown b/source/_integrations/snooz.markdown new file mode 100644 index 00000000000..5751f78bb1d --- /dev/null +++ b/source/_integrations/snooz.markdown @@ -0,0 +1,51 @@ +--- +title: Snooz +description: Instructions on how to integrate SNOOZ devices into Home Assistant. +ha_category: + - Fan +ha_bluetooth: true +ha_release: '2022.11' +ha_iot_class: Local Push +ha_codeowners: + - '@AustinBrunkhorst' +ha_domain: snooz +ha_config_flow: true +ha_platforms: + - fan +ha_integration_type: integration +--- + +Integrates [SNOOZ](https://getsnooz.com/) devices into Home Assistant. + +{% include integrations/config_flow.md %} + +The SNOOZ integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. + +## Supported devices + +- [SNOOZ White Noise Machine](https://getsnooz.com/products/snooz-white-noise-machine) + +## Setup + +Once a device is discovered, it needs to be put into pairing mode to complete setup. + +### Entering pairing mode + +1. Ensure the device is not connected to a mobile app or any other Bluetooth controller. +2. Hold your finger on the power button until all buttons begin pulsing on and off (~ 5 seconds). + +

+ Top down view of a SNOOZ White Noise Machine, highlighting the power button. +

+ +## Platforms + +### Fan + +Devices are exposed as Fan entities with a persistent connection to the device. + +Fan speed percentage is mapped to the device volume level. + +
+Speed percentages less than 10 have no effect - they all map to a value of 1 on the device. +
diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index 0b05eb58702..712c3d73393 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -13,7 +13,7 @@ ha_platforms: - sensor ha_codeowners: - '@frenck' -ha_integration_type: integration +ha_integration_type: device --- The `solaredge` platform uses the [SolarEdge Monitoring API](https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf) to allow you to get details from your SolarEdge solar power setup and integrate these in your Home Assistant installation. diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index 956d347f7d1..d11d6669009 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -17,11 +17,14 @@ ha_category: - Siren - Switch ha_domain: somfy +ha_integration_type: virtual +ha_supporting_domain: overkiz +ha_supporting_integration: Overkiz +ha_release: 2022.2 ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' -ha_integration_type: integration ha_config_flow: true ha_platforms: - alarm_control_panel @@ -39,11 +42,8 @@ ha_platforms: - siren - switch ha_iot_class: Cloud Polling -ha_zeroconf: true ha_dhcp: true -ha_supporting_domain: overkiz -ha_supporting_integration: Overkiz -ha_release: 2022.2 +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index 893bdf95f81..3266a0a58f0 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -13,7 +13,7 @@ ha_domain: spotify ha_zeroconf: true ha_platforms: - media_player -ha_integration_type: integration +ha_integration_type: service --- The Spotify media player integration lets you control your Spotify diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index 850aeca44f4..8c1f358feec 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -16,7 +16,7 @@ ha_platforms: ha_integration_type: integration --- -The `statistics` sensor platform observes the state of a source sensor and provides statistical characteristics about its recent past. This integration can be useful in automations, e.g., to trigger an action when the air humidity in the bathroom settles after a hot shower or when the number of brewed coffee over a day gets too high. +The `statistics` sensor platform observes the state of a source sensor and provides aggregated statistical characteristics about its recent past. This integration can be useful in automations, e.g., to trigger an action when the air humidity in the bathroom settles after a hot shower or when the number of brewed coffee over a day gets too high. The statistics sensor updates with every source sensor update. The value of the sensor represents one statistical characteristic, with `mean` being the default. The time period and/or number of recent state that should be considered is an important factor here. Check the configuration section below for options. @@ -53,13 +53,16 @@ The following characteristics are supported for `sensor` source sensors: | `datetime_value_min` | The timestamp of the numerically smallest measurement. | `distance_95_percent_of_values` | A statistical indicator derived from the standard deviation of an assumed normal distribution. 95% of all stored values fall into a range of returned size. | `distance_99_percent_of_values` | A statistical indicator derived from the standard deviation of an assumed normal distribution. 99% of all stored values fall into a range of returned size. -| `distance_absolute` | The difference between the extreme values of measurements. Equals `value_max` minus `value_min`. +| `distance_absolute` | The difference or "spread" between the extreme values of measurements. Equals `value_max` minus `value_min`. | `mean` | The average value computed for all measurements. Be aware that this does not take into account uneven time intervals between measurements. | `median` | The [median](https://en.wikipedia.org/wiki/Mode_(statistics)#Comparison_of_mean,_median_and_mode) value computed for all measurements. -| `noisiness` | A simplified version of a signal-to-noise ratio. A high value indicates a quickly changing source sensor value, a small value will be seen for a steady source sensor. The absolute change between consecutive stored values is summed up and divided by the number of intervals. +| `noisiness` | A simplified version of a signal-to-noise ratio. A high value indicates a quickly changing source sensor value, a small value will be seen for a steady source sensor. The absolute change between subsequent source sensor measurement values is summed up and divided by the number of intervals. | `quantiles` | Quantiles divide the range of a normal probability distribution of all considered source sensor measurements into continuous intervals with equal probabilities. Check the configuration parameters `quantile_intervals` and `quantile_method` for further details. | `standard_deviation` | The [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) of an assumed normal distribution from all measurements. -| `total` | The sum of all source sensor measurements within the given time and sampling size limits. +| `sum` | The mathematical sum of all source sensor measurement values within the given time and sampling size limits. +| `sum_differences` | The mathematical sum of differences between subsequent source sensor measurement values within the given time and sampling size limits. +| `sum_differences_nonnegative` | The mathematical sum of non-negative differences between subsequent source sensor measurement values within the given time and sampling size limits. The characteristic assumes that the source sensor value can only increase, but might occasionally be reset to zero. If a value is smaller than the previous value, the function assumes the previous value should have been a zero. +| `total` | The mathematical sum of all source sensor measurement values within the given time and sampling size limits. Equal to `sum`. | `value_max` | The biggest value among the number of measurements. | `value_min` | The smallest value among the number of measurements. | `variance` | The [variance](https://en.wikipedia.org/wiki/Variance) of an assumed normal distribution from all measurements. diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown index 67ee2be959e..3b509e6f748 100644 --- a/source/_integrations/stookalert.markdown +++ b/source/_integrations/stookalert.markdown @@ -14,7 +14,7 @@ ha_config_flow: true ha_platforms: - binary_sensor - diagnostics -ha_integration_type: integration +ha_integration_type: service --- 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. diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index e2a685c66a7..179ad0d18cf 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -13,7 +13,7 @@ ha_codeowners: ha_domain: stream ha_platforms: - diagnostics -ha_integration_type: integration +ha_integration_type: system --- The stream integration provides a way to proxy live streams through Home Assistant. Most users should not need to configure anything or interface with the component directly since it is an internal component used by the [camera integration](/integrations/camera). diff --git a/source/_integrations/switchbee.markdown b/source/_integrations/switchbee.markdown index c479331362c..489a2ee6151 100644 --- a/source/_integrations/switchbee.markdown +++ b/source/_integrations/switchbee.markdown @@ -3,6 +3,8 @@ title: SwitchBee description: Instructions for how to integrate SwitchBee accessories within Home Assistant. ha_category: - Button + - Climate + - Cover - Light - Switch ha_release: '2022.10' @@ -13,6 +15,8 @@ ha_codeowners: ha_domain: switchbee ha_platforms: - button + - climate + - cover - light - switch ha_integration_type: integration @@ -26,8 +30,11 @@ There is currently support for the following device types: - Timed Power Switch (Boiler) - Group Switch - Timed Switch +- Shutter +- Somfy Shutter - Light (Dimmer) - Scenario +- Thermostat Supported devices will be discovered after the SwitchBee integration is configured. diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 60f1f668e69..b7f47abcf16 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -2,6 +2,9 @@ title: Switcher description: Integrate Switcher devices. ha_category: + - Climate + - Cover + - Sensor - Switch ha_release: 0.93 ha_iot_class: Local Push @@ -10,6 +13,9 @@ ha_codeowners: - '@thecode' ha_domain: switcher_kis ha_platforms: + - climate + - cover + - diagnostics - sensor - switch ha_config_flow: true @@ -26,6 +32,8 @@ Supported devices: - Switcher V2 (Espressif chipset - from firmware 3.21) - Switcher V2 (Qualcomm chipset - from firmware 72.32) - Switcher V4 +- Switcher Breeze +- Switcher Runner If you completed the integration setup but are still unable to control the device, please make sure your device's firmware is up-to-date. @@ -66,5 +74,5 @@ Note: This does not affect the auto off timer. ## Notes -Make sure that Home Assistant host's firewall allows incoming traffic on UDP port 20002 and outgoing connections to Switcher device(s) on TCP port 9957. +Make sure that Home Assistant host's firewall allows incoming traffic on UDP ports 20002 & 20003 and outgoing connections to Switcher device(s) on TCP ports 9957 & 10000. If Home Assistant and the Switcher device(s) are not on the same network, you will also need to have their traffic properly forwarded between the two networks. diff --git a/source/_integrations/symfonisk.markdown b/source/_integrations/symfonisk.markdown new file mode 100644 index 00000000000..2b64d389439 --- /dev/null +++ b/source/_integrations/symfonisk.markdown @@ -0,0 +1,28 @@ +--- +title: IKEA SYMFONISK +description: Connect and control your IKEA SYMFONISK devices using the Sonos integration +ha_category: + - Media Player + - Sensor +ha_domain: symfonisk +ha_release: 0.7.3 +ha_integration_type: virtual +ha_supporting_domain: sonos +ha_supporting_integration: Sonos +ha_codeowners: + - '@cgtobi' + - '@jjlawren' +ha_config_flow: true +ha_platforms: + - binary_sensor + - diagnostics + - media_player + - number + - sensor + - switch +ha_iot_class: Local Push +ha_ssdp: true +ha_zeroconf: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown index b2e4889099e..a4e0d578c07 100644 --- a/source/_integrations/system_log.markdown +++ b/source/_integrations/system_log.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.58 ha_quality_scale: internal ha_domain: system_log -ha_integration_type: integration +ha_integration_type: system --- The `system_log` integration stores information about all logged errors and warnings in Home Assistant. To view your logs, navigate to **Settings** -> **System** -> **Logs**. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter `max_entries`. diff --git a/source/_integrations/tailscale.markdown b/source/_integrations/tailscale.markdown index 2055031abc7..387852e8a39 100644 --- a/source/_integrations/tailscale.markdown +++ b/source/_integrations/tailscale.markdown @@ -16,7 +16,7 @@ ha_platforms: - diagnostics - sensor ha_quality_scale: platinum -ha_integration_type: integration +ha_integration_type: hub --- The Tailscale integration integrates the [Tailscale](https://www.tailscale.com) API diff --git a/source/_integrations/thermoplus.markdown b/source/_integrations/thermoplus.markdown index 5881e64d8f8..4eaeb30e3db 100644 --- a/source/_integrations/thermoplus.markdown +++ b/source/_integrations/thermoplus.markdown @@ -3,18 +3,18 @@ title: ThermoPlus description: Connect and control your ThermoPlus devices using the ThermoBeacon integration ha_category: - Sensor -ha_bluetooth: true ha_release: 2022.9 -ha_iot_class: Local Push +ha_domain: thermoplus +ha_integration_type: virtual +ha_supporting_domain: thermobeacon +ha_supporting_integration: ThermoBeacon +ha_bluetooth: true ha_codeowners: - '@bdraco' -ha_domain: thermoplus ha_config_flow: true ha_platforms: - sensor -ha_integration_type: integration -ha_supporting_domain: thermobeacon -ha_supporting_integration: ThermoBeacon +ha_iot_class: Local Push --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/tile.markdown b/source/_integrations/tile.markdown index 781210a7899..186a32d6cd7 100644 --- a/source/_integrations/tile.markdown +++ b/source/_integrations/tile.markdown @@ -12,7 +12,7 @@ ha_config_flow: true ha_platforms: - device_tracker - diagnostics -ha_integration_type: integration +ha_integration_type: hub --- The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com). diff --git a/source/_integrations/tomorrowio.markdown b/source/_integrations/tomorrowio.markdown index be055a392f6..ccca0e11491 100644 --- a/source/_integrations/tomorrowio.markdown +++ b/source/_integrations/tomorrowio.markdown @@ -16,7 +16,7 @@ ha_domain: tomorrowio ha_platforms: - sensor - weather -ha_integration_type: integration +ha_integration_type: service --- The Tomorrow.io integration allows you to obtain weather, air quality, pollen, and fire information from the [Tomorrow.io API](https://www.tomorrow.io/weather-api/). diff --git a/source/_integrations/tractive.markdown b/source/_integrations/tractive.markdown index 43b5295a5f9..82e454491f5 100644 --- a/source/_integrations/tractive.markdown +++ b/source/_integrations/tractive.markdown @@ -17,7 +17,7 @@ ha_platforms: - diagnostics - sensor - switch -ha_integration_type: integration +ha_integration_type: device --- [Tractive](https://tractive.com/en/) is an Austrian company that develops real-time location trackers for pets and other animals using GPS and GSM technology. diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 75ed1867da7..c5b29fd322a 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -43,7 +43,7 @@ ha_platforms: - switch - vacuum ha_dhcp: true -ha_integration_type: integration +ha_integration_type: hub --- The Tuya integration integrates all Powered by Tuya devices you have added to the Tuya Smart and Tuya Smart Life apps. diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown index 1e76206dcf1..b233d5351ff 100644 --- a/source/_integrations/twentemilieu.markdown +++ b/source/_integrations/twentemilieu.markdown @@ -16,7 +16,7 @@ ha_platforms: - diagnostics - sensor ha_quality_scale: platinum -ha_integration_type: integration +ha_integration_type: service --- The Twente Milieu integration allows you to track the next scheduled waste diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 76fb7ae602e..b8eba69e80d 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -21,7 +21,7 @@ ha_platforms: - sensor - switch - update -ha_integration_type: integration +ha_integration_type: hub --- [UniFi Network](https://www.ui.com/software/) by [Ubiquiti Networks, inc.](https://www.ui.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown new file mode 100644 index 00000000000..3b9afeab4cc --- /dev/null +++ b/source/_integrations/update.mqtt.markdown @@ -0,0 +1,299 @@ +--- +title: "MQTT Update" +description: "Instructions on how to interact with a device exposing an Update entity through MQTT from within Home Assistant." +ha_category: + - Update +ha_release: "2021.11" +ha_iot_class: Configurable +ha_domain: mqtt +--- + +The `mqtt` Update platform allows you to integrate devices that might expose firmware/software installed and the latest versions through MQTT into Home Assistant as an Update entity. Every time a message under the `topic` in the configuration is received, the entity will be updated in Home Assistant. + +## Configuration + +To enable MQTT Update in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +mqtt: + select: + - state_topic: topic-installed + latest_version_topic: topic-latest +``` + +{% configuration %} +availability: + description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`. + required: false + type: list + keys: + payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online + payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline + topic: + description: An MQTT topic subscribed to receive availability (online/offline) updates. + required: true + type: string + value_template: + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." + required: false + type: template +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with `availability`. + required: false + type: string +availability_mode: + description: When `availability` is configured, this controls the conditions needed to set the entity to `available`. Valid entries are `all`, `any`, and `latest`. If set to `all`, `payload_available` must be received on all configured availability topics before the entity is marked as online. If set to `any`, `payload_available` must be received on at least one configured availability topic before the entity is marked as online. If set to `latest`, the last `payload_available` or `payload_not_available` received on any configured availability topic controls the availability. + required: false + type: string + default: latest +availability_template: + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." + required: false + type: template +command_topic: + description: The MQTT topic to publish `payload_install` to start installing process. + required: false + type: string +device: + description: "Information about the device this Update is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the 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 + type: list + hw_version: + description: The hardware version of the device. + required: false + type: string + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: [list, string] + manufacturer: + description: The manufacturer of the device. + required: false + type: string + model: + description: The model of the device. + required: false + type: string + name: + description: The name of the device. + required: false + type: string + suggested_area: + description: 'Suggest an area if the device isn’t in one yet.' + required: false + type: string + sw_version: + description: The firmware version of the device. + required: false + type: string + via_device: + description: 'Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs, or parent devices of a sub-device. This is used to show device topology in Home Assistant.' + required: false + type: string +device_class: + description: The [type/class](/integrations/update/#device-classes) of the update to set the icon in the frontend. + required: false + type: device_class + default: None +enabled_by_default: + description: Flag which defines if the entity should be enabled when first added. + required: false + type: boolean + default: true +encoding: + description: The encoding of the payloads received and published messages. Set to `""` to disable decoding of incoming payload. + required: false + type: string + default: "utf-8" +entity_category: + description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + required: false + type: string + default: None +entity_picture: + description: "Picture URL for the entity." + required: false + type: string +icon: + description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." + required: false + type: icon +json_attributes_template: + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the JSON dictionary from messages received on the `json_attributes_topic`." + required: false + type: template +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as entity attributes. Implies `force_update` of the current select state when a message is received on this topic. + required: false + type: string +latest_version_template: + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the latest version value." + required: false + type: template +latest_version_topic: + description: The MQTT topic subscribed to receive an update of the latest version. + required: false + type: string +name: + description: The name of the Select. + required: false + type: string +object_id: + description: Used instead of `name` for automatic generation of `entity_id` + required: false + type: string +payload_install: + description: The MQTT payload to start installing process. + required: false + type: string +qos: + description: The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. + required: false + type: integer + default: 0 +release_summary: + description: Summary of the release notes or changelog. This is suitable a brief update description of max 255 characters. + required: false + type: string +release_url: + description: URL to the full release notes of the latest version available. + required: false + type: string +retain: + description: If the published message should have the retain flag on or not. + required: false + type: boolean + default: false +state_topic: + description: "The MQTT topic subscribed to receive state updates. The state update may be either JSON or a simple string with `installed_version` value. When a JSON payload is detected, the state value of the JSON payload should supply the `installed_version` and can optional supply: `latest_version`, `title`, `release_summary`, `release_url` or an `entity_picture` URL." + required: false + type: string +title: + description: Title of the software, or firmware update. This helps to differentiate between the device or entity name versus the title of the software installed. + required: false + type: string +unique_id: + description: An ID that uniquely identifies this Select. If two Selects have the same unique ID Home Assistant will raise an exception. + required: false + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `installed_version` state value or to render to a valid JSON payload on from the payload received on `state_topic`." + required: false + type: template +{% endconfiguration %} + +
+ +Make sure that your topic matches exactly. `some-topic/` and `some-topic` are different topics. + +
+ +## Examples + +This is an example of Update entity configuration for Shelly Gen1 device. + +{% raw %} + +```yaml +# Example configuration.yaml entry +mqtt: + update: + - name: "Shelly Plug S Firmware Update" + title: "Shelly Plug S Firmware" + release_url: "https://shelly-api-docs.shelly.cloud/gen1/#changelog" + entity_picture: "https://brands.home-assistant.io/_/shelly/icon.png" + state_topic: "shellies/shellyplug-s-112233/info" + value_template: "{{ value_json['update'].old_version }}" + latest_version_topic: "shellies/shellyplug-s-112233/info" + latest_version_template: "{% if value_json['update'].new_version %}{{ value_json['update'].new_version }}{% else %}{{ value_json['update'].old_version }}{% endif %}" + device_class: "firmware" + command_topic: "shellies/shellyplug-s-112233/command" + payload_install: "update_fw" +``` + +{% endraw %} + +JSON can also be used as `state_topic` payload. + +{% raw %} + +```json +{ + "installed_version": "1.21.0", + "latest_version": "1.22.0", + "title": "Device Firmware", + "release_url": "https://example.com/release", + "release_summary": "A new version of our amazing firmware", + "entity_picture": "https://example.com/icon.png" +} +``` + +{% endraw %} + +For the above JSON payload, the `update` entity configuration should look like this: + +{% raw %} + +```yaml +# Example configuration.yaml entry +mqtt: + update: + - name: "Amazing Device Update" + title: "Device Firmware" + state_topic: "amazing-device/state-topic" + device_class: "firmware" + command_topic: "amazing-device/command" + payload_install: "install" +``` + +{% endraw %} + +If the device/service sends data as JSON but the schema differs, `value_template` can be use to reformat the JSON. + +{% raw %} + +```json +{ + "installed_ver": "2022.11", + "new_ver": "2022.12" +} +``` + +{% endraw %} + +For the above JSON payload, the `update` entity configuration should look like this: + +{% raw %} + +```yaml +# Example configuration.yaml entry +mqtt: + update: + - name: "Amazing Device Update" + title: "Device Firmware" + state_topic: "amazing-device/state-topic" + value_template: "{{ {'installed_version': value_json.installed_ver, 'latest_version': value_json.new_ver } | to_json }}" + device_class: "firmware" + command_topic: "amazing-device/command" + payload_install: "install" +``` + +{% endraw %} diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 5f6b4336c15..14470896409 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -10,13 +10,12 @@ ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - '@StevenLooman' - - '@ehendrix23' ha_domain: upnp ha_ssdp: true ha_platforms: - binary_sensor - sensor -ha_integration_type: integration +ha_integration_type: device --- The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out, uptime, WAN IP address, and WAN connectivity status. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. diff --git a/source/_integrations/uprise_smart_shades.markdown b/source/_integrations/uprise_smart_shades.markdown index e1801479748..bb8d689381c 100644 --- a/source/_integrations/uprise_smart_shades.markdown +++ b/source/_integrations/uprise_smart_shades.markdown @@ -4,18 +4,18 @@ description: Connect and control your Uprise Smart Shades devices using the Moti ha_category: - Cover ha_domain: uprise_smart_shades +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motion Blinds +ha_release: 2020.12 ha_codeowners: - '@starkillerOG' -ha_integration_type: integration ha_config_flow: true ha_platforms: - cover - sensor ha_iot_class: Local Push ha_dhcp: true -ha_supporting_domain: motion_blinds -ha_supporting_integration: Motion Blinds -ha_release: 2020.12 --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index 727db934cdc..a526d04479b 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -13,7 +13,7 @@ ha_platforms: ha_config_flow: true ha_codeowners: - '@frenck' -ha_integration_type: integration +ha_integration_type: service --- The uptime integration provides a sensor that stores the timestamp diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index 9e5924940f4..f2fdfb70ca6 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -3,6 +3,7 @@ title: Velbus description: Access and control your Velbus devices. ha_category: - Binary Sensor + - Button - Climate - Hub - Light @@ -24,7 +25,7 @@ ha_platforms: - light - sensor - switch -ha_integration_type: integration +ha_integration_type: hub --- The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway. @@ -53,6 +54,7 @@ The port string used in the user interface or the configuration file can have 2 - `velbus.sync clock`: Synchronize Velbus time to local clock. - `velbus.scan`: Scan the bus for new devices. - `velbus.set_memo_text`: Show memo text on Velbus display modules. +- `velbus.clear_cache`: Clear the full velbuscache or the cache for one module only. ### Service `velbus.sync_clock` @@ -95,6 +97,16 @@ script: service: velbus.set_memo_text ``` +### Service `velbus.clear_cache` + +You can use the service `velbus.clear_cache` to clear the cache of one module or the full cache. Once the clear happens, the integration will start a new scan. +Use this service when you make changes to your configuration via velbuslink. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------- | +| `interface` | no | The port used to connect to the bus (the same one used during configuration). | +| `address` | no | The module address in decimal format, which is displayed on the device list on the integration page, if provided the service will only clear the cache for this model, without an address, the full velbuscache will be cleared. | + ## Example automation The Velbus integration allows you to link a Velbus button (i.e., a button of a [VMBGPOD](https://www.velbus.eu/products/view/?id=416302&lang=en) module) to a controllable entity of Home Assistant. diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 25355673191..562639cb969 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -24,7 +24,7 @@ ha_platforms: - switch ha_config_flow: true ha_dhcp: true -ha_integration_type: integration +ha_integration_type: hub --- Home Assistant has support to integrate your [Verisure](https://www.verisure.com/) devices. diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 844268954bc..ed77ebe403b 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -13,7 +13,7 @@ ha_domain: vizio ha_zeroconf: true ha_platforms: - media_player -ha_integration_type: integration +ha_integration_type: hub --- The `vizio` integration allows you to control [SmartCast](https://www.vizio.com/smartcast-app)-compatible TVs and sound bars (2016+ models). diff --git a/source/_integrations/watttime.markdown b/source/_integrations/watttime.markdown index 029e576ce11..29bf03abdba 100644 --- a/source/_integrations/watttime.markdown +++ b/source/_integrations/watttime.markdown @@ -12,7 +12,7 @@ ha_config_flow: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The `watttime` integration allows users to get real-time emissions data for a latitude/longitude from [WattTime](https://www.watttime.org). diff --git a/source/_integrations/webhook.markdown b/source/_integrations/webhook.markdown index 53ff11cb9d8..23f283bc1cd 100644 --- a/source/_integrations/webhook.markdown +++ b/source/_integrations/webhook.markdown @@ -5,7 +5,6 @@ ha_category: - Automation ha_release: 0.8 ha_quality_scale: internal -ha_category: [] ha_codeowners: - '@home-assistant/core' ha_domain: webhook diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index 0feda64ba5b..1d4e372a936 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -13,6 +13,7 @@ ha_domain: webostv ha_config_flow: true ha_ssdp: true ha_platforms: + - diagnostics - media_player - notify ha_quality_scale: platinum diff --git a/source/_integrations/whois.markdown b/source/_integrations/whois.markdown index 443f751940a..4c3c533564d 100644 --- a/source/_integrations/whois.markdown +++ b/source/_integrations/whois.markdown @@ -12,7 +12,7 @@ ha_codeowners: ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The Whois integration allows you to perform daily WHOIS lookups against your owned domains. This provides you with information such as `expiration_date`, `name_servers` and `registrar` details. diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 46d171701d5..3543b6648c6 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -24,7 +24,7 @@ ha_platforms: - sensor - switch - update -ha_integration_type: integration +ha_integration_type: device --- [WLED](https://kno.wled.ge) is a fast and feature-rich diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index a1b03de5106..eb097afbfe6 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -16,7 +16,6 @@ ha_codeowners: - '@rytilahti' - '@syssi' - '@starkillerOG' - - '@bieniu' ha_domain: xiaomi_miio ha_config_flow: true ha_zeroconf: true diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index 9aac380aae6..381fe0aae2d 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -10,7 +10,7 @@ ha_codeowners: ha_domain: yi ha_platforms: - camera -ha_integration_type: integration +ha_integration_type: device --- The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: diff --git a/source/_integrations/zamg.markdown b/source/_integrations/zamg.markdown index 3e6d08dc5e1..46f23227abc 100644 --- a/source/_integrations/zamg.markdown +++ b/source/_integrations/zamg.markdown @@ -7,121 +7,45 @@ ha_category: ha_release: 0.35 ha_iot_class: Cloud Polling ha_domain: zamg +ha_config_flow: true ha_platforms: - sensor - weather ha_integration_type: integration +ha_codeowners: + - '@killer0071234' --- The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). Only observations for capital cities are publicly available. You can check the list of stations in [CSV format](https://www.zamg.ac.at/ogd). +{% include integrations/config_flow.md %} + There is currently support for the following device types within Home Assistant: -- **[Weather](#weather)** - Easier to configure but less customizable and doesn't have support for conditions which is a key feature of the `weather` platforms. +- **Weather** - It displays the current temperature, humidity, pressure and wind speed, but it doesn't have support for conditions which is a key feature of the `weather` platforms. - **[Sensor](#sensor)** -## Weather - -To add ZAMG weather platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: zamg -``` - -{% configuration %} -station_id: - description: The ID number for a supported ZAMG station. - required: false - type: string -name: - description: A name for the weather platform. - required: false - type: string -latitude: - description: "Latitude coordinate to monitor weather of (required if **longitude** is specified)." - required: false - type: float - default: "Defaults to coordinates defined in your `configuration.yaml` file." -longitude: - description: "Longitude coordinate to monitor weather of (required if **latitude** is specified)." - required: false - type: float - default: "Defaults to coordinates defined in your `configuration.yaml` file." -{% endconfiguration %} - ## Sensor -To add ZAMG sensor platform to your installation, add the following to your `configuration.yaml` file: +This integration provides the following sensors: -```yaml -# Example configuration.yaml entry -sensor: - - platform: zamg -``` - -{% configuration %} -station_id: - required: false - description: The ID number for a supported ZAMG station. - type: string -name: - required: false - description: Additional name for the sensors. Defaults to platform name. - default: zamg - type: string -latitude: - required: false - description: "Latitude coordinate to monitor weather of (required if **longitude** is specified)." - default: "Defaults to coordinates defined in your `configuration.yaml` file." - type: float -longitude: - required: false - description: "Longitude coordinate to monitor weather of (required if **latitude** is specified)." - default: "Defaults to coordinates defined in your `configuration.yaml` file." - type: float -monitored_conditions: - required: false - description: Conditions to display in the frontend. - type: list - default: temperature - keys: - pressure: - description: Pressure at station level - pressure_sealevel: - description: Pressure at sea Level - humidity: - description: Humidity - wind_speed: - description: Wind speed - wind_bearing: - description: Wind bearing - wind_max_speed: - description: Top wind speed - wind_max_bearing: - description: Top wind bearing - sun_last_hour: - description: Sun last hour percentage - temperature: - description: Temperature - precipitation: - description: Precipitation - dewpoint: - description: Dew point -{% endconfiguration %} - -A full configuration example: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zamg - station_id: 11035 - name: Wien - monitored_conditions: - - temperature - - humidity -``` +|Name|Description| +|----|-----------| +|Temperature|Temperature in °C| +|Humidity|Humidity in %| +|Dew Point|Dew point in °C| +|Pressure|Station pressure in hPa| +|Pressure at Sea Level|Sea level pressure in hPa| +|Wind Speed|Wind speed in km/h| +|Top Wind Speed|Max wind speed in km/h| +|Wind Bearing|Wind bearing in °| +|Top Wind Bearing|Wind bearing at max speed in °| +|Sun Last Hour|Sunshine in the last hour in %| +|Precipitation|Precipitation in 1/m²| +|Station Name|Station name| +|Station Elevation|The station elevation in m| +|Update Date|Update date of last read data| +|Update Time|Update time of last read data| +|Station id|The station id| diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index 04c050ae77b..b6dcda19278 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -9,7 +9,7 @@ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' ha_domain: zone -ha_integration_type: integration +ha_integration_type: system --- Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/docs/automation/trigger#zone-trigger) or [condition](/docs/scripts/conditions/#zone-condition) inside automation setups. diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 33374625c28..a7852001cdf 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -40,7 +40,7 @@ ha_platforms: - siren - switch - update -ha_integration_type: integration +ha_integration_type: hub ha_zeroconf: true --- diff --git a/source/_posts/2022-11-02-release-202211.markdown b/source/_posts/2022-11-02-release-202211.markdown new file mode 100644 index 00000000000..8ea365184ad --- /dev/null +++ b/source/_posts/2022-11-02-release-202211.markdown @@ -0,0 +1,659 @@ +--- +layout: post +title: "2022.11: A heck of a release!" +description: "Two brand new cards for your Dashboards, get insight into your water usage from the energy dashboard, reloading automations and scripts became much smarter, color temperatures now use Kelvin, change the day your week starts, and some cool new templating features." +date: 2022-11-02 00:00:00 +date_formatted: "November 2, 2022" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2022-11/social.png +--- + + + +Home Assistant Core 2022.11! 🎉 + +This November already feels a lot like Christmas 🎄, what a heck of a +release! Quite a few suggestions from the [Month of "What the Heck?!"](/blog/2022/09/30/the-month-of-what-the-heck) +already landed! Ready to unpack the presents? 🎁 + +Talking about the WTH month, it ended. Well, sort of, at least. It is now closed +for new topics/suggestions, but [existing ones](https://community.home-assistant.io/c/what-the-heck/56) +remain open for discussion and can be voted on. I'm curious to see more of +these WTHs being resolved in the upcoming releases. + +This release has so much goodness that I have a hard time picking a favorite. +Water usage, maybe? I'm really not sure, so I'm going to cut this intro short. +Let me know your favorite in the comments below! + +Enjoy the release! + +../Frenck + +PS: There will be no release party live stream this month, +instead [join us](https://www.youtube.com/watch?v=D936T1Ze8-4) at the +[State of the Open Home](https://www.youtube.com/watch?v=D936T1Ze8-4) on +Sunday, November 13, 2022 (11:00 AM PST / 20:00 CET). + + + +- [Tile card](#tile-card) +- [Statistic card](#statistic-card) +- [Smarter reloading of automation & scripts](#smarter-reloading-of-automation--scripts) +- [Getting insights into water usage](#getting-insights-into-water-usage) +- [Color temperatures in Kelvin](#color-temperatures-in-kelvin) +- [Long-term statistics in the entity dialogs](#long-term-statistics-in-the-entity-dialogs) +- [The first day of the week](#the-first-day-of-the-week) +- [New templating features](#new-templating-features) +- [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) +- [Need help? Join the community!](#need-help-join-the-community) +- [Breaking Changes](#breaking-changes) +- [All changes](#all-changes) + +## Tile card + +This release introduces a new Dashboard card: the "Tile"! + +Screenshot showing a couple of tile cards + +The tile card is a lovely little card that provides a quick overview of an +entity. The icon can be tapped to toggle the entity, and the rest of the card +brings up the "more info" dialog. + +[Read more about the Tile card in the documentation](/dashboards/tile). + +This first iteration of the Tile card is one of the first cards added this +release, that brings in a new style of card into Home Assistant. + +Curious to find out what else will be coming? Join us for the State +of the Open Home live stream. [Go to YouTube and click the bell 🔔](https://www.youtube.com/watch?v=D936T1Ze8-4) +so you get notified when we go live! + +## Statistic card + +More cards! We already have the [Statistics Graph card](/dashboards/statistics-graph), +which can be used to display graphs of long-term statistics of an entity. +This release brings the "Statistic" card! + +The “Statistic” card, as the name implies, can show a single value of an entity, +based on the long-term statistics stored of that entity. + +For example, want to display the average temperature of your living room this +week on your dashboard? The average power usage of your home today? The peak +power production of your solar panels today? + +Yes, all of the above, this card can do! + +Screenshot showing the UI editor of the statistic card and all of its options + +[Read more about the Statistic card in the documentation](/dashboards/statistic). + +## Smarter reloading of automation & scripts + +> [WTH do all automations get reloaded when you change any of them?](https://community.home-assistant.io/t/wth-do-all-automatons-get-reloaded-when-you-change-any-of-them/467270) + +Good question! And that WTH topic got over 180+ votes as well! + +When you change a single automation or script via the editors in the user +interface (or reload your YAML-based ones), they all get reloaded. This +means if they are running, waiting for something (a delay, an event, or for an +entity to be in a certain state for X time), they would all be reset. + +This release changes this behavior, resolving that WTH! Only automations that +are actually changed are reloaded. All others will remain running and untouched. + +This works when editing an automation in the UI, and even when reloading your +YAML-based automations in any split YAML setup you might have. + +Oh, as an added bonus: We applied the exact same for scripts too! + +## Getting insights into water usage + +Since Home Assistant added energy management, tracking the usage of water🚰 +has been requested quite a bit. It was [raised again during this month of WTH](https://community.home-assistant.io/t/wth-do-we-have-energy-dashboard-and-no-water-dashboard/467168), +and with over 370 votes, it is clearly wanted a lot. + +This release adds the ability to monitor your water usage in the energy dashboard! + +Although water is not strictly “energy”, it is still a [valuable resource](https://en.wikipedia.org/wiki/Water_resources) +to track. It is often tightly coupled with energy usage (like gas) when using +hot water, and the gained insight can help you reduce your ecological footprint +by using less water 🌎. + +The energy dashboard now includes your water usage + +Some integrations, like [Flo](/integrations/flo), [Flume](/integrations/flume), and +[HomeWizard Energy](/integrations/homewizard), have been adjusted to support +tracking water. Furthermore, you can create your own using templates, MQTT, +or ESPHome (requires [ESPHome version 2022.10.1](https://www.esphome.io/changelog/2022.10.0.html#release-2022-10-1-october-26) or newer). + +[Check out the documentation](/docs/energy/water) for the hardware options +available to track your water usage or how to build your own water usage +sensors. + +## Color temperatures in Kelvin + +Another [WTH topic](https://community.home-assistant.io/t/wth-is-light-temperature-not-in-kelvin/467449) +that was voted for almost 150 times! Why doesn't Home Assistant use Kelvin +for color temperatures? + +Well, a small piece of history: The Home Assistant story started using Philips +Hue a long, long time ago. And Hue uses mired for its color temperature, +not Kelvin. + +But today, Kelvin is much more commonly used. It is even on packages of the +bulbs you buy. So, as of today, Home Assistant uses Kelvin too! + +Screenshot showing the UI now uses the Kelvin unit to set the color temperature + +Kelvin is now the primary color temperature unit. This means all lights +and everything color temperature related shown in the user interface, +are now in Kelvin. + +We still do support the good old mired. Mireds are still working and +automatically converted when needed, so this is not a breaking change 🎉 + +Additionally, integrations can now optionally use Kelvin directly if the +device or service accepts that. [HomeKit], [Shelly], +[AVM FRITZ!SmartHome], and [LIFX] are all now using Kelvin natively. + +[AVM FRITZ!SmartHome]: /integrations/fritzbox +[HomeKit]: /integrations/homekit +[LIFX]: /integrations/lifx +[Shelly]: /integrations/shelly + +## Long-term statistics in the entity dialogs + +The "more info" dialogs of entities now use long-term statistics for +the graphs shown. It makes those dialogs a lot faster, especially on +mobile devices. + +Screenshot showing you can now set the day of the week from your user profile page + +## The first day of the week + +The start of the week can differ for many of us. Your week will start on +Saturday, Sunday, or Monday based on where you are, your locale, or maybe +personal preference. As pointed out in +[this WTH topic](https://community.home-assistant.io/t/wth-week-starts-on-sunday/468998). + +Home Assistant will try to auto-detect the correct day to start the week +based on information provided by your browser. However, if it cannot detect it, +or in case you have a personal preference, you can now set it on your user profile. + +Screenshot showing you can now set the day of the week from your user profile page + +You can now set the day to start the week at {% my profile title="in your user profile" %}. + +Setting it means that all date inputs, date range pickers, schedules, calendars, +and even time conditions in automations, will take this into account when +displaying weeks. + +## New templating features + +We also have some great new advanced features added to templating this release! + +Originating from [this WTH topic](https://community.home-assistant.io/t/wth-state-based-jinja-functions-are-not-filters-or-tests/468187): +You can now use the `state_attr()` and `states()` functions as a filter, +and the `is_state()` and `is_state_attr()` functions can now be used as tests. + +The `average()` function now accepts a default value, which can be helpful +if no average can be calculated. + +Lastly, the `config_entry_id()` template method has been added, which allows +you to look up native IDs of integration configuration entries using one +of the entities it provides. + +For more information on these new features and the Home Assistant templating +capabilities in general, [check out the documentation](/docs/configuration/templating). + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +- The default dashboard theme has been adjusted to move a little closer to the + new Material Design 3 guidelines. Borders around cards are now outlined + (instead of having a shadow), and corners are a little more rounded. +- The automations and the devices dashboards now have icons on each row, making + them look all nice and shiny. Thanks, [@bramkragten] & [@frenck]. +- The unit of measurement for entities providing Gas can now be changed and + converted from the UI. Thanks, [@emontnemery]! +- Home Assistant is now discoverable via UPnP/SSDP, meaning your instance will + show up in your Windows Network. Thanks, [@StevenLooman]! +- [Shelly] Gen2 devices that sleep (battery-powered) are now supported! + Thanks, [@thecode]! +- You can now use sensors providing Gigajoule (GJ) with the energy dashboard. + Thanks, [@emontnemery]! +- The [MQTT] integration now has support for [update entities]! Thanks, [@bieniu]! +- Media player support was added to the [Jellyfin] integration. Thanks, [@Ongy]! +- The statistics card now supports "week" as a possible period. Thanks, [@mib1185]! +- The [Sun condition] can now handle setting both before & after at the same + time. Thanks, [@janick]! +- The "forked-daapd" project was renamed to "Owntone". The integration was now + renamed [Owntone] too! Thanks, [@uvjustin]! +- [Fully Kiosk Browser] now provides a service to remotely change URLs on your + wall-mounted tablet. Thanks, [@cgarwood]! +- The [Xiaomi Miio] integration now supports the Xiaomi Purifier 4 Lite and + the Roborock S7 MaxV. Thanks, [@alexdrl] & [@starkillerOG]! +- The [UniFi] integration now provides individual PoE control per port for + the client and device PoE (switches are disabled by default). + Thanks, [@Kane610]! +- The [HomeKit Controller] integration now supports encrypted Bluetooth + notifications, reducing state change latency and the number of active BLE + connections made to devices. +- When setting up a new [Generic Camera], you will be presented with a preview + of the camera showing you if it works. Nice! Thanks, [@davet2001]! +- Support for `unique_id`s was added to the following (YAML capable) integrations: + - [Bayesian], added by [@HarvsG] + - [Min/Max], added by [@gjohansson-ST] + - [Scrape], added by [@epenet] + +[@alexdrl]: https://github.com/alexdrl +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@cgarwood]: https://github.com/cgarwood +[@davet2001]: https://github.com/davet2001 +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@HarvsG]: https://github.com/HarvsG +[@janick]: https://github.com/janick +[@Kane610]: https://github.com/Kane610 +[@mib1185]: https://github.com/mib1185 +[@Ongy]: https://github.com/Ongy +[@starkillerOG]: https://github.com/starkillerOG +[@StevenLooman]: https://github.com/StevenLooman +[@thecode]: https://github.com/thecode +[@uvjustin]: https://github.com/uvjustin +[Bayesian]: /integrations/bayesian +[Fully Kiosk Browser]: /integrations/fully_kiosk +[Generic Camera]: /integrations/generic +[HomeKit Controller]: /integrations/homekit_controller +[Jellyfin]: /integrations/jellyfin +[Min/Max]: /integrations/min_max +[MQTT]: /integrations/update.mqtt +[Owntone]: /integrations/forked_daapd +[Scrape]: /integrations/scrape +[Shelly]: /integrations/shelly +[Sun condition]: /docs/scripts/conditions/#sun-condition +[UniFi]: /integrations/unifi +[update entities]: /integrations/update +[Xiaomi Miio]: /integrations/xiaomi_miio + +## New Integrations + +We welcome the following new integrations in this release: + +- [Airthings BLE], added by [@vincegio] +- [Oral-B], added by [@bdraco] +- [SNOOZ], added by [@AustinBrunkhorst] + +[@AustinBrunkhorst]: https://github.com/AustinBrunkhorst +[@bdraco]: https://github.com/bdraco +[@vincegio]: https://github.com/vincegio +[Airthings BLE]: /integrations/airthings_ble +[Oral-B]: /integrations/oralb +[SNOOZ]: /integrations/snooz + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [APC UPS Daemon], done by [@yuxincs] +- [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)], done by [@killer0071234] + +[@killer0071234]: https://github.com/killer0071234 +[@yuxincs]: https://github.com/yuxincs +[APC UPS Daemon]: /integrations/apcupsd +[Zentralanstalt für Meteorologie und Geodynamik (ZAMG)]: /integrations/zamg + +## Need help? Join the community! + +Home Assistant has a great community of users who are all more than willing +to help each other out. So, join us! + +Our very active [Discord chat server](/join-chat) is an excellent place to be +at, and don't forget to join our amazing [forums](https://community.home-assistant.io/). + +Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues), +to get it fixed! Or, check [our help page](/help) for guidance for more +places you can go. + +Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter) +to get the latest news about features, things happening in our community and +other news about building an Open Home; straight into your inbox. + +## 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 "Unit: Revolutions per minute (rpm)" %} + +Multiple integrations provide sensors with the revolutions per minute unit. +Two units have been used throughout Home Assistant to indicate this: +`RPM` and `rpm`. + +This release standardizes all integrations to use the lowercase `rpm` variant. +The following integrations have been adjusted: + +- [Big Ass Fans](/integrations/baf) +- [Danfoss Air](/integrations/danfoss_air) +- [Glances](/integrations/glances) +- [System Bridge](/integrations/system_bridge) +- [Universal Devices ISY994](/integrations/isy994) +- [Vallox](/integrations/vallox) + +Home Assistant automatically handles this change of units. However, if you +record history externally (for example, using InfluxDB), you might need to +adjust to this change. + +([@epenet] - [#79986] [#79987] [#79988] [#79989] [#79990] [#79992]) + +[@epenet]: https://github.com/epenet +[#79986]: https://github.com/home-assistant/core/pull/79986 +[#79987]: https://github.com/home-assistant/core/pull/79987 +[#79988]: https://github.com/home-assistant/core/pull/79988 +[#79989]: https://github.com/home-assistant/core/pull/79989 +[#79990]: https://github.com/home-assistant/core/pull/79990 +[#79992]: https://github.com/home-assistant/core/pull/79992 + +{% enddetails %} + +{% details "Android IP Webcam" %} + +The previously deprecated YAML configuration of the Android IP Webcam +integration has been removed. + +Android IP Webcam 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. + +([@engrbm87] - [#80875]) ([documentation](/integrations/android_ip_webcam)) + +[@engrbm87]: https://github.com/engrbm87 +[#80875]: https://github.com/home-assistant/core/pull/80875 + +{% enddetails %} + +{% details "Anthem A/V Receivers" %} + +The previously deprecated YAML configuration of the Anthem A/V Receivers +integration has been removed. + +Anthem A/V Receivers are 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. + +([@gjohansson-ST] - [#79931]) ([documentation](/integrations/anthemav)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#79931]: https://github.com/home-assistant/core/pull/79931 + +{% enddetails %} + +{% details "APC UPS Daemon" %} + +The `UPS Last Self Test` sensor is renamed to `UPS Self Test Result` and +a new `UPS Last Self Test` sensor reports time instead of the result. + +You may need to replace `sensor.ups_last_self_test` with +`sensor.ups_self_test_result` in automations and scripts +referencing the `sensor.ups_last_self_test` entity. + +([@definitio] - [#80773]) ([documentation](/integrations/apcupsd)) + +[@definitio]: https://github.com/definitio +[#80773]: https://github.com/home-assistant/core/pull/80773 + +{% enddetails %} + +{% details "Brother Printer" %} + +The `counter` and `remaining pages` attributes of the sensors +`drum remaining life`, `black drum remaining life`, `cyan drum remaining life`, +`magenta drum remaining life`, and `yellow drum remaining life` have been +migrated to their own dedicated sensor entities. + +If you are using these attributes in your automation or script, you will need +to adopt those for this change. + +([@bieniu] - [#79932]) ([documentation](/integrations/brother)) + +[@bieniu]: https://github.com/bieniu +[#79932]: https://github.com/home-assistant/core/pull/79932 + +{% enddetails %} + +{% details "ClickSend TTS" %} + +- The `caller` option from `ClickSend TTS` notify service has been removed, as + it prevented calls from being actually made. +- The default name has been changed to `clicksend_tts` instead of an empty name; otherwise + the service would appear as `notify.notify`. Now it will, by default, appear + as `notify.clicksend_tts`. This might impact your automation or script. +- The recipient's phone number now must match E.164 format. + +([@CharlieBailly] - [#76669]) ([documentation](/integrations/clicksend_tts)) + +[@CharlieBailly]: https://github.com/CharlieBailly +[#76669]: https://github.com/home-assistant/core/pull/76669 + +{% enddetails %} + +{% details "Coinbase" %} + +The previously deprecated YAML configuration of the Coinbase +integration has been removed. + +Coinbase is now configured via the UI, any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@epenet] - [#80084]) ([documentation](/integrations/coinbase)) + +[@epenet]: https://github.com/epenet +[#80084]: https://github.com/home-assistant/core/pull/80084 + +{% enddetails %} + +{% details "Dark Sky" %} + +When Darksky is configured to report in US units, the unit of measurement +for precipitation intensity has been corrected from inches to inches per hour. + +([@epenet] - [#80611]) ([documentation](/integrations/darksky)) + +[@epenet]: https://github.com/epenet +[#80611]: https://github.com/home-assistant/core/pull/80611 + +{% enddetails %} + +{% details "ecobee" %} + +Setting up the `notify` platform of the ecobee integration by a platform section +using YAML configuration is no longer supported. The `ecobee` platform section +under `notify:` can be safely removed from your YAML configuration files. + +The thermostat index can be specified by using the `target` parameter in the +notify service call instead. + +([@kevdliu] - [#78558]) ([documentation](/integrations/ecobee)) + +[@kevdliu]: https://github.com/kevdliu +[#78558]: https://github.com/home-assistant/core/pull/78558 + +{% enddetails %} + +{% details "HERE Travel Time" %} + +The route sensor has been removed, as it could contain more data than +the Home Assistant state engine is able to hold. Make sure you update any +automations or scripts that use this sensor. + +([@eifinger] - [#79211]) ([documentation](/integrations/here_travel_time)) + +[@eifinger]: https://github.com/eifinger +[#79211]: https://github.com/home-assistant/core/pull/79211 + +{% enddetails %} + +{% details "HomeKit" %} + +HomeKit instance ID assignments are now stable between restarts to comply +with the HomeKit specifications. This prevents accessories from losing +track of services between restarts, and improves stability with using +Siri especially with apple watches. + +This change may dramatically improve the stability and re-sync times of +`media_player` entities (all), `camera` entities (all), `fan` entities (presets), +`remote` entities (activity ones), `switch` entities (power strips) + triggers (all) between restarts which was especially + apparent when the home has many accessories. + +Because the assignments were previously unstable, it may be necessary to make +a one-time adjustment of accessory room assignments, favorites, +or re-pair camera accessories after upgrading. + +([@bdraco] - [#79913]) ([documentation](/integrations/homekit)) + +[@bdraco]: https://github.com/bdraco +[#79913]: https://github.com/home-assistant/core/pull/79913 + +{% enddetails %} + +{% details "HomeKit Controller" %} + +As older versions did not correctly set service identifier values, it may be +necessary to unpair and re-pair some BLE devices or to delete duplicate +entities manually. + +If the service identifiers were loaded incorrectly when the device was paired +with an older version, operations might raise `StopIteration` or `RuntimeError` +errors. You can correct those by deleting the integration for that device, +and doing a one-time re-pairing. + +([@bdraco] - [#80798]) ([documentation](/integrations/homekit_controller)) + +[@bdraco]: https://github.com/bdraco +[#80798]: https://github.com/home-assistant/core/pull/80798 + +{% enddetails %} + +{% details "Hunter Douglas PowerView" %} + +This change ceases creating battery sensors for hardwired shades. +Existing sensor entities need to be manually deleted. + +([@kingy444] - [#81013]) ([documentation](/integrations/hunterdouglas_powerview)) + +[@kingy444]: https://github.com/kingy444 +[#81013]: https://github.com/home-assistant/core/pull/81013 + +{% enddetails %} + +{% details "IntelliFire" %} + + The backing unit and the API + of the device itself uses `0-4` as a flame height setting. Through discussion + on the forums the community has decided `1-5` is a much more logical setting + for flame height, and accordingly, this has been implemented. + + If you set the flame height using automations or scripts, you will need to + adapt those to this change. + +([@jeeftor] - [#79901]) ([documentation](/integrations/intellifire)) + +[@jeeftor]: https://github.com/jeeftor +[#79901]: https://github.com/home-assistant/core/pull/79901 + +{% enddetails %} + +{% details "Logger" %} + +`logger` no longer changes the default log level of Home Assistant to `debug` +if used without a value for [`default`](/integrations/logger/#default). It +will now only change the default log level of Home Assistant from a +`warning` to something else if the `default` is explicitly specified. + +If you do not specify `default` and want Home Assistant to have a +default log level of `debug`, you will need to add this to your YAML configuration: + +```yaml +logger: + default: debug +``` + +([@mdegat01] - [#80033]) ([documentation](/integrations/logger)) + +[@mdegat01]: https://github.com/mdegat01 +[#80033]: https://github.com/home-assistant/core/pull/80033 + +{% enddetails %} + +{% details "Open Exchange Rates" %} + +The previously deprecated YAML configuration of the Open Exchange Rates +integration has been removed. + +Open Exchange Rates 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. + +([@gjohansson-ST] - [#79856]) ([documentation](/integrations/openexchangerates)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#79856]: https://github.com/home-assistant/core/pull/79856 + +{% enddetails %} + +{% details "Scrape" %} + +Previously, scrape would return the last correct value if an HTTP request +for updating failed. This has been adjusted to now mark the sensor +as `unavailable` instead. + +([@epenet] - [#80593]) ([documentation](/integrations/scrape)) + +[@epenet]: https://github.com/epenet +[#80593]: https://github.com/home-assistant/core/pull/80593 + +{% enddetails %} + +{% details "Templates (fan)" %} + +Template fans no longer change their state to `on` when `set_percentage` or +`set_preset_mode` is called when a `value_template` has been configured. + +([@Petro31] - [#75656]) ([documentation](/integrations/template)) + +[@Petro31]: https://github.com/Petro31 +[#75656]: https://github.com/home-assistant/core/pull/75656 + +{% enddetails %} + +If you are a custom integration developer and want to learn about breaking +changes and new features available for your integration: Be sure to follow our +[developer blog][devblog]. The following are the most notable for this release: + +[devblog]: https://developers.home-assistant.io/blog/ + +- [Add new precipitation intensity units](https://developers.home-assistant.io/blog/2022/10/25/new-precipitation-intensity-units) +- [Deprecate IMPERIAL_SYSTEM unit system and linked constants and properties](https://developers.home-assistant.io/blog/2022/10/14/deprecate-unit-system) +- [GitHub Commands for Code Owners](https://developers.home-assistant.io/blog/2022/10/21/code-owner-commands) +- [Introducing new unit enumerators](https://developers.home-assistant.io/blog/2022/10/26/new-unit-enumerators/) +- [Introducing virtual integrations and differentiating hubs, devices, and services](https://developers.home-assistant.io/blog/2022/10/24/hubs-devices-services-virtual-integrations) + +## All changes + +Of course, there is a lot more in this release. You can find a list of +all changes made here: [Full changelog for Home Assistant Core 2022.11](/changelogs/core-2022.11) diff --git a/source/_redirects b/source/_redirects index 8574ad5c8f5..ee1f22cfdd0 100644 --- a/source/_redirects +++ b/source/_redirects @@ -229,6 +229,14 @@ /docs/ecosystem/notebooks/installation https://data.home-assistant.io /docs/ecosystem/notebooks/stats https://data.home-assistant.io /docs/frontend/mobile https://companion.home-assistant.io +/docs/mqtt /integrations/mqtt +/docs/mqtt/birth_will /integrations/mqtt/#birth-and-last-will-messages +/docs/mqtt/broker /integrations/mqtt/#broker-configuration +/docs/mqtt/certificate /integrations/mqtt/#advanced-broker-configuration +/docs/mqtt/discovery /integrations/mqtt/#mqtt-discovery +/docs/mqtt/logging /integrations/mqtt/#logging +/docs/mqtt/service /integrations/mqtt/#publish--dump-services +/docs/mqtt/testing /integrations/mqtt/#testing-your-setup /docs/script/editor /docs/scripts/editor /docs/z-wave /integrations/zwave_js /docs/z-wave/adding /integrations/zwave_js#how-can-i-add-include-a-new-device-to-my-z-wave-network @@ -248,6 +256,7 @@ /ecosystem/notebooks/graph https://data.home-assistant.io /ecosystem/notebooks/installation https://data.home-assistant.io /ecosystem/notebooks/stats https://data.home-assistant.io +/examples/notify.mqtt /integrations/mqtt/#mqtt-notifications /ios/whats-new https://companion.home-assistant.io/docs/getting_started/getting-started /installation/nuc /installation/generic-x86-64 /integrations/auth /docs/authentication diff --git a/source/changelogs/core-2022.11.markdown b/source/changelogs/core-2022.11.markdown new file mode 100644 index 00000000000..749872fac03 --- /dev/null +++ b/source/changelogs/core-2022.11.markdown @@ -0,0 +1,1950 @@ +--- +title: Full Changelog for Home Assistant Core 2022.11 +description: Detailed changelog for the Home Assistant Core 2022.11 release +--- + +These are all the changes included in the Home Assistant Core 2022.11 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2022/10/26/release-202211/). + +## Full Changelog + +- Bump version to 2022.11.0dev0 ([@frenck] - [#79224]) +- Improve deCONZ sensor classes ([@Kane610] - [#79137]) ([deconz docs]) +- Remove route sensor of here_travel_time ([@eifinger] - [#79211]) ([here_travel_time docs]) (breaking-change) +- Clean up Add spotify support to forked-daapd ([@uvjustin] - [#79213]) ([forked_daapd docs]) +- Set nest entities as unavailable on lost connection ([@PeteRager] - [#78773]) ([nest docs]) +- Use Owntone name for forked-daapd ([@uvjustin] - [#79214]) ([forked_daapd docs]) (noteworthy) +- Bump pylutron_caseta to 0.16.0 ([@danaues] - [#79243]) ([lutron_caseta docs]) (dependency) +- Fix late comments to deCONZ sensors from #79137 ([@Kane610] - [#79272]) ([deconz docs]) +- Add ConfigEntry template function ([@engrbm87] - [#78030]) (noteworthy) +- Add cover platform for switchbee integration ([@jafar-atili] - [#78383]) ([switchbee docs]) (new-platform) +- Rename options key in rainmachine ([@epenet] - [#79249]) ([rainmachine docs]) +- Add Airthings BLE component ([@vincegio] - [#77284]) ([airthings_ble docs]) (new-integration) +- Bump actions/cache from 3.0.8 to 3.0.9 (@dependabot - [#79344]) (dependency) +- Remove blebox AirQuality platform ([@riokuu] - [#77873]) ([blebox docs]) (dependency) +- Resolve late comments to deCONZ sensor ([@Kane610] - [#79380]) ([deconz docs]) +- Add state_class MEASUREMENT to lacrosse temperature and humidity sensors ([@jplitza] - [#79379]) ([lacrosse docs]) +- Bump fjaraskupan to 2.1.0 ([@elupus] - [#79383]) ([fjaraskupan docs]) (dependency) +- Improve iterable typing (1) ([@cdce8p] - [#79295]) ([recorder docs]) +- Improve iterable typing (2) ([@cdce8p] - [#79296]) ([homekit docs]) ([lifx docs]) +- Bump aioswitcher to 3.0.2 ([@thecode] - [#79399]) ([switcher_kis docs]) (dependency) +- Bump aiolifx to 0.8.6 ([@Djelibeybi] - [#79393]) ([lifx docs]) (dependency) +- Log config_flow errors for waze_travel_time ([@eifinger] - [#79352]) ([waze_travel_time docs]) +- Ignore an '' value_template result for MQTT sensor ([@jbouwh] - [#79417]) ([mqtt docs]) +- Add Switcher Breeze support ([@thecode] - [#78596]) ([switcher_kis docs]) (new-platform) (noteworthy) +- Bump aioswitcher to 3.0.3 ([@thecode] - [#79419]) ([switcher_kis docs]) (dependency) +- vicare: Add additional temperature sensors ([@oischinger] - [#79426]) ([vicare docs]) +- Update sensors for Subaru integration ([@G-Two] - [#66996]) ([subaru docs]) +- Sort motioneye media items in media browser ([@StevenLooman] - [#79408]) ([motioneye docs]) +- Add reauthenticaion to `mikrotik` ([@engrbm87] - [#74454]) ([mikrotik docs]) +- Improve vallox tests and code quality ([@yozik04] - [#75787]) ([vallox docs]) +- Refactor LIFX multizone devices to use extended messages ([@Djelibeybi] - [#79444]) ([lifx docs]) +- Fix nina warning state ([@DeerMaximum] - [#76354]) ([nina docs]) +- Use explicit return value in azure_event_hub ([@cdce8p] - [#79315]) ([azure_event_hub docs]) +- Bump pyoctoprintapi to version 1.9 ([@rfleming71] - [#79449]) ([octoprint docs]) (dependency) +- Remove dead code code in calendar ([@allenporter] - [#79450]) ([calendar docs]) +- Support reauth for octoprint ([@rfleming71] - [#77213]) ([octoprint docs]) +- Address late review of nina ([@DeerMaximum] - [#79467]) ([nina docs]) +- Add reauth flow to BraviaTV integration ([@bieniu] - [#79405]) ([braviatv docs]) +- Improve zwave_js service error ([@raman325] - [#79504]) ([zwave_js docs]) +- Update Nest string ([@balloob] - [#79516]) ([nest docs]) +- Add optional default value to average template function/filter ([@ehendrix23] - [#77499]) (noteworthy) +- Address late comment to deCONZ climate ([@Kane610] - [#79485]) ([deconz docs]) +- Add comment in recorder about dropping column ([@emontnemery] - [#79523]) ([recorder docs]) +- Rework devolo Home Network tests ([@Shutgun] - [#74472]) ([devolo_home_network docs]) +- Allow setting set_percentage and set_preset_mode of template fan without turning on ([@Petro31] - [#75656]) ([template docs]) (breaking-change) +- Reduce coverage gaps for zwave_js ([@raman325] - [#79520]) ([zwave_js docs]) +- Add climate platform to switchbee integration ([@jafar-atili] - [#78385]) ([switchbee docs]) (new-platform) +- Use device_class duration for NUT sensors ([@mbo18] - [#79353]) ([nut docs]) +- Update mypy to 0.982 ([@cdce8p] - [#79560]) (dependency) +- Add clickatell to strict typing ([@yuvalabou] - [#79497]) ([clickatell docs]) +- Add new Islamic prayer times calculation method ([@MrAliFu] - [#79278]) ([islamic_prayer_times docs]) +- Bump actions/cache from 3.0.9 to 3.0.10 (@dependabot - [#79574]) (dependency) +- Fix typo in .strict-typing ([@ndbroadbent] - [#79584]) +- Use constant in fitbit messages ([@ndbroadbent] - [#79586]) ([fitbit docs]) +- Add unique ID to fitbit ([@ndbroadbent] - [#79587]) ([fitbit docs]) +- Fix Thermostat not showing up in SwitchBee integration ([@jafar-atili] - [#79592]) ([switchbee docs]) +- Run hassfest in pre-commit when brands changed ([@frenck] - [#79589]) +- Refactor bayesian observations using dataclass ([@HarvsG] - [#79590]) ([bayesian docs]) +- Shelly - move coordinators to coordinator.py ([@thecode] - [#79616]) ([shelly docs]) +- Use VOLUME device_class in flume ([@epenet] - [#79585]) ([flume docs]) +- Bump actions/checkout from 3.0.2 to 3.1.0 (@dependabot - [#79635]) (dependency) +- Remove superfluous strings from Lidarr ([@tkdrob] - [#79631]) ([lidarr docs]) +- Use HA `uuid` as `client_id` in BraviaTV ([@bieniu] - [#79618]) ([braviatv docs]) +- Refactor Shelly tests - do not access hass.data ([@thecode] - [#79606]) ([shelly docs]) +- Add at_started helper ([@emontnemery] - [#79577]) +- Refactor Shelly wrapper to coordinator ([@thecode] - [#79628]) ([shelly docs]) +- Change Lidarr device name to entry title ([@tkdrob] - [#79630]) ([lidarr docs]) +- Velbus split of entity in its own file ([@Cereal2nd] - [#79653]) ([velbus docs]) +- Add clicksend to strict typing ([@yuvalabou] - [#79544]) ([clicksend docs]) +- Fix Switcher breeze fan mode and swing control ([@thecode] - [#79676]) ([switcher_kis docs]) +- Bump dbus-fast to 1.26.0 ([@bdraco] - [#79684]) ([bluetooth docs]) +- Refactor Shelly to use data class for ConfigEntry data ([@thecode] - [#79671]) ([shelly docs]) +- Add default ports for Nibe heatpump ([@Tommatheussen] - [#79695]) ([nibe_heatpump docs]) +- Use Kelvin as the preferred color temperature unit ([@emontnemery] - [#79591]) ([light docs]) (noteworthy) +- Improve precision in pressure conversion ([@epenet] - [#79362]) +- Bump pyipp to 0.12.0 ([@ctalkington] - [#79687]) ([ipp docs]) (dependency) +- Fix max_color_temp_kelvin ([@flabbamann] - [#79738]) ([light docs]) +- Update ultraheat api to 0.5.0 ([@vpathuis] - [#79666]) ([landisgyr_heat_meter docs]) (dependency) +- Add supported brands to UPB integration ([@gwww] - [#79619]) +- Tweak comment in LightEntity ([@emontnemery] - [#79750]) ([light docs]) +- Only validate sensors in sensor.recorder.validate_statistics ([@emontnemery] - [#79749]) ([sensor docs]) +- Adapt homekit to color temperatures in K ([@emontnemery] - [#79713]) ([homekit docs]) (noteworthy) +- Add translations to Plugwise regulation mode ([@frenck] - [#79597]) ([plugwise docs]) +- Add visual image preview during generic camera config flow ([@davet2001] - [#71269]) ([generic docs]) (noteworthy) +- Fix broken URLs in KNX service descriptions ([@slovdahl] - [#79752]) ([knx docs]) +- Uninstall pre-installed tools from devcontainer ([@cdce8p] - [#79765]) +- Add Flume binary sensors ([@jeeftor] - [#77327]) ([flume docs]) +- Add diagnostics to LaMetric ([@frenck] - [#79757]) ([lametric docs]) +- Add LaMetric number tests ([@frenck] - [#79748]) ([lametric docs]) +- Convert kira tests to pytest ([@taiyeoguns] - [#79747]) ([kira docs]) +- De-duplicate MQTT config_flow code ([@jbouwh] - [#79369]) ([mqtt docs]) +- Add Huawei LTE reauth flow ([@scop] - [#78005]) ([huawei_lte docs]) +- Add support for Xiaomi Purifier 4 Lite ([@alexdrl] - [#79758]) ([xiaomi_miio docs]) (noteworthy) +- Add Roborock S7 MaxV for xiaomi_miio ([@starkillerOG] - [#79477]) ([xiaomi_miio docs]) (noteworthy) +- Add switch platform to LaMetric ([@frenck] - [#79759]) ([lametric docs]) (new-platform) +- Add @bachya as a LaMetric codeowner ([@bachya] - [#79772]) +- Add xiaomi miio airpurifier 4 led brightness ([@borky] - [#78793]) ([xiaomi_miio docs]) +- Add strict typing to Skybell ([@tkdrob] - [#79800]) ([skybell docs]) +- IntelliFire Fan - Bug fix on off funciton ([@jeeftor] - [#79819]) ([intellifire docs]) +- Add strict typing to Sonarr ([@tkdrob] - [#79802]) ([sonarr docs]) +- Add strict typing for radarr ([@cdce8p] - [#79242]) ([radarr docs]) +- Add strict typing for lidarr ([@cdce8p] - [#79241]) ([lidarr docs]) +- Add strict typing for WLED ([@cdce8p] - [#79822]) ([wled docs]) +- Bumb velbusaio to 2022.10.3 ([@Cereal2nd] - [#79821]) ([velbus docs]) +- Improve typing and code quality in beyesian ([@HarvsG] - [#79603]) ([bayesian docs]) +- Bump dbus-fast to 1.29.1 ([@bdraco] - [#79787]) ([bluetooth docs]) (dependency) +- Add device trigger for Lidl Silvercrest switch to deCONZ ([@jeinwag] - [#79839]) ([deconz docs]) +- Move Sonarr API calls to coordinators ([@tkdrob] - [#79826]) ([sonarr docs]) +- Add strict typing to Google Sheets ([@tkdrob] - [#79801]) +- Add Mazda brand ([@bdr99] - [#79683]) +- Change shelly trv precision to what is supported ([@philschenker] - [#79672]) ([shelly docs]) +- Use new device classes in Accuweather integration ([@bieniu] - [#79717]) ([accuweather docs]) +- Add vehicle model/year to subaru device ([@G-Two] - [#79484]) ([subaru docs]) +- Add state class to bosch_shc energy sensor ([@HennieLP] - [#79470]) ([bosch_shc docs]) +- Migrate Sonarr to new entity naming style ([@tkdrob] - [#79844]) ([sonarr docs]) +- Use value_fn in WLED number ([@cdce8p] - [#79865]) ([wled docs]) +- Bump pytrafikverket to 0.2.1 ([@gjohansson-ST] - [#79872]) ([trafikverket_weatherstation docs]) ([trafikverket_train docs]) ([trafikverket_ferry docs]) (dependency) +- Add state class measurement to SwitchBot signal strength sensors ([@Nardol] - [#79886]) ([switchbot docs]) +- Add syncthru active alerts sensor, set default manufacturer ([@scop] - [#79418]) ([syncthru docs]) +- Correct unit for Opengarage rssi sensor ([@Danielhiversen] - [#79403]) ([opengarage docs]) +- Add Roborock as supported brand of xiaomi miio ([@starkillerOG] - [#79312]) ([xiaomi_miio docs]) +- Add supported brands for Motion Blinds ([@starkillerOG] - [#79301]) ([motion_blinds docs]) +- Bump lupupy to support XT2 and up ([@majuss] - [#79289]) ([lupusec docs]) (dependency) +- Migrate Shelly to use kelvin for color temperature ([@thecode] - [#79880]) ([shelly docs]) (noteworthy) +- Rework Brother sensor platform ([@bieniu] - [#79864]) ([brother docs]) +- Remove redundant OpenUV test fixture ([@bachya] - [#79905]) ([openuv docs]) +- Remove redundant Ridwell test fixture ([@bachya] - [#79906]) ([ridwell docs]) +- Remove redundant ReCollect Waste test fixture ([@bachya] - [#79907]) ([recollect_waste docs]) +- Remove redundant WattTime test fixture ([@bachya] - [#79909]) ([watttime docs]) +- Remove redundant Notion test fixture ([@bachya] - [#79910]) ([notion docs]) +- Remove redundant IQVIA test fixture ([@bachya] - [#79911]) ([iqvia docs]) +- Remove redundant Tile test fixture ([@bachya] - [#79912]) ([tile docs]) +- Move AirNow test fixtures to `conftest.py` ([@bachya] - [#79902]) ([airnow docs]) +- Update Config Flow to show message about unsupported Overkiz hardware ([@iMicknl] - [#79503]) ([overkiz docs]) +- Bump dbus-fast to 1.33.0 ([@bdraco] - [#79921]) ([bluetooth docs]) (dependency) +- Use persistent device id for jellyfin requests ([@ctalkington] - [#79840]) ([jellyfin docs]) +- Correct use of ConfigType in MQTT config flow code ([@jbouwh] - [#79934]) ([mqtt docs]) +- Migrate attributes to separate sensors in Brother integration ([@bieniu] - [#79932]) ([brother docs]) (breaking-change) +- Remove yaml import openexchangerates ([@gjohansson-ST] - [#79856]) ([openexchangerates docs]) (breaking-change) +- Add friendly name to ZHA config entities ([@TheJulianJES] - [#79926]) ([zha docs]) +- Remove incorrect UpCloud logger from manifest ([@scop] - [#79855]) ([upcloud docs]) +- Make _TrackTemplateResultInfo not private ([@HarvsG] - [#79812]) +- Remove not used string from openexchangerates ([@gjohansson-ST] - [#79937]) ([openexchangerates docs]) +- Enable strict typing on Bayesian ([@HarvsG] - [#79870]) ([bayesian docs]) +- Add configuration URL to IPP (Printer) ([@jeeftor] - [#79313]) ([ipp docs]) +- Add support for parent_device field so entities are nested within Keypad Devices ([@danaues] - [#79513]) ([lutron_caseta docs]) +- Add sensor platform to LaMetric ([@frenck] - [#79935]) ([lametric docs]) (new-platform) +- Add support for Homeowner and Phantom Keypads ([@danaues] - [#79958]) ([lutron_caseta docs]) +- Migrate the LIFX integration to use kelvin for color temp ([@Djelibeybi] - [#79775]) ([lifx docs]) (noteworthy) +- Bump dbus-fast to 1.38.0 ([@bdraco] - [#79962]) ([bluetooth docs]) (dependency) +- Bump jellyfin-apiclient-python to 1.9.2 ([@ctalkington] - [#79945]) ([jellyfin docs]) +- Fix typo SIGNAL_BOOTSTRAP_INTEGRATONS -> SIGNAL_BOOTSTRAP_INTEGRATIONS ([@cgarwood] - [#79970]) ([websocket_api docs]) +- Use server name as entry title in Jellyfin ([@ctalkington] - [#79965]) ([jellyfin docs]) +- Add tests for Jellyfin init ([@ctalkington] - [#79968]) ([jellyfin docs]) +- Add select platform to LaMetric ([@frenck] - [#79803]) ([lametric docs]) +- Bump actions/stale from 6.0.0 to 6.0.1 (@dependabot - [#79977]) (dependency) +- Add docstring to Sensor enums ([@epenet] - [#79983]) ([sensor docs]) +- Add load_url service to fully_kiosk integration ([@cgarwood] - [#79969]) ([fully_kiosk docs]) (noteworthy) +- Clean duplicate nextcloud sensor ([@flemmingss] - [#79900]) ([nextcloud docs]) +- Migrate Switchbot to new entity naming style ([@Nardol] - [#80008]) ([switchbot docs]) +- Update black to 22.10.0 ([@frenck] - [#80006]) (dependency) +- Add options to SelectEntityDescription ([@epenet] - [#78882]) ([select docs]) (breaking-change) +- Update apprise to 1.1.0 ([@frenck] - [#80009]) ([apprise docs]) (dependency) +- Adapt group to color temperature in K ([@emontnemery] - [#79719]) ([light docs]) ([group docs]) +- Correct min/max mireds for lights which use K for color temp ([@emontnemery] - [#79998]) ([light docs]) +- Adjust device classes in smartthings ([@epenet] - [#79283]) ([smartthings docs]) +- Update screenshot ([@wrt54g] - [#79459]) +- Add support for the Flame and Morph effects for Tile and Candle ([@Djelibeybi] - [#80014]) ([lifx docs]) +- Powerview refactor prep for all shade types ([@kingy444] - [#79862]) ([hunterdouglas_powerview docs]) (dependency) +- Adapt deCONZ binary sensors to entity descriptions ([@Kane610] - [#79486]) ([deconz docs]) +- Add friendly entity names for ZHA sensors ([@dmulcahey] - [#80035]) ([zha docs]) +- Disable echo for non SQLite databases ([@emontnemery] - [#80032]) ([recorder docs]) +- Update codeowners for upnp component ([@StevenLooman] - [#80042]) ([upnp docs]) +- Move options to SelectEntityDescription in senseme ([@epenet] - [#80016]) ([senseme docs]) +- Bump pylitterbot to 2022.10.0 ([@natekspencer] - [#80050]) ([litterrobot docs]) (dependency) +- Update google-cloud-texttospeech to 2.12.3 ([@frenck] - [#80051]) ([google_cloud docs]) (dependency) +- Move options to SelectEntityDescription in lifx ([@epenet] - [#80015]) ([lifx docs]) +- Add support for Snooz BLE devices ([@AustinBrunkhorst] - [#78790]) ([snooz docs]) (new-integration) +- Bump to subarulink v0.6.1 ([@G-Two] - [#80056]) ([subaru docs]) (dependency) +- Improve client info reported to Jellyfin ([@ctalkington] - [#79974]) ([jellyfin docs]) +- Bump dbus-fast to 1.41.0 ([@bdraco] - [#80062]) ([bluetooth docs]) (dependency) +- Bump actions/setup-python from 4.1.0 to 4.3.0 (@dependabot - [#80068]) (dependency) +- Update pyupgrade to 3.1.0 ([@cdce8p] - [#80058]) (dependency) +- Remove old import logic for google_travel_time ([@eifinger] - [#80018]) ([google_travel_time docs]) +- Teach long term statistics that unit 'rpm' is same as 'RPM' ([@emontnemery] - [#80012]) ([sensor docs]) +- Cleanup blockchain sensor ([@epenet] - [#80077]) ([blockchain docs]) +- Use selectors for basic broker and options for MQTT config flow ([@jbouwh] - [#79791]) ([mqtt docs]) +- Add reauth flow for devolo_home_network ([@Shutgun] - [#71051]) ([devolo_home_network docs]) +- Remove old import logic for waze_travel_time ([@eifinger] - [#80079]) ([waze_travel_time docs]) +- Minor cleanup of sensor statistics ([@emontnemery] - [#80082]) ([sensor docs]) +- Support correcting sensor volume unit ([@emontnemery] - [#80081]) ([sensor docs]) +- Use setup-python check-latest option [ci] ([@cdce8p] - [#80078]) +- Set character set to utf8mb4 when connecting to MySQL or MariaDB databases ([@emontnemery] - [#79755]) ([recorder docs]) +- Use REVOLUTIONS_PER_MINUTE constant in vallox ([@epenet] - [#79992]) ([vallox docs]) (breaking-change) +- Use REVOLUTIONS_PER_MINUTE constant in baf ([@epenet] - [#79986]) ([baf docs]) (breaking-change) +- Use REVOLUTIONS_PER_MINUTE constant in danfoss_air ([@epenet] - [#79987]) ([danfoss_air docs]) (breaking-change) +- Use REVOLUTIONS_PER_MINUTE constant in glances ([@epenet] - [#79988]) ([glances docs]) (breaking-change) +- Use REVOLUTIONS_PER_MINUTE constant in system_bridge ([@epenet] - [#79990]) ([system_bridge docs]) (breaking-change) +- Improve some sensor statistics tests ([@emontnemery] - [#80087]) ([sensor docs]) +- Add name and slug to supervisor discovery info ([@MartinHjelmare] - [#80094]) ([hassio docs]) +- Use `entry.as_dict()` in Ambient PWS diagnostics ([@bachya] - [#80111]) ([ambient_station docs]) +- Use `entry.as_dict()` in AirVisual diagnostics ([@bachya] - [#80109]) +- Filter out non official zwave_js add-on discovery ([@MartinHjelmare] - [#80110]) ([zwave_js docs]) +- Use REVOLUTIONS_PER_MINUTE constant in isy994 ([@epenet] - [#79989]) ([isy994 docs]) (breaking-change) +- Use `entry.as_dict()` in Guardian diagnostics ([@bachya] - [#80112]) ([guardian docs]) +- Use `entry.as_dict()` in IQVIA diagnostics ([@bachya] - [#80113]) ([iqvia docs]) +- Use `entry.as_dict()` in Notion diagnostics ([@bachya] - [#80114]) ([notion docs]) +- Use `entry.as_dict()` in OpenUV diagnostics ([@bachya] - [#80115]) ([openuv docs]) +- Fix uncaught error in OpenUV diagnostics test ([@bachya] - [#80116]) ([openuv docs]) +- Update mutagen to 1.46.0 ([@frenck] - [#80004]) ([tts docs]) (dependency) +- Use `entry.as_dict()` in RainMachine diagnostics ([@bachya] - [#80118]) ([rainmachine docs]) +- Use `entry.as_dict()` in WattTime diagnostics ([@bachya] - [#80122]) ([watttime docs]) +- Use `entry.as_dict()` in SimpliSafe diagnostics ([@bachya] - [#80121]) ([simplisafe docs]) +- Powerview Implement remaining types ([@kingy444] - [#80097]) ([hunterdouglas_powerview docs]) +- Add config entry to Ridwell diagnostics ([@bachya] - [#80120]) ([ridwell docs]) +- Redact additional sensitive fields in ReCollect Waste diagnostics ([@bachya] - [#80119]) ([recollect_waste docs]) +- Huawei LTE logging related tweaks ([@scop] - [#79854]) ([huawei_lte docs]) +- Add full test coverage to LaMetric ([@frenck] - [#80134]) ([lametric docs]) +- Migrate HomeKit Controller to use stable identifiers ([@bdraco] - [#80064]) ([homekit_controller docs]) +- Add error handling to LaMetric button platform ([@frenck] - [#80136]) ([lametric docs]) +- Add has_entity_name for here_travel_time ([@eifinger] - [#80011]) ([here_travel_time docs]) +- Add sensor platform to Jellyfin ([@ctalkington] - [#79966]) ([jellyfin docs]) (new-platform) +- Bump ibeacon-ble to 0.7.4 ([@bdraco] - [#80147]) ([ibeacon docs]) (dependency) +- Strip whitespace from Nut "zero" serialno ([@ollo69] - [#80141]) ([nut docs]) +- Add brightness controls to LaMetric ([@frenck] - [#79804]) ([lametric docs]) +- Fix, improve input validation and add tests to ClickSend tts ([@CharlieBailly] - [#76669]) ([clicksend_tts docs]) (breaking-change) +- Add error handling to LaMetric number platform ([@frenck] - [#80159]) ([lametric docs]) +- Add error handling to LaMetric select platform ([@frenck] - [#80160]) ([lametric docs]) +- Add error handling to LaMetric switch platform ([@frenck] - [#80161]) ([lametric docs]) +- Bump dbus-fast to 1.44.0 ([@bdraco] - [#80149]) ([bluetooth docs]) (dependency) +- Move attribution to standalone attribute [c-d] ([@epenet] - [#80150]) +- Use percentage constant as unit in LaMetric brightness ([@frenck] - [#80162]) ([lametric docs]) +- Flume code quality improvments ([@jeeftor] - [#79815]) ([flume docs]) +- Bump dorny/paths-filter from 2.10.2 to 2.11.0 (@dependabot - [#80151]) (dependency) +- Add logger to default config for set level service ([@mdegat01] - [#80033]) ([default_config docs]) (breaking-change) +- Bump plugwise to v0.25.0 and adapt relevant plugwise code ([@bouwew] - [#80129]) ([plugwise docs]) (dependency) +- Add myself as codeowner to Alert ([@frenck] - [#80169]) ([alert docs]) +- Minor improvements of recorder typing ([@emontnemery] - [#80165]) ([recorder docs]) ([sensor docs]) +- Use percentage constant in components ([@epenet] - [#80173]) ([lyric docs]) ([statistics docs]) ([amberelectric docs]) +- Code quality improvements for Fully Kiosk ([@frenck] - [#80168]) ([fully_kiosk docs]) +- Drop unused unit_system from bmw ([@epenet] - [#80176]) ([bmw_connected_drive docs]) +- CI: Do not trigger full suite for alert integration ([@frenck] - [#80174]) +- Move alert constants into const module ([@frenck] - [#80170]) ([alert docs]) +- Remove unused is_on helper function from Alert ([@frenck] - [#80190]) ([alert docs]) +- Fix schema for the Alert integration ([@frenck] - [#80189]) ([alert docs]) +- Remove ToggleEntity inheritance from Alert ([@frenck] - [#80185]) ([alert docs]) +- Add missing type for CoordinatorEntity in Brother sensor platform ([@bieniu] - [#80197]) ([brother docs]) +- Use DistanceConverter in components ([@epenet] - [#80182]) ([nissan_leaf docs]) ([waze_travel_time docs]) ([here_travel_time docs]) ([geonetnz_quakes docs]) ([geonetnz_volcano docs]) ([gdacs docs]) +- Use DistanceConverter in components ([@epenet] - [#80207]) ([geonetnz_quakes docs]) ([gdacs docs]) +- Add button entities for Lutron Caseta/RA3/HWQSX ([@danaues] - [#79963]) ([lutron_caseta docs]) (new-platform) +- Powerview rename blackout to opaque ([@kingy444] - [#80163]) ([hunterdouglas_powerview docs]) +- Add support for area field from pylutron_caseta ([@danaues] - [#80221]) ([lutron_caseta docs]) +- Refactor recorder migration ([@emontnemery] - [#80175]) ([recorder docs]) +- Register Alert services as entity services ([@frenck] - [#80213]) ([alert docs]) +- Make notifiers of Alert optional ([@frenck] - [#80209]) ([alert docs]) +- Plugwise: implement device availability for non-legacy devices ([@bouwew] - [#80191]) ([plugwise docs]) +- Bump docker/login-action from 2.0.0 to 2.1.0 (@dependabot - [#80227]) (dependency) +- Bump dorny/paths-filter from 2.11.0 to 2.11.1 (@dependabot - [#80228]) (dependency) +- Fix recorder tests related to mysql ([@emontnemery] - [#80238]) ([recorder docs]) +- Avoid time traveling in recorder tests ([@emontnemery] - [#80247]) ([recorder docs]) +- Correct initialization of new databases ([@emontnemery] - [#80234]) ([recorder docs]) +- Fix armed state in fibaro integration ([@rappenze] - [#80218]) ([fibaro docs]) +- Add diagnostics to AirNow ([@bachya] - [#79904]) ([airnow docs]) +- Adjust temperature unit check in rainmachine ([@epenet] - [#80237]) ([rainmachine docs]) +- Bump CI cache version ([@cdce8p] - [#80265]) +- Fix logbook tests ([@emontnemery] - [#80264]) ([logbook docs]) +- Drop use of `is_metric` in tomorrowio ([@epenet] - [#80271]) ([tomorrowio docs]) +- Bump Météo-France to 1.1.0 ([@Quentame] - [#80255]) ([meteo_france docs]) (dependency) +- Bump Freebox to 1.0.0 ([@Quentame] - [#80256]) ([freebox docs]) (dependency) +- Bump actions/cache from 3.0.10 to 3.0.11 ([@cdce8p] - [#80260]) (dependency) +- IPMA Code quality improvement ([@dgomes] - [#77771]) ([ipma docs]) +- Add Switcher runner support ([@thecode] - [#79430]) ([switcher_kis docs]) (new-platform) +- Bump dbus-fast to 1.45.0 ([@bdraco] - [#80289]) ([bluetooth docs]) (dependency) +- Replace deprecated set-output commands [ci] ([@cdce8p] - [#80259]) +- Add edl21 sensors ([@Geliras] - [#80214]) ([edl21 docs]) +- Allow specifying the target table when importing statistics ([@emontnemery] - [#80230]) ([recorder docs]) +- Fix flaky recorder test ([@emontnemery] - [#80246]) ([recorder docs]) +- Update issue report link for installation type ([@KevinCathcart] - [#80300]) +- Bump temperusb to 1.6.0 ([@davet2001] - [#80296]) ([temper docs]) +- Add Heiwa as supported brand ([@renaiku] - [#80242]) ([gree docs]) (new-integration) +- Remove quality scale checkboxes from pull request template ([@thecode] - [#80298]) +- Deprecate name property of unit system ([@epenet] - [#80257]) (deprecation) +- Add repair issue for Coinbase YAML ([@TomBrien] - [#80156]) ([coinbase docs]) (deprecation) +- Add volvo on call device_info to group entities in one device per vehicle ([@dala318] - [#79329]) ([volvooncall docs]) +- Adjust distance unit check in google travel time ([@epenet] - [#80232]) ([google_travel_time docs]) +- Adjust distance unit check in geonetnz_volcano ([@epenet] - [#80244]) ([geonetnz_volcano docs]) +- Adjust get_distance_unit in mazda integration ([@epenet] - [#80233]) ([mazda docs]) +- Adjust distance unit check in gdacs ([@epenet] - [#80235]) ([gdacs docs]) +- Adjust distance unit check in geonetnz_quakes ([@epenet] - [#80236]) ([geonetnz_quakes docs]) +- Replace `is_metric` with `is METRIC_SYSTEM` ([@epenet] - [#80262]) +- Adjust distance unit check in waze travel time ([@epenet] - [#80241]) ([waze_travel_time docs]) +- Adjust distance unit check in here travel time ([@epenet] - [#80243]) ([here_travel_time docs]) +- Use attributes in coinbase sensor ([@epenet] - [#80086]) ([coinbase docs]) +- Replace `not is_metric` with `is IMPERIAL_SYSTEM` ([@epenet] - [#80266]) ([citybikes docs]) ([nissan_leaf docs]) +- Drop use of `is_metric` in ecowitt ([@epenet] - [#80267]) ([ecowitt docs]) +- Drop use of `is_metric` in weather ([@epenet] - [#80272]) ([weather docs]) +- Drop use of `is_metric` in nws ([@epenet] - [#80270]) ([nws docs]) +- Cleanup config deprecation warning ([@epenet] - [#80251]) +- Fix before sunrise OR after sunset condition ([@janick] - [#76143]) +- Update python-typing-update to 0.5.0 ([@cdce8p] - [#80315]) ([hue docs]) ([airthings_ble docs]) (dependency) +- Deprecate is_metric property of unit system ([@epenet] - [#80313]) (deprecation) +- Add ability to convert ZCL schemas to vol schemas to ZHA ([@dmulcahey] - [#79908]) ([zha docs]) +- Use SupportedDialect enum in recorder ([@emontnemery] - [#80319]) ([recorder docs]) +- Use local UNIT constants in geonetnz_volcano ([@epenet] - [#80323]) ([geonetnz_volcano docs]) +- Tag eafm sensors are measurement to collect long term stats ([@jfparis] - [#80312]) ([eafm docs]) +- Update xknx to 1.2.0 ([@marvin-w] - [#80318]) ([knx docs]) (dependency) +- Use local UNIT constants in waze_travel_time ([@epenet] - [#80325]) ([waze_travel_time docs]) +- Use local UNIT constants in here_travel_time ([@epenet] - [#80324]) ([here_travel_time docs]) +- Remove elevation warning from sun ([@frenck] - [#80239]) ([sun docs]) +- Only reload modified automations ([@emontnemery] - [#80282]) ([automation docs]) (noteworthy) +- Revert "Add Mazda brand" ([@frenck] - [#80314]) +- Fix reload of automation and scripts when blueprint changed ([@emontnemery] - [#80322]) ([automation docs]) ([script docs]) ([blueprint docs]) +- Deprecate CONF_UNIT_SYSTEM_*** constants ([@epenet] - [#80320]) ([config docs]) (deprecation) +- Little cleanup of Alert tests ([@frenck] - [#80333]) ([alert docs]) +- Convert graphite tests to pytest ([@taiyeoguns] - [#79807]) ([graphite docs]) +- Unconditionally call DomainBlueprints.populate ([@emontnemery] - [#80336]) ([automation docs]) ([script docs]) ([blueprint docs]) +- Add some typing to common test helpers ([@frenck] - [#80337]) +- Add start_application service to fully_kiosk integration ([@cgarwood] - [#80226]) ([fully_kiosk docs]) +- Automatically determine the advertising interval for bluetooth devices ([@bdraco] - [#79669]) ([esphome docs]) ([bluetooth docs]) +- Upgrade demetriek to 0.3.0 ([@frenck] - [#80350]) ([lametric docs]) (dependency) +- Add support for restoring HomeKit IIDs ([@bdraco] - [#79913]) ([homekit docs]) (breaking-change) +- Add reauth support to LaMetric ([@frenck] - [#80355]) ([lametric docs]) +- Mark LaMetric as Platinum integration ([@frenck] - [#80360]) ([lametric docs]) +- Add support for Shelly Plus Addon sensors ([@thecode] - [#79954]) ([shelly docs]) +- Add type hints to aqualogic ([@epenet] - [#80328]) ([aqualogic docs]) +- Bump bleak to 0.19.0 ([@bdraco] - [#80349]) ([bluetooth docs]) (dependency) +- Make home assistant discoverable via UPnP/SSDP ([@StevenLooman] - [#79820]) ([ssdp docs]) (dependency) (noteworthy) +- Intellifire - Number Entity - Flame Height Control ([@jeeftor] - [#79901]) ([intellifire docs]) (breaking-change) (new-platform) +- Bump fjaråskupan to 2.2.0 ([@elupus] - [#80401]) ([fjaraskupan docs]) (dependency) +- Bump bleak-retry-connector to 2.3.0 ([@bdraco] - [#80397]) ([bluetooth docs]) (dependency) +- Allow fints config as fallback for account type ([@kilrogg] - [#75680]) ([fints docs]) +- Update pip constraint to 22.4 ([@cdce8p] - [#80383]) (dependency) +- Bump yalexs_ble to 1.9.4 for bleak 0.19.0 ([@bdraco] - [#80406]) ([yalexs_ble docs]) (dependency) +- Update led-ble to 1.0.0 for bleak 0.19 ([@bdraco] - [#80403]) ([led_ble docs]) (dependency) +- Bump pySwitchbot to 0.20.0 for bleak 0.19 changes ([@bdraco] - [#80389]) ([switchbot docs]) (dependency) +- Powerview sensors updates ([@kingy444] - [#80417]) ([hunterdouglas_powerview docs]) +- Bump aiohomekit to 2.1.0 for bleak 0.19.0 ([@bdraco] - [#80426]) ([homekit_controller docs]) (dependency) +- Bump pyotgw to 2.1.1 ([@mvn23] - [#80421]) ([opentherm_gw docs]) (dependency) +- Avoid logging tracebacks for auth failures in philips js ([@elupus] - [#80381]) ([philips_js docs]) +- Display and log google_travel_time errors ([@eifinger] - [#77604]) ([google_travel_time docs]) +- Bump gcal_sync to 1.1.0 ([@allenporter] - [#80431]) ([google docs]) (dependency) +- Bump plugwise to v0.25.2 and adapt climate ([@bouwew] - [#80347]) ([plugwise docs]) (dependency) +- Fix google calendar event transparency filter ([@allenporter] - [#80438]) ([google docs]) +- Fix google calendar test to match API behavior ([@allenporter] - [#80436]) ([google docs]) +- Fire bluetooth listener for all matching devices ([@elupus] - [#80440]) ([fjaraskupan docs]) ([bluetooth docs]) +- Add friendly name to ZHA identify button ([@TheJulianJES] - [#80446]) ([zha docs]) +- Bump androidtv dependency to 0.0.69 ([@grimpy] - [#80407]) ([androidtv docs]) (dependency) +- Bump pySwitchbot to 0.20.2 ([@bdraco] - [#80435]) ([switchbot docs]) (dependency) +- Bump google-cloud-pubsub to 2.13.10 ([@allenporter] - [#80433]) ([google_pubsub docs]) +- Stop coordinator before connection in nibe_heatpump ([@elupus] - [#80396]) ([nibe_heatpump docs]) +- Refactor the core config store ([@epenet] - [#80457]) +- Update to iaqualink 0.5.0 ([@flz] - [#80304]) ([iaqualink docs]) (dependency) +- Bump qingping-ble to 0.8.0 ([@bdraco] - [#80443]) ([qingping docs]) +- Simplify parsing of script and automation config ([@emontnemery] - [#80465]) ([automation docs]) ([script docs]) +- Cleanup sensor private attributes ([@epenet] - [#80463]) ([sensor docs]) +- Refactor access to ConfigStore ([@epenet] - [#80467]) +- Update pychannels to 1.2.3 ([@marcusrbrown] - [#80409]) ([channels docs]) (dependency) +- Convert darksky unittest tests to pytest ([@jramirez857] - [#79868]) ([darksky docs]) +- Add message service to LaMetric ([@frenck] - [#80448]) ([lametric docs]) +- Powerview Add Battery Option Selection ([@kingy444] - [#80166]) ([hunterdouglas_powerview docs]) (new-platform) +- Streamline Enphase Envoy config flow tests ([@bachya] - [#79914]) ([enphase_envoy docs]) +- Fix typo in LED BLE documentation URL ([@pattyland] - [#80479]) ([led_ble docs]) +- Bump qingping-ble to 0.8.1 ([@bdraco] - [#80473]) ([qingping docs]) (dependency) +- Remove unneeded guards from (async_)add_entities call ([@frenck] - [#80471]) +- Don't mock out migration in recorder tests ([@emontnemery] - [#80480]) +- Bump deconz dependency to v105 ([@Kane610] - [#80492]) ([deconz docs]) (dependency) +- Fix connectable Bluetooth devices not being seen if the nearest scanner is non-connectable ([@bdraco] - [#80388]) ([bluetooth docs]) +- Update sqlalchemy to 1.4.42 ([@frenck] - [#80495]) ([recorder docs]) ([sql docs]) (dependency) +- Move attribution to standalone attribute [e-g] ([@epenet] - [#80513]) +- Reduce missed coverage in zwave_js ([@raman325] - [#79571]) ([zwave_js docs]) +- Modbus: Add support for Holding Registers to Binary Sensor ([@Nippey] - [#80460]) ([modbus docs]) +- Update sentry-sdk to 1.9.10 ([@frenck] - [#80474]) ([sentry docs]) (dependency) +- Update freezegun to 1.2.2 ([@frenck] - [#80498]) (dependency) +- Update yamllint to 1.28.0 ([@frenck] - [#80497]) (dependency) +- Bump pyunifiprotect to 4.3.4 ([@AngellusMortis] - [#80496]) ([unifiprotect docs]) (dependency) +- Move attribution to standalone attribute [h-l] ([@epenet] - [#80516]) +- Fix Plex reauth with multiple available servers ([@jjlawren] - [#80508]) ([plex docs]) +- Update bsblan integration ([@liudger] - [#67399]) ([bsblan docs]) +- Move attribution to standalone attribute [m-q] ([@epenet] - [#80518]) +- Revert BSBLAN name change to fix hassfest ([@cdce8p] - [#80525]) ([bsblan docs]) +- Move attribution to standalone attribute [r-s] ([@epenet] - [#80520]) +- Move attribution to standalone attribute [t-z] ([@epenet] - [#80521]) +- Use _attr_attribution in suez_water ([@epenet] - [#80527]) ([suez_water docs]) +- Improve msg type hint in websocket commands ([@epenet] - [#80530]) +- Fix payload in rest ([@epenet] - [#80544]) ([rest docs]) +- Bump velbus-aio to 2022.10.4 ([@niobos] - [#80510]) ([velbus docs]) (dependency) +- Remove unnecessary session scoping to several test fixtures ([@bachya] - [#80500]) +- Reduce chance of bluetooth devices going unavailable when adapter stops responding ([@bdraco] - [#80545]) ([bluetooth docs]) +- Ensure Enphase Envoy test fixtures aren't session-scoped ([@bachya] - [#80499]) ([enphase_envoy docs]) +- Add diagnostics to Enphase Envoy ([@bachya] - [#79950]) ([enphase_envoy docs]) +- Bump bleak-retry-connector to 2.3.1 ([@bdraco] - [#80549]) ([bluetooth docs]) (dependency) +- Bump aioswitcher to 3.1.0 ([@thecode] - [#80534]) ([switcher_kis docs]) (dependency) +- Add Shelly support for sleeping Gen2 devices ([@thecode] - [#79889]) ([shelly docs]) (dependency) (noteworthy) +- Bump aiohomekit to 2.1.1 ([@bdraco] - [#80560]) ([homekit_controller docs]) +- Migrate Broadlink to new entity naming style ([@Nardol] - [#80187]) ([broadlink docs]) +- Update demetriek to 0.4.0 ([@frenck] - [#80567]) ([lametric docs]) (dependency) +- Add new codeowners to scrape ([@epenet] - [#80569]) ([scrape docs]) +- Add chart service to LaMetric ([@frenck] - [#80554]) ([lametric docs]) +- Add websocket type hints in conversation ([@epenet] - [#80535]) ([conversation docs]) +- Add websocket type hints in components ([@epenet] - [#80533]) ([mqtt docs]) ([cloud docs]) ([webhook docs]) ([mobile_app docs]) ([trace docs]) +- Add websocket type hints in config ([@epenet] - [#80532]) ([config docs]) +- Add websocket type hints in blueprint ([@epenet] - [#80531]) ([blueprint docs]) +- Ensure recorder test fixture is setup before hass fixture ([@emontnemery] - [#80528]) +- Add guard in recorder retry function ([@emontnemery] - [#80585]) ([recorder docs]) +- Make all datetime columns in recorder DB µs precision ([@emontnemery] - [#80584]) ([recorder docs]) +- Add sensor, selector and switch for Plugwise Anna + Loria combination ([@bouwew] - [#80558]) ([plugwise docs]) +- Integrations v2.1: Differentiating hubs, devices and services ([@frenck] - [#80524]) ([config docs]) +- Add CI job which runs recorder tests on MariaDB ([@emontnemery] - [#80586]) ([recorder docs]) +- Rename IMPERIAL_SYSTEM to US_CUSTOMARY_SYSTEM ([@epenet] - [#80253]) (deprecation) +- Fix invalid type hint in scrape ([@epenet] - [#80543]) ([scrape docs]) +- Add type hints to rest integration ([@epenet] - [#80546]) ([rest docs]) +- Adjust precipitation units ([@epenet] - [#79780]) (deprecation) +- Adjust precipitation units in components ([@epenet] - [#79783]) +- Add precipitation_intensity sensor device class ([@epenet] - [#79779]) ([sensor docs]) +- Add buttons to dismiss notifications in LaMetric ([@frenck] - [#80605]) ([lametric docs]) +- Improve type hints in blebox ([@epenet] - [#80511]) ([blebox docs]) +- Use US_CUSTOMARY_SYSTEM in components ([@epenet] - [#80623]) +- Expose UniFi PoE ports as individual switches ([@Kane610] - [#80566]) ([unifi docs]) +- Limit recorder pytest job [ci] ([@cdce8p] - [#80625]) +- Tweak MariaDB CI job ([@emontnemery] - [#80631]) +- Add integration_type to Axis, deCONZ and UniFi manifest ([@Kane610] - [#80630]) ([axis docs]) ([deconz docs]) ([unifi docs]) +- Fix invalid warning in scrape ([@epenet] - [#80599]) ([scrape docs]) +- Bump ha-av to v10.0.0 ([@uvjustin] - [#80514]) ([stream docs]) ([generic docs]) (dependency) +- Replace constants with enums in UniFi ([@Kane610] - [#80637]) ([unifi docs]) +- Bump dbus-fast to 1.47.0 ([@bdraco] - [#80633]) ([bluetooth docs]) (dependency) +- Address jellyfin sensor feedback ([@ctalkington] - [#80222]) ([jellyfin docs]) +- Update pylint to 2.15.4 ([@cdce8p] - [#80612]) ([zha docs]) ([forked_daapd docs]) ([repairs docs]) (dependency) +- Enforce kwargs in unit system initialisation ([@epenet] - [#80620]) +- Use custom attributes description in Sonarr ([@tkdrob] - [#79845]) ([sonarr docs]) +- Add websocket type hints in entity_registry ([@epenet] - [#80657]) ([config docs]) +- Update frontend to 20221020.0 ([@bramkragten] - [#80661]) ([frontend docs]) +- Improve type hint in entity_component ([@epenet] - [#80596]) +- Add mode control for Modbus climate entities ([@avishorp] - [#73906]) ([modbus docs]) +- Add websocket type hints in components ([@epenet] - [#80654]) +- Bump aioshelly to 4.0.0 ([@thecode] - [#80423]) ([shelly docs]) (dependency) +- Add blebox binary_sensor platform ([@riokuu] - [#79535]) ([blebox docs]) (new-platform) +- Use US_CUSTOMARY_SYSTEM in tests ([@epenet] - [#80658]) +- Refactor blebox sensors ([@riokuu] - [#80671]) ([blebox docs]) +- Add websocket type hints in lovelace ([@epenet] - [#80537]) ([lovelace docs]) +- Adjust device classes in tasmota ([@epenet] - [#79282]) ([tasmota docs]) +- Speed up restart when bluetooth adapter is in a failed state ([@bdraco] - [#80640]) ([bluetooth docs]) +- Remove deprecated yaml import for waze_travel_time ([@eifinger] - [#80669]) ([waze_travel_time docs]) +- Remove balloob as code owner Ring ([@balloob] - [#80680]) ([ring docs]) +- Fix custom components not working with integration descriptions ([@balloob] - [#80686]) +- Simplify mocking UniFi websocket ([@Kane610] - [#80652]) ([unifi docs]) +- Defer bluetooth scanner watchdog restart if one is already in progress ([@bdraco] - [#80679]) ([bluetooth docs]) +- Bump snapcast to 2.3.0 ([@luar123] - [#80688]) ([snapcast docs]) (dependency) +- Bump zeroconf to 0.39.2 ([@bdraco] - [#80699]) ([zeroconf docs]) (dependency) +- Add diagnostics to jellyfin ([@ctalkington] - [#80651]) ([jellyfin docs]) +- Replace custom OpenUV data object with coordinators ([@bachya] - [#80705]) ([openuv docs]) +- Move default option handling to config_flow for google_travel_time ([@eifinger] - [#80607]) ([google_travel_time docs]) +- Bump pyatmo to 7.2.0 ([@cgtobi] - [#80698]) ([netatmo docs]) +- Fix error when setting Netatmo climate preset ([@cgtobi] - [#80700]) +- Integrations v2.1: Virtual integrations ([@frenck] - [#80613]) (breaking-change) +- Add entity_registry_enabled_default and missing EntityCategories in Plugwise ([@bouwew] - [#80629]) ([plugwise docs]) +- Fix ZeroDivisionError for Fritz!Smarthome electric current sensor ([@renegaderyu] - [#80682]) ([fritzbox docs]) +- Improve calendar trigger test quality ([@allenporter] - [#79451]) ([calendar docs]) +- Streamline calendar dataclass API/attribute conversions ([@allenporter] - [#79598]) ([calendar docs]) +- Add iot_standards to devolo brand ([@Shutgun] - [#80332]) +- Improve typing hints MQTT __init__ ([@jbouwh] - [#80674]) ([mqtt docs]) +- Add Bluesound unique id ([@fredrike] - [#80559]) ([bluesound docs]) +- Update home-assistant/wheels to 2022.10.1 ([@frenck] - [#80723]) (dependency) +- Update sentry-sdk to 1.10.0 ([@frenck] - [#80721]) ([sentry docs]) (dependency) +- Remove building wheels for face detection ([@pvizeli] - [#80728]) +- Bump simplepush to 2.1.1 ([@tymm] - [#80608]) ([simplepush docs]) (dependency) +- Small typing improvements for Plugwise ([@frenck] - [#80722]) ([plugwise docs]) +- Reduce unnecessary alarm firing to speed up calendar trigger test ([@allenporter] - [#80732]) ([calendar docs]) +- Log invalid messages instead of raising in system_log ([@bdraco] - [#80645]) ([system_log docs]) +- Move default options to config_flow for waze_travel_time ([@eifinger] - [#80681]) ([waze_travel_time docs]) +- Remove Xiaomi Miio YAML import ([@starkillerOG] - [#78995]) ([xiaomi_miio docs]) +- Fix zha LogEntry call ([@bdraco] - [#80737]) ([zha docs]) +- Remove system_log missing format arg test ([@bdraco] - [#80739]) ([system_log docs]) +- Add `_TZE200_kds0pmmv` to ZHA `ZONNSMARTThermostat` ([@javicalle] - [#80746]) ([zha docs]) +- Add homekit notifications to the list of allowed apple bluetooth start bytes ([@bdraco] - [#80733]) ([bluetooth docs]) +- Remove redundant `async_update` for OpenUV entities ([@bachya] - [#80735]) ([openuv docs]) +- Bump qingping-ble to 0.8.2 to handle door left open ([@bdraco] - [#80748]) ([qingping docs]) (dependency) +- Bump pysma to 0.7.1 ([@rklomp] - [#80601]) ([sma docs]) +- Load ecobee notify platform via discovery ([@kevdliu] - [#78558]) ([ecobee docs]) (breaking-change) +- Update pylint to 2.15.5 ([@cdce8p] - [#80759]) (dependency) +- Conditionally include config flow and iot_class when relevant ([@balloob] - [#80756]) +- Add ultraloq virtual integration ([@balloob] - [#80755]) ([ultraloq docs]) +- Update frontend to 20221021.0 ([@bramkragten] - [#80751]) ([frontend docs]) +- Remove unused keys from ultraloq ([@balloob] - [#80762]) +- Add "power on state" config entity for Tuya plugs to ZHA ([@TheJulianJES] - [#80486]) ([zha docs]) +- Add "power outage memory" config entity to Xiaomi EU plugs to ZHA ([@TheJulianJES] - [#80444]) ([zha docs]) +- Add Philips Hue motion sensor config entities to ZHA ([@TheJulianJES] - [#79923]) ([zha docs]) +- Update pending message error ([@balloob] - [#80763]) ([websocket_api docs]) +- Update zwave_js.refresh_value service example ([@kpine] - [#80764]) ([zwave_js docs]) +- Fix Shelly entry unload and add tests for init ([@thecode] - [#80760]) ([shelly docs]) +- Remove myself from Xiaomi Miio code owner list ([@bieniu] - [#80768]) ([xiaomi_miio docs]) +- Add `integration_type` field for a few integrations ([@bieniu] - [#80767]) +- Add myself as code owner to util and const ([@epenet] - [#80664]) +- Add integration_type to devolo integrations ([@Shutgun] - [#80695]) ([devolo_home_control docs]) ([devolo_home_network docs]) +- Bump owntone requirements ([@uvjustin] - [#80552]) ([forked_daapd docs]) (dependency) +- Extend roomba mac range in manifest ([@onpremcloudguy] - [#80714]) ([roomba docs]) +- Bump bleak-retry-connector to 2.3.2 ([@bdraco] - [#80790]) ([bluetooth docs]) (dependency) +- Bump soco to 0.28.1 ([@jjlawren] - [#80792]) ([sonos docs]) (dependency) +- Bump aioshelly to 4.1.0 ([@thecode] - [#80795]) ([shelly docs]) (dependency) +- Bump aiohomekit to 2.2.0 ([@bdraco] - [#80798]) ([homekit_controller docs]) (breaking-change) (dependency) (noteworthy) +- Log bluetooth advertisement before firing bleak callbacks ([@bdraco] - [#80800]) ([bluetooth docs]) +- Update psutil to 5.9.3 ([@frenck] - [#80775]) ([systemmonitor docs]) (dependency) +- Bump plugwise to v0.25.3 ([@bouwew] - [#80782]) ([plugwise docs]) (dependency) +- Refactor Powerview sensor to dataclass ([@kingy444] - [#80536]) ([hunterdouglas_powerview docs]) +- Add themes for LIFX multi-zone devices via a new select entity ([@Djelibeybi] - [#80067]) ([lifx docs]) +- Refactor UniFi upgrade entities ([@Kane610] - [#80752]) ([unifi docs]) +- Bump pydaikin to 2.8.0 ([@fredrike] - [#80823]) ([daikin docs]) (dependency) +- Refactor UniFi outlet switches ([@Kane610] - [#80738]) ([unifi docs]) +- Add integration_type to ipp and roku ([@ctalkington] - [#80831]) ([roku docs]) +- Improve UniFi PoE unique ID ([@Kane610] - [#80740]) ([unifi docs]) +- Prevent HomeKit Controller BLE connect retries from blocking startup ([@bdraco] - [#80827]) ([homekit_controller docs]) +- Add integration_type to jellyfin ([@ctalkington] - [#80832]) ([jellyfin docs]) +- Set integration type on codeowned integrations @frenck ([@frenck] - [#80830]) +- Add entity service - Set Full AC state to Sensibo ([@gjohansson-ST] - [#80820]) ([sensibo docs]) +- Minor cleanup Sensibo ([@gjohansson-ST] - [#80835]) ([sensibo docs]) +- Small lifx fixes ([@bdraco] - [#80828]) ([lifx docs]) +- Add dynamic generation of device triggers from keypad buttons ([@danaues] - [#80797]) ([lutron_caseta docs]) +- Bump pylitterbot to 2022.10.2 ([@natekspencer] - [#80836]) ([litterrobot docs]) (dependency) +- Add Sensibo Climate React ([@gjohansson-ST] - [#78221]) ([sensibo docs]) +- Fix temperature unit in sensor for Sensibo ([@gjohansson-ST] - [#80843]) ([sensibo docs]) +- Add presence duration number ([@Kane610] - [#79498]) ([deconz docs]) +- Refactor UniFi DPI switch entities ([@Kane610] - [#80761]) ([unifi docs]) +- Fix Lutron Caseta area names by ignoring root area during area name retrieval ([@danaues] - [#80576]) ([lutron_caseta docs]) +- Add ZHA StartUpColorTemperature configuration entity ([@jloehr] - [#80853]) ([zha docs]) +- Fix oncue data unavailable when genset disconnected ([@PeteRager] - [#80668]) ([oncue docs]) +- Try again to populate HKC BLE accessory state after startup ([@bdraco] - [#80854]) ([homekit_controller docs]) +- Add Lutron Caseta zeroconf discovery for RA3/HWQSX ([@danaues] - [#80852]) ([lutron_caseta docs]) +- Fix whitespace in oncue manifest ([@bdraco] - [#80859]) ([oncue docs]) +- Code quality update for Subaru sensors ([@G-Two] - [#79482]) ([subaru docs]) +- Support Nobø Switch as temperature sensor ([@oyvindwe] - [#78480]) ([nobo_hub docs]) (new-platform) +- Bump aiohomekit to 2.2.2 ([@bdraco] - [#80857]) ([homekit_controller docs]) +- Update denonavr to version 0.10.12 ([@ol-iver] - [#80861]) ([denonavr docs]) (dependency) +- Add device-specific diagnostics to the LIFX integration ([@Djelibeybi] - [#79964]) ([lifx docs]) +- Bump gcal_sync to 2.2.0 ([@allenporter] - [#80863]) ([google docs]) (dependency) +- Add Freebox button to mark calls as read ([@Quentame] - [#80609]) ([freebox docs]) +- Bump actions/upload-artifact from 3.1.0 to 3.1.1 (@dependabot - [#80867]) (dependency) +- Move advanced MQTT options to entry ([@jbouwh] - [#79351]) ([mqtt docs]) (deprecation) +- Remove precipitation note from length units ([@epenet] - [#80677]) +- Add `update` platform to MQTT integration ([@bieniu] - [#80659]) ([mqtt docs]) (new-platform) (noteworthy) +- CI: Fix partial coverage ([@epenet] - [#80877]) +- Allow hostname for nibe heatpump ([@elupus] - [#80793]) ([nibe_heatpump docs]) +- Use DataUpdateCoordinator in scrape ([@epenet] - [#80593]) ([scrape docs]) (breaking-change) +- Add typing hints for MQTT mixins ([@jbouwh] - [#80702]) ([mqtt docs]) +- Add unique_id to scrape ([@epenet] - [#80581]) ([scrape docs]) (noteworthy) +- Adjust pylint for IMPERIAL_SYSTEM deprecation ([@epenet] - [#80874]) +- Add suggested_unit_of_measurement attribute to sensors ([@emontnemery] - [#80638]) ([sensor docs]) +- Bump bleak-retry-connector to 2.4.0 ([@bdraco] - [#80887]) ([bluetooth docs]) (dependency) +- Fix HKC exceptions during BLE startup not being caught ([@bdraco] - [#80882]) ([homekit_controller docs]) +- Bump aiohomekit to 2.2.3 ([@bdraco] - [#80891]) ([homekit_controller docs]) (dependency) +- Add support for Netatmo noise sensor to homekit_controller ([@Jc2k] - [#80889]) ([homekit_controller docs]) +- Refactor zwave_js add-on manager ([@MartinHjelmare] - [#80883]) ([zwave_js docs]) +- Add EMISSION_CHECK to BMW Connected Drive ([@rikroe] - [#80819]) ([bmw_connected_drive docs]) +- Bump aiohomekit to 2.2.4 ([@bdraco] - [#80899]) ([homekit_controller docs]) (dependency) +- Only reload modified scripts ([@emontnemery] - [#80470]) ([automation docs]) ([script docs]) (noteworthy) +- Add integration_type to ISY994 manifest and bump pyisy to 3.0.8 ([@shbatm] - [#80906]) ([isy994 docs]) +- Raise exception when esphome ble client disconnects during operation ([@bdraco] - [#80885]) ([esphome docs]) +- Add new WATER device class ([@epenet] - [#80886]) ([sensor docs]) +- Fix XMPP room notifications ([@Socalix] - [#80794]) ([xmpp docs]) +- Bump bleak-retry-connector to 2.4.2 ([@bdraco] - [#80908]) ([bluetooth docs]) (dependency) +- Add "Push Flow Meter Data" service to RainMachine and bump regenmaschine to 2022.10.0 ([@shbatm] - [#80890]) ([rainmachine docs]) +- Fix SSDP/UPnP server after testing ([@StevenLooman] - [#80815]) ([ssdp docs]) (dependency) +- Add integration_type to iss ([@DurgNomis-drol] - [#80909]) ([iss docs]) +- Cleanup Shelly update platform ([@thecode] - [#80845]) ([shelly docs]) +- Add integration_type to launchlibrary ([@DurgNomis-drol] - [#80907]) ([launch_library docs]) +- Add media_player platform to Jellyfin ([@Ongy] - [#76801]) ([jellyfin docs]) (new-platform) (noteworthy) +- Add oralb integration ([@bdraco] - [#80918]) ([oralb docs]) (new-integration) +- Add apcupsd laststest sensor ([@definitio] - [#80773]) ([apcupsd docs]) (breaking-change) +- Use EntityDescription in Freebox switch ([@Quentame] - [#80858]) ([freebox docs]) +- Add integration_type to the velbus component ([@Cereal2nd] - [#80924]) ([velbus docs]) +- Use ESPHome manufacturer name from device if provided ([@jesserockz] - [#80928]) ([esphome docs]) (dependency) +- Don't trigger statistics issues when sensor units are equivalent ([@emontnemery] - [#80099]) ([sensor docs]) +- Allow gas units to be overriden ([@epenet] - [#80884]) ([sensor docs]) +- Add visual image preview during generic camera options flow ([@davet2001] - [#80392]) ([generic docs]) +- Add tuya access control devices (binary status of lock) ([@osono-design] - [#79793]) ([tuya docs]) +- Use start helper in recorder ([@emontnemery] - [#79559]) ([recorder docs]) +- Add IKEA SYMFONISK as virtual integration ([@frenck] - [#80833]) ([symfonisk docs]) +- Load themes from themes folder by default ([@frenck] - [#80937]) +- Rename entry_id template method to config_entry_id ([@frenck] - [#80935]) +- Bump aioshelly to 4.1.1 ([@thecode] - [#80939]) ([shelly docs]) (dependency) +- Bayesian - support `unique_id:` ([@HarvsG] - [#79879]) ([bayesian docs]) (noteworthy) +- Add additional rules for converting distances ([@emontnemery] - [#80940]) +- Add support for EventBridge to aws integration ([@pghazanfari] - [#77573]) ([aws docs]) +- Set water device class to flo, homewizard, p1_monitor, toon ([@frenck] - [#80944]) ([toon docs]) ([flo docs]) ([p1_monitor docs]) ([homewizard docs]) (noteworthy) +- Add tplink dhcp entry for EP25 model ([@hackerESQ] - [#80650]) ([tplink docs]) +- Extend Sonos queue operation timeouts ([@jjlawren] - [#80804]) ([sonos docs]) +- Remove deprecated YAML in Pushover ([@engrbm87] - [#80876]) ([pushover docs]) (deprecation) +- Add alarmed binary sensor to Risco integration ([@OnFreund] - [#77315]) ([risco docs]) +- Fix `integrations.json` creation, make `iot_standards` a list ([@bramkragten] - [#80945]) ([ultraloq docs]) +- Update Fritz! lights to use kelvin ([@flabbamann] - [#79733]) ([light docs]) ([fritzbox docs]) (noteworthy) +- Remove myself from edl21 codeowners ([@mtdcr] - [#80947]) ([edl21 docs]) +- Add rules for converting speeds ([@emontnemery] - [#80943]) +- Mark some integrations as system integrations ([@emontnemery] - [#80948]) ([persistent_notification docs]) ([cloud docs]) ([map docs]) ([system_log docs]) ([zone docs]) ([stream docs]) ([homeassistant_alerts docs]) +- Adjust unit_system type hints ([@epenet] - [#80946]) +- Add additional sensors to RainMachine ([@shbatm] - [#80914]) ([rainmachine docs]) +- Add GJ as supported unit for energy sensors ([@emontnemery] - [#80870]) ([sensor docs]) ([energy docs]) +- Replace new PRECIPITATION_INTENSITY with enum ([@epenet] - [#80653]) +- Add sum-differences characteristics to statistics component ([@ThomDietrich] - [#79439]) ([statistics docs]) +- Add wind_speed sensor device class ([@epenet] - [#79789]) ([sensor docs]) +- Adjust formatting in unit system tests ([@epenet] - [#80958]) +- Improve loading UniFi switch entities ([@Kane610] - [#80910]) ([unifi docs]) +- Remove deprecate service in `speedtestdotnet` ([@engrbm87] - [#80938]) ([speedtestdotnet docs]) (deprecation) +- Adds states and state_attr as a filter, adds is_state and is_state_attr as a test. ([@Petro31] - [#79473]) (noteworthy) +- Add Octoprint camera entity ([@rfleming71] - [#79689]) ([octoprint docs]) (new-platform) +- Add week period to recorder statistics api ([@mib1185] - [#80784]) ([recorder docs]) +- Bump aiogithubapi from 22.2.4 to 22.10.1 ([@ludeeus] - [#80968]) ([github docs]) (dependency) +- Add deprecation warning for statistics integration default buffer_size ([@ThomDietrich] - [#69700]) ([statistics docs]) +- Remove hardware and fix raspberry pi brands in integrations.json ([@frenck] - [#80970]) ([remote_rpi_gpio docs]) +- Update devcontainer appPort to allow connections from external IPs ([@thecode] - [#79730]) +- Clean-up Shelly legacy update entities ([@thecode] - [#80961]) ([shelly docs]) +- Set integration type on codeowned integrations @bachya ([@bachya] - [#80974]) +- Rewrite UniFi block client switch ([@Kane610] - [#80969]) ([unifi docs]) +- Add integration_type to vizio, tomorrowio, zwave_js ([@raman325] - [#80975]) ([vizio docs]) ([zwave_js docs]) ([tomorrowio docs]) +- Remove deprecated YAML in `android_ip_webcam` ([@engrbm87] - [#80875]) ([android_ip_webcam docs]) (breaking-change) +- Address review feedback for jellyfin ([@ctalkington] - [#80987]) ([jellyfin docs]) +- Add Velbus cover opening/closing ([@niobos] - [#79851]) ([velbus docs]) +- Bump aiolifx_effects dependency to 0.3.0 ([@Djelibeybi] - [#80994]) ([lifx docs]) (dependency) +- Add additional data to HomeKit diagnostics ([@bdraco] - [#80980]) ([homekit docs]) +- Update ibeacon-ble to 1.0.1 ([@bdraco] - [#80785]) ([ibeacon docs]) +- Use `._attr_*` properties for monoprice integration ([@flacjacket] - [#80505]) ([monoprice docs]) +- Add rules for converting volumes ([@emontnemery] - [#80951]) +- Add unique id for min_max ([@gjohansson-ST] - [#81007]) ([min_max docs]) (noteworthy) +- Fix precipitation units in darksky ([@epenet] - [#80611]) ([darksky docs]) (breaking-change) +- fix integration descriptions ([@bramkragten] - [#81008]) +- Update orjson to 3.8.1 ([@frenck] - [#81000]) (dependency) +- Tibber strict typing ([@Danielhiversen] - [#79407]) ([tibber docs]) +- Remove yaml import anthemav ([@gjohansson-ST] - [#79931]) ([anthemav docs]) (breaking-change) +- Don't set force bool during set_humidity ([@nkgilley] - [#80269]) ([generic_hygrostat docs]) +- Add auto preset to Comfoconnect fan ([@kneirinck] - [#80697]) ([comfoconnect docs]) +- Adjust unique ID of Octoprint camera entity ([@frenck] - [#80996]) ([octoprint docs]) +- Use precipitation_intensity class in integrations ([@epenet] - [#80615]) ([tellduslive docs]) ([rfxtrx docs]) ([ambient_station docs]) ([buienradar docs]) ([aemet docs]) ([ecowitt docs]) +- Disable Powerview signal sensor by default ([@kingy444] - [#81014]) ([hunterdouglas_powerview docs]) +- Use `wind_speed` device class instead of `speed` in Accuweather ([@bieniu] - [#81016]) ([accuweather docs]) +- Strict typing for shared MQTT modules ([@jbouwh] - [#80913]) ([mqtt docs]) +- Use a unique cache folder per Velbus config entry ([@Cereal2nd] - [#79792]) ([velbus docs]) +- Move options to SelectEntityDescription in goodwe ([@epenet] - [#80017]) ([goodwe docs]) +- Migrate energy units to an enum ([@epenet] - [#80998]) ([energy docs]) (deprecation) +- Migrate length units to an enum ([@epenet] - [#81011]) (deprecation) +- Migrate pressure units to an enum ([@epenet] - [#81009]) (deprecation) +- Migrate speed units to an enum ([@epenet] - [#81004]) (deprecation) +- Migrate temperature units to an enum ([@epenet] - [#81006]) (deprecation) +- Bump ZHA quirks to 0.0.84 ([@dmulcahey] - [#81015]) ([zha docs]) (dependency) +- Remove hardwired Powerview battery sensor ([@kingy444] - [#81013]) ([hunterdouglas_powerview docs]) (breaking-change) +- Add integration type to KNX integration ([@marvin-w] - [#81003]) ([knx docs]) +- Set hvv_departures device entry type to service ([@vigonotion] - [#80964]) ([hvv_departures docs]) +- Add has_entity_name support to hvv_departures ([@vigonotion] - [#80963]) ([hvv_departures docs]) +- Add an RSSI sensor to the LIFX integration ([@Djelibeybi] - [#80993]) ([lifx docs]) (new-platform) +- Migrate mass units to an enum ([@epenet] - [#81021]) (deprecation) +- Add a new clear cache service to the velbus integration ([@Cereal2nd] - [#79995]) ([velbus docs]) +- Use scan_interval in `netdata` ([@Xeevis] - [#80959]) ([netdata docs]) +- Update Google Calendar to synchronize calendar events efficiently ([@allenporter] - [#80925]) ([google docs]) +- Fix zeroconf starting later than expected ([@bdraco] - [#81023]) ([zeroconf docs]) +- Fix zwave_js port enumeration ([@MartinHjelmare] - [#81020]) ([zwave_js docs]) +- Remove YAML import from coinbase ([@epenet] - [#80084]) ([coinbase docs]) (breaking-change) +- Migrate power units to an enum ([@epenet] - [#81026]) (deprecation) +- Fix zeroconf when location name has a period ([@bdraco] - [#81022]) ([zeroconf docs]) +- Clean up velbus cache folder only on removal of the config entry ([@Cereal2nd] - [#81031]) +- Migrate volume units to an enum ([@epenet] - [#81028]) (deprecation) +- Add integration type to fritzbox_callmointor integration ([@cdce8p] - [#81032]) ([fritzbox_callmonitor docs]) +- Blebox typehints in binary sensor tests ([@riokuu] - [#80676]) ([blebox docs]) +- Add config flow to zamg ([@killer0071234] - [#66469]) ([zamg docs]) (config-flow) +- Correct Import of ReceivePayloadType ([@jbouwh] - [#81035]) ([mqtt docs]) ([mysensors docs]) +- Allow to cast in HLS format when using WebRTC ([@felipecrs] - [#80646]) ([camera docs]) +- Use unit enums in unit utilities ([@epenet] - [#81030]) +- Allow device class for switch to be set in knx ([@elupus] - [#81039]) ([knx docs]) +- Add support for water usage Flume ([@frenck] - [#81041]) ([flume docs]) +- Allow integrations to drop custom unit conversion ([@emontnemery] - [#81005]) ([sensor docs]) +- Add support to the energy integration for tracking water usage ([@emontnemery] - [#80888]) ([energy docs]) +- Bump frontend to 20221026.0 ([@balloob] - [#81042]) ([frontend docs]) +- Move upnp derived sensors to library, be more robust about failing getting some data ([@StevenLooman] - [#79955]) ([upnp docs]) (dependency) +- Improve readability by reducing indentation ([@kneirinck] - [#81040]) ([comfoconnect docs]) +- Bump dbus-fast to 1.49.0 ([@bdraco] - [#81043]) ([bluetooth docs]) (dependency) +- Add WS API recorder/statistic_during_period ([@emontnemery] - [#80663]) ([recorder docs]) (beta fix) +- Bump aiohomekit to 2.2.5 ([@bdraco] - [#81048]) ([homekit_controller docs]) (beta fix) (dependency) +- Bump zeroconf to 0.39.3 ([@bdraco] - [#81049]) ([zeroconf docs]) (beta fix) +- Bump zigpy to 0.51.4 ([@puddly] - [#81050]) ([zha docs]) (beta fix) (dependency) +- Handle sending ZCL commands with empty bitmap options ([@puddly] - [#81051]) ([zha docs]) (beta fix) +- Eight Sleep catch missing keys ([@mezz64] - [#81058]) ([eight_sleep docs]) (beta fix) +- Bump aiolifx-themes to 0.2.0 ([@Djelibeybi] - [#81059]) ([lifx docs]) (beta fix) (dependency) +- Bump nexia to 2.0.5 ([@bdraco] - [#81061]) ([nexia docs]) (beta fix) (dependency) +- Update blebox_uniapi to 2.1.3 ([@riokuu] - [#81071]) ([blebox docs]) (beta fix) (dependency) +- Clean up superfluous Netatmo API calls ([@cgtobi] - [#81095]) ([netatmo docs]) (beta fix) +- Bring back Netatmo force update code ([@cgtobi] - [#81098]) ([netatmo docs]) (beta fix) +- Bump dbus-fast to 1.51.0 ([@bdraco] - [#81109]) ([bluetooth docs]) (beta fix) (dependency) +- Add support for oralb IO Series 4 ([@bdraco] - [#81110]) ([oralb docs]) (beta fix) +- Migrate KNX to use kelvin for color temperature ([@farmio] - [#81112]) ([knx docs]) (beta fix) +- Update frontend to 20221027.0 ([@bramkragten] - [#81114]) ([frontend docs]) (beta fix) +- Allow empty string for filters for waze_travel_time ([@eifinger] - [#80953]) ([waze_travel_time docs]) (beta fix) +- Fix Shelly Plus H&T sleep period on external power state change ([@thecode] - [#81121]) ([shelly docs]) (beta fix) +- Bump oralb-ble to 0.8.0 ([@bdraco] - [#81123]) ([oralb docs]) (beta fix) (dependency) +- Bump pyoverkiz to 1.5.6 ([@tetienne] - [#81129]) ([overkiz docs]) (beta fix) (dependency) +- Bump aiohomekit to 2.2.6 ([@bdraco] - [#81144]) ([homekit_controller docs]) (beta fix) +- Add diagnostics to Switcher ([@thecode] - [#81146]) ([switcher_kis docs]) (beta fix) +- Bump dbus-fast to 1.54.0 ([@bdraco] - [#81148]) ([bluetooth docs]) (beta fix) (dependency) +- Bump aiopyarr to 22.10.0 ([@tkdrob] - [#81153]) ([sonarr docs]) ([radarr docs]) ([lidarr docs]) (beta fix) (dependency) +- Growatt version bump - fixes #80950 ([@muppet3000] - [#81161]) ([growatt_server docs]) (beta fix) (dependency) +- Bump aiohomekit to 2.2.7 ([@bdraco] - [#81163]) ([homekit_controller docs]) (beta fix) +- Bump zigpy to 0.51.5 ([@puddly] - [#81164]) ([zha docs]) (beta fix) (dependency) +- Bump oralb-ble to 0.9.0 ([@bdraco] - [#81166]) ([oralb docs]) (beta fix) (dependency) +- Add diagnostics to webostv ([@thecode] - [#81133]) ([webostv docs]) (beta fix) +- SSDP to allow more URLs ([@balloob] - [#81171]) ([ssdp docs]) (beta fix) +- Bump pyEight to 0.3.2 ([@mezz64] - [#81172]) ([eight_sleep docs]) (beta fix) (dependency) +- Set date in test to fixed one ([@balloob] - [#81175]) ([history_stats docs]) (beta fix) +- Bump dbus-fast to 1.56.0 ([@bdraco] - [#81177]) ([bluetooth docs]) (beta fix) (dependency) +- Bump pysma to 0.7.2 ([@rklomp] - [#81188]) ([sma docs]) (beta fix) (dependency) +- Bump dbus-fast to 1.58.0 ([@bdraco] - [#81195]) ([bluetooth docs]) (beta fix) (dependency) +- Update to bleak 0.19.1 and bleak-retry-connector 2.5.0 ([@bdraco] - [#81198]) ([bluetooth docs]) (beta fix) (dependency) +- Today's Consumption is INCREASING ([@macmenco] - [#81204]) ([enphase_envoy docs]) (beta fix) +- Restore homekit_controller BLE broadcast_key from disk ([@bdraco] - [#81211]) ([homekit_controller docs]) (beta fix) (dependency) +- Bump dbus-fast to 1.59.0 ([@bdraco] - [#81215]) ([bluetooth docs]) (beta fix) (dependency) +- Fix Squeezebox media browsing ([@rajlaud] - [#81197]) ([squeezebox docs]) (beta fix) +- Fix Danfoss thermostat support in devolo Home Control ([@Shutgun] - [#81200]) ([devolo_home_control docs]) (beta fix) +- Add missing string for option traffic_mode for google_travel_time ([@eifinger] - [#81213]) ([google_travel_time docs]) (beta fix) +- Mute superfluous exception when no Netatmo webhook is to be dropped ([@cgtobi] - [#81221]) ([netatmo docs]) (beta fix) +- Bump dbus-fast to 1.59.1 ([@bdraco] - [#81229]) (beta fix) +- Catch `ApiError` while checking credentials in NAM integration ([@bieniu] - [#81243]) ([nam docs]) (beta fix) +- Make Netatmo/Legrande/BTicino lights and switches optimistic ([@cgtobi] - [#81246]) ([netatmo docs]) (beta fix) +- Bump aiohomekit to 2.2.9 ([@bdraco] - [#81254]) ([homekit_controller docs]) (beta fix) (dependency) +- Set the correct state class for Eve Energy in homekit_controller ([@Jc2k] - [#81255]) ([homekit_controller docs]) (beta fix) +- Significantly reduce clock_gettime syscalls on platforms with broken vdso ([@bdraco] - [#81257]) ([esphome docs]) ([bluetooth docs]) (beta fix) +- Move esphome gatt services cache to be per device ([@bdraco] - [#81265]) ([esphome docs]) (beta fix) +- Provide a human readable error when an esphome ble proxy connection fails ([@bdraco] - [#81266]) ([esphome docs]) (beta fix) (dependency) +- Try to switch to a different esphome BLE proxy if we run out of slots while connecting ([@bdraco] - [#81268]) ([bluetooth docs]) (beta fix) +- Bump bleak-retry-connector to 2.6.0 ([@bdraco] - [#81270]) ([bluetooth docs]) (beta fix) (dependency) +- Bump aioesphomeapi to 11.4.0 ([@bdraco] - [#81277]) ([esphome docs]) (beta fix) (dependency) +- Bump bleak-retry-connector to 2.7.0 ([@bdraco] - [#81280]) ([bluetooth docs]) (beta fix) (dependency) +- Bump aioesphomeapi to 11.4.1 ([@bdraco] - [#81282]) ([esphome docs]) (beta fix) (dependency) +- Bump bleak-retry-connector to 2.8.0 ([@bdraco] - [#81283]) ([bluetooth docs]) (beta fix) (dependency) +- Do not fire the esphome ble disconnected callback if we were not connected ([@bdraco] - [#81286]) ([esphome docs]) (beta fix) +- Include esphome device name in BLE logs ([@bdraco] - [#81284]) ([esphome docs]) (beta fix) +- Bump bleak-retry-connector to 2.8.1 ([@bdraco] - [#81285]) ([bluetooth docs]) (beta fix) (dependency) +- Do not fire the esphome ble disconnected callback if we were not connected ([@bdraco] - [#81286]) ([esphome docs]) (beta fix) +- Bump pyipp to 0.12.1 ([@ctalkington] - [#81287]) ([ipp docs]) (beta fix) +- Bump pyatmo to 7.3.0 ([@cgtobi] - [#81290]) ([netatmo docs]) (beta fix) +- Bump dbus-fast to 1.60.0 ([@bdraco] - [#81296]) ([bluetooth docs]) (beta fix) (dependency) +- Create repairs for unsupported and unhealthy ([@mdegat01] - [#80747]) ([hassio docs]) (beta fix) +- Only try initializing Hue motion LED on endpoint 2 with ZHA ([@TheJulianJES] - [#81205]) ([zha docs]) (beta fix) +- Bump aiohomekit to 2.2.10 ([@bdraco] - [#81312]) ([homekit_controller docs]) (beta fix) (dependency) +- Bump zeroconf to 0.39.4 ([@bdraco] - [#81313]) ([zeroconf docs]) (beta fix) (dependency) +- Bump oralb-ble to 0.10.0 ([@bdraco] - [#81315]) ([oralb docs]) (beta fix) (dependency) +- Update base image to 2022.10.0 ([@frenck] - [#81317]) (beta fix) (dependency) +- Fix Yale Access Bluetooth not being available again after being unavailable ([@bdraco] - [#81320]) ([yalexs_ble docs]) (beta fix) (dependency) +- Update frontend to 20221031.0 ([@bramkragten] - [#81324]) ([frontend docs]) (beta fix) +- Improve esphome bluetooth error reporting ([@bdraco] - [#81326]) ([esphome docs]) (beta fix) (dependency) +- Cherry-pick translation updates for Supervisor ([@frenck] - [#81341]) ([hassio docs]) (beta fix) +- Always use Celsius in Shelly integration ([@bieniu] - [#80842]) ([shelly docs]) (beta fix) +- Fix homekit diagnostics test when version changes ([@bdraco] - [#81046]) ([homekit docs]) (beta fix) +- Improve MQTT update platform ([@bieniu] - [#81131]) ([mqtt docs]) (beta fix) +- Tuya configuration for `tuya_manufacturer` cluster ([@javicalle] - [#81311]) ([zha docs]) (beta fix) +- Add task id attribute to fireservicerota sensor ([@cyberjunky] - [#81323]) ([fireservicerota docs]) (beta fix) +- Bump gcal_sync to 2.2.2 and fix recurring event bug ([@allenporter] - [#81339]) ([google docs]) (beta fix) (dependency) +- Bump aioshelly to 4.1.2 ([@thecode] - [#81342]) ([shelly docs]) (beta fix) (dependency) +- Fix power/energy mixup in Youless ([@frenck] - [#81345]) ([youless docs]) (beta fix) +- Revert "Do not write state if payload is `''`" for MQTT sensor ([@jbouwh] - [#81347]) ([mqtt docs]) (beta fix) +- Lower log level for non-JSON payload in MQTT update ([@bieniu] - [#81348]) ([mqtt docs]) (beta fix) +- Fix individual LED range for ZHA device action ([@dmulcahey] - [#81351]) ([zha docs]) (beta fix) +- Adjust time to remove stale connectable devices from the esphome ble to closer match bluez ([@bdraco] - [#81356]) ([esphome docs]) (beta fix) +- Immediately prefer advertisements from alternate sources when a scanner goes away ([@bdraco] - [#81357]) ([bluetooth docs]) (beta fix) +- Bump aiohomekit to 2.2.11 ([@bdraco] - [#81358]) ([homekit_controller docs]) (beta fix) (dependency) +- Improve error logging of WebSocket API ([@frenck] - [#81360]) ([websocket_api docs]) (beta fix) +- Bump zigpy-zigate to 0.10.3 ([@puddly] - [#81363]) ([zha docs]) (beta fix) (dependency) +- Bump bleak-retry-connector to 2.8.2 ([@bdraco] - [#81370]) ([bluetooth docs]) (beta fix) (dependency) +- Bump aiohomekit to 2.2.12 ([@bdraco] - [#81372]) ([homekit_controller docs]) (beta fix) (dependency) +- Add unit conversion for energy costs ([@balloob] - [#81379]) ([energy docs]) (beta fix) +- Bump dbus-fast to 1.61.1 ([@bdraco] - [#81386]) ([bluetooth docs]) (beta fix) (dependency) +- Improve supervisor repairs ([@mdegat01] - [#81387]) ([hassio docs]) (beta fix) +- Bump aiohomekit to 2.2.13 ([@bdraco] - [#81398]) (beta fix) +- Update frontend to 20221102.0 ([@bramkragten] - [#81405]) ([frontend docs]) (beta fix) +- Update adax library to 0.1.5 ([@Danielhiversen] - [#81407]) ([adax docs]) (beta fix) (dependency) +- Bump gcal_sync to 2.2.3 ([@allenporter] - [#81414]) ([google docs]) (beta fix) +- Update frontend to 20221102.1 ([@bramkragten] - [#81422]) ([frontend docs]) (beta fix) + +[#66469]: https://github.com/home-assistant/core/pull/66469 +[#66996]: https://github.com/home-assistant/core/pull/66996 +[#67399]: https://github.com/home-assistant/core/pull/67399 +[#69700]: https://github.com/home-assistant/core/pull/69700 +[#71051]: https://github.com/home-assistant/core/pull/71051 +[#71269]: https://github.com/home-assistant/core/pull/71269 +[#73906]: https://github.com/home-assistant/core/pull/73906 +[#74454]: https://github.com/home-assistant/core/pull/74454 +[#74472]: https://github.com/home-assistant/core/pull/74472 +[#75656]: https://github.com/home-assistant/core/pull/75656 +[#75680]: https://github.com/home-assistant/core/pull/75680 +[#75787]: https://github.com/home-assistant/core/pull/75787 +[#76143]: https://github.com/home-assistant/core/pull/76143 +[#76354]: https://github.com/home-assistant/core/pull/76354 +[#76669]: https://github.com/home-assistant/core/pull/76669 +[#76801]: https://github.com/home-assistant/core/pull/76801 +[#77213]: https://github.com/home-assistant/core/pull/77213 +[#77284]: https://github.com/home-assistant/core/pull/77284 +[#77315]: https://github.com/home-assistant/core/pull/77315 +[#77327]: https://github.com/home-assistant/core/pull/77327 +[#77499]: https://github.com/home-assistant/core/pull/77499 +[#77573]: https://github.com/home-assistant/core/pull/77573 +[#77604]: https://github.com/home-assistant/core/pull/77604 +[#77771]: https://github.com/home-assistant/core/pull/77771 +[#77873]: https://github.com/home-assistant/core/pull/77873 +[#78005]: https://github.com/home-assistant/core/pull/78005 +[#78030]: https://github.com/home-assistant/core/pull/78030 +[#78221]: https://github.com/home-assistant/core/pull/78221 +[#78383]: https://github.com/home-assistant/core/pull/78383 +[#78385]: https://github.com/home-assistant/core/pull/78385 +[#78480]: https://github.com/home-assistant/core/pull/78480 +[#78558]: https://github.com/home-assistant/core/pull/78558 +[#78596]: https://github.com/home-assistant/core/pull/78596 +[#78773]: https://github.com/home-assistant/core/pull/78773 +[#78790]: https://github.com/home-assistant/core/pull/78790 +[#78793]: https://github.com/home-assistant/core/pull/78793 +[#78882]: https://github.com/home-assistant/core/pull/78882 +[#78995]: https://github.com/home-assistant/core/pull/78995 +[#79137]: https://github.com/home-assistant/core/pull/79137 +[#79211]: https://github.com/home-assistant/core/pull/79211 +[#79213]: https://github.com/home-assistant/core/pull/79213 +[#79214]: https://github.com/home-assistant/core/pull/79214 +[#79224]: https://github.com/home-assistant/core/pull/79224 +[#79241]: https://github.com/home-assistant/core/pull/79241 +[#79242]: https://github.com/home-assistant/core/pull/79242 +[#79243]: https://github.com/home-assistant/core/pull/79243 +[#79249]: https://github.com/home-assistant/core/pull/79249 +[#79272]: https://github.com/home-assistant/core/pull/79272 +[#79278]: https://github.com/home-assistant/core/pull/79278 +[#79282]: https://github.com/home-assistant/core/pull/79282 +[#79283]: https://github.com/home-assistant/core/pull/79283 +[#79289]: https://github.com/home-assistant/core/pull/79289 +[#79295]: https://github.com/home-assistant/core/pull/79295 +[#79296]: https://github.com/home-assistant/core/pull/79296 +[#79301]: https://github.com/home-assistant/core/pull/79301 +[#79312]: https://github.com/home-assistant/core/pull/79312 +[#79313]: https://github.com/home-assistant/core/pull/79313 +[#79315]: https://github.com/home-assistant/core/pull/79315 +[#79329]: https://github.com/home-assistant/core/pull/79329 +[#79344]: https://github.com/home-assistant/core/pull/79344 +[#79351]: https://github.com/home-assistant/core/pull/79351 +[#79352]: https://github.com/home-assistant/core/pull/79352 +[#79353]: https://github.com/home-assistant/core/pull/79353 +[#79362]: https://github.com/home-assistant/core/pull/79362 +[#79369]: https://github.com/home-assistant/core/pull/79369 +[#79379]: https://github.com/home-assistant/core/pull/79379 +[#79380]: https://github.com/home-assistant/core/pull/79380 +[#79383]: https://github.com/home-assistant/core/pull/79383 +[#79393]: https://github.com/home-assistant/core/pull/79393 +[#79399]: https://github.com/home-assistant/core/pull/79399 +[#79403]: https://github.com/home-assistant/core/pull/79403 +[#79405]: https://github.com/home-assistant/core/pull/79405 +[#79407]: https://github.com/home-assistant/core/pull/79407 +[#79408]: https://github.com/home-assistant/core/pull/79408 +[#79417]: https://github.com/home-assistant/core/pull/79417 +[#79418]: https://github.com/home-assistant/core/pull/79418 +[#79419]: https://github.com/home-assistant/core/pull/79419 +[#79426]: https://github.com/home-assistant/core/pull/79426 +[#79430]: https://github.com/home-assistant/core/pull/79430 +[#79439]: https://github.com/home-assistant/core/pull/79439 +[#79444]: https://github.com/home-assistant/core/pull/79444 +[#79449]: https://github.com/home-assistant/core/pull/79449 +[#79450]: https://github.com/home-assistant/core/pull/79450 +[#79451]: https://github.com/home-assistant/core/pull/79451 +[#79459]: https://github.com/home-assistant/core/pull/79459 +[#79467]: https://github.com/home-assistant/core/pull/79467 +[#79470]: https://github.com/home-assistant/core/pull/79470 +[#79473]: https://github.com/home-assistant/core/pull/79473 +[#79477]: https://github.com/home-assistant/core/pull/79477 +[#79482]: https://github.com/home-assistant/core/pull/79482 +[#79484]: https://github.com/home-assistant/core/pull/79484 +[#79485]: https://github.com/home-assistant/core/pull/79485 +[#79486]: https://github.com/home-assistant/core/pull/79486 +[#79497]: https://github.com/home-assistant/core/pull/79497 +[#79498]: https://github.com/home-assistant/core/pull/79498 +[#79503]: https://github.com/home-assistant/core/pull/79503 +[#79504]: https://github.com/home-assistant/core/pull/79504 +[#79513]: https://github.com/home-assistant/core/pull/79513 +[#79516]: https://github.com/home-assistant/core/pull/79516 +[#79520]: https://github.com/home-assistant/core/pull/79520 +[#79523]: https://github.com/home-assistant/core/pull/79523 +[#79535]: https://github.com/home-assistant/core/pull/79535 +[#79544]: https://github.com/home-assistant/core/pull/79544 +[#79559]: https://github.com/home-assistant/core/pull/79559 +[#79560]: https://github.com/home-assistant/core/pull/79560 +[#79571]: https://github.com/home-assistant/core/pull/79571 +[#79574]: https://github.com/home-assistant/core/pull/79574 +[#79577]: https://github.com/home-assistant/core/pull/79577 +[#79584]: https://github.com/home-assistant/core/pull/79584 +[#79585]: https://github.com/home-assistant/core/pull/79585 +[#79586]: https://github.com/home-assistant/core/pull/79586 +[#79587]: https://github.com/home-assistant/core/pull/79587 +[#79589]: https://github.com/home-assistant/core/pull/79589 +[#79590]: https://github.com/home-assistant/core/pull/79590 +[#79591]: https://github.com/home-assistant/core/pull/79591 +[#79592]: https://github.com/home-assistant/core/pull/79592 +[#79597]: https://github.com/home-assistant/core/pull/79597 +[#79598]: https://github.com/home-assistant/core/pull/79598 +[#79603]: https://github.com/home-assistant/core/pull/79603 +[#79606]: https://github.com/home-assistant/core/pull/79606 +[#79616]: https://github.com/home-assistant/core/pull/79616 +[#79618]: https://github.com/home-assistant/core/pull/79618 +[#79619]: https://github.com/home-assistant/core/pull/79619 +[#79628]: https://github.com/home-assistant/core/pull/79628 +[#79630]: https://github.com/home-assistant/core/pull/79630 +[#79631]: https://github.com/home-assistant/core/pull/79631 +[#79635]: https://github.com/home-assistant/core/pull/79635 +[#79653]: https://github.com/home-assistant/core/pull/79653 +[#79666]: https://github.com/home-assistant/core/pull/79666 +[#79669]: https://github.com/home-assistant/core/pull/79669 +[#79671]: https://github.com/home-assistant/core/pull/79671 +[#79672]: https://github.com/home-assistant/core/pull/79672 +[#79676]: https://github.com/home-assistant/core/pull/79676 +[#79683]: https://github.com/home-assistant/core/pull/79683 +[#79684]: https://github.com/home-assistant/core/pull/79684 +[#79687]: https://github.com/home-assistant/core/pull/79687 +[#79689]: https://github.com/home-assistant/core/pull/79689 +[#79695]: https://github.com/home-assistant/core/pull/79695 +[#79713]: https://github.com/home-assistant/core/pull/79713 +[#79717]: https://github.com/home-assistant/core/pull/79717 +[#79719]: https://github.com/home-assistant/core/pull/79719 +[#79730]: https://github.com/home-assistant/core/pull/79730 +[#79733]: https://github.com/home-assistant/core/pull/79733 +[#79738]: https://github.com/home-assistant/core/pull/79738 +[#79747]: https://github.com/home-assistant/core/pull/79747 +[#79748]: https://github.com/home-assistant/core/pull/79748 +[#79749]: https://github.com/home-assistant/core/pull/79749 +[#79750]: https://github.com/home-assistant/core/pull/79750 +[#79752]: https://github.com/home-assistant/core/pull/79752 +[#79755]: https://github.com/home-assistant/core/pull/79755 +[#79757]: https://github.com/home-assistant/core/pull/79757 +[#79758]: https://github.com/home-assistant/core/pull/79758 +[#79759]: https://github.com/home-assistant/core/pull/79759 +[#79765]: https://github.com/home-assistant/core/pull/79765 +[#79772]: https://github.com/home-assistant/core/pull/79772 +[#79775]: https://github.com/home-assistant/core/pull/79775 +[#79779]: https://github.com/home-assistant/core/pull/79779 +[#79780]: https://github.com/home-assistant/core/pull/79780 +[#79783]: https://github.com/home-assistant/core/pull/79783 +[#79787]: https://github.com/home-assistant/core/pull/79787 +[#79789]: https://github.com/home-assistant/core/pull/79789 +[#79791]: https://github.com/home-assistant/core/pull/79791 +[#79792]: https://github.com/home-assistant/core/pull/79792 +[#79793]: https://github.com/home-assistant/core/pull/79793 +[#79800]: https://github.com/home-assistant/core/pull/79800 +[#79801]: https://github.com/home-assistant/core/pull/79801 +[#79802]: https://github.com/home-assistant/core/pull/79802 +[#79803]: https://github.com/home-assistant/core/pull/79803 +[#79804]: https://github.com/home-assistant/core/pull/79804 +[#79807]: https://github.com/home-assistant/core/pull/79807 +[#79812]: https://github.com/home-assistant/core/pull/79812 +[#79815]: https://github.com/home-assistant/core/pull/79815 +[#79819]: https://github.com/home-assistant/core/pull/79819 +[#79820]: https://github.com/home-assistant/core/pull/79820 +[#79821]: https://github.com/home-assistant/core/pull/79821 +[#79822]: https://github.com/home-assistant/core/pull/79822 +[#79826]: https://github.com/home-assistant/core/pull/79826 +[#79839]: https://github.com/home-assistant/core/pull/79839 +[#79840]: https://github.com/home-assistant/core/pull/79840 +[#79844]: https://github.com/home-assistant/core/pull/79844 +[#79845]: https://github.com/home-assistant/core/pull/79845 +[#79851]: https://github.com/home-assistant/core/pull/79851 +[#79854]: https://github.com/home-assistant/core/pull/79854 +[#79855]: https://github.com/home-assistant/core/pull/79855 +[#79856]: https://github.com/home-assistant/core/pull/79856 +[#79862]: https://github.com/home-assistant/core/pull/79862 +[#79864]: https://github.com/home-assistant/core/pull/79864 +[#79865]: https://github.com/home-assistant/core/pull/79865 +[#79868]: https://github.com/home-assistant/core/pull/79868 +[#79870]: https://github.com/home-assistant/core/pull/79870 +[#79872]: https://github.com/home-assistant/core/pull/79872 +[#79879]: https://github.com/home-assistant/core/pull/79879 +[#79880]: https://github.com/home-assistant/core/pull/79880 +[#79886]: https://github.com/home-assistant/core/pull/79886 +[#79889]: https://github.com/home-assistant/core/pull/79889 +[#79900]: https://github.com/home-assistant/core/pull/79900 +[#79901]: https://github.com/home-assistant/core/pull/79901 +[#79902]: https://github.com/home-assistant/core/pull/79902 +[#79904]: https://github.com/home-assistant/core/pull/79904 +[#79905]: https://github.com/home-assistant/core/pull/79905 +[#79906]: https://github.com/home-assistant/core/pull/79906 +[#79907]: https://github.com/home-assistant/core/pull/79907 +[#79908]: https://github.com/home-assistant/core/pull/79908 +[#79909]: https://github.com/home-assistant/core/pull/79909 +[#79910]: https://github.com/home-assistant/core/pull/79910 +[#79911]: https://github.com/home-assistant/core/pull/79911 +[#79912]: https://github.com/home-assistant/core/pull/79912 +[#79913]: https://github.com/home-assistant/core/pull/79913 +[#79914]: https://github.com/home-assistant/core/pull/79914 +[#79921]: https://github.com/home-assistant/core/pull/79921 +[#79923]: https://github.com/home-assistant/core/pull/79923 +[#79926]: https://github.com/home-assistant/core/pull/79926 +[#79931]: https://github.com/home-assistant/core/pull/79931 +[#79932]: https://github.com/home-assistant/core/pull/79932 +[#79934]: https://github.com/home-assistant/core/pull/79934 +[#79935]: https://github.com/home-assistant/core/pull/79935 +[#79937]: https://github.com/home-assistant/core/pull/79937 +[#79945]: https://github.com/home-assistant/core/pull/79945 +[#79950]: https://github.com/home-assistant/core/pull/79950 +[#79954]: https://github.com/home-assistant/core/pull/79954 +[#79955]: https://github.com/home-assistant/core/pull/79955 +[#79958]: https://github.com/home-assistant/core/pull/79958 +[#79962]: https://github.com/home-assistant/core/pull/79962 +[#79963]: https://github.com/home-assistant/core/pull/79963 +[#79964]: https://github.com/home-assistant/core/pull/79964 +[#79965]: https://github.com/home-assistant/core/pull/79965 +[#79966]: https://github.com/home-assistant/core/pull/79966 +[#79968]: https://github.com/home-assistant/core/pull/79968 +[#79969]: https://github.com/home-assistant/core/pull/79969 +[#79970]: https://github.com/home-assistant/core/pull/79970 +[#79974]: https://github.com/home-assistant/core/pull/79974 +[#79977]: https://github.com/home-assistant/core/pull/79977 +[#79983]: https://github.com/home-assistant/core/pull/79983 +[#79986]: https://github.com/home-assistant/core/pull/79986 +[#79987]: https://github.com/home-assistant/core/pull/79987 +[#79988]: https://github.com/home-assistant/core/pull/79988 +[#79989]: https://github.com/home-assistant/core/pull/79989 +[#79990]: https://github.com/home-assistant/core/pull/79990 +[#79992]: https://github.com/home-assistant/core/pull/79992 +[#79995]: https://github.com/home-assistant/core/pull/79995 +[#79998]: https://github.com/home-assistant/core/pull/79998 +[#80004]: https://github.com/home-assistant/core/pull/80004 +[#80006]: https://github.com/home-assistant/core/pull/80006 +[#80008]: https://github.com/home-assistant/core/pull/80008 +[#80009]: https://github.com/home-assistant/core/pull/80009 +[#80011]: https://github.com/home-assistant/core/pull/80011 +[#80012]: https://github.com/home-assistant/core/pull/80012 +[#80014]: https://github.com/home-assistant/core/pull/80014 +[#80015]: https://github.com/home-assistant/core/pull/80015 +[#80016]: https://github.com/home-assistant/core/pull/80016 +[#80017]: https://github.com/home-assistant/core/pull/80017 +[#80018]: https://github.com/home-assistant/core/pull/80018 +[#80032]: https://github.com/home-assistant/core/pull/80032 +[#80033]: https://github.com/home-assistant/core/pull/80033 +[#80035]: https://github.com/home-assistant/core/pull/80035 +[#80042]: https://github.com/home-assistant/core/pull/80042 +[#80050]: https://github.com/home-assistant/core/pull/80050 +[#80051]: https://github.com/home-assistant/core/pull/80051 +[#80056]: https://github.com/home-assistant/core/pull/80056 +[#80058]: https://github.com/home-assistant/core/pull/80058 +[#80062]: https://github.com/home-assistant/core/pull/80062 +[#80064]: https://github.com/home-assistant/core/pull/80064 +[#80067]: https://github.com/home-assistant/core/pull/80067 +[#80068]: https://github.com/home-assistant/core/pull/80068 +[#80077]: https://github.com/home-assistant/core/pull/80077 +[#80078]: https://github.com/home-assistant/core/pull/80078 +[#80079]: https://github.com/home-assistant/core/pull/80079 +[#80081]: https://github.com/home-assistant/core/pull/80081 +[#80082]: https://github.com/home-assistant/core/pull/80082 +[#80084]: https://github.com/home-assistant/core/pull/80084 +[#80086]: https://github.com/home-assistant/core/pull/80086 +[#80087]: https://github.com/home-assistant/core/pull/80087 +[#80094]: https://github.com/home-assistant/core/pull/80094 +[#80097]: https://github.com/home-assistant/core/pull/80097 +[#80099]: https://github.com/home-assistant/core/pull/80099 +[#80109]: https://github.com/home-assistant/core/pull/80109 +[#80110]: https://github.com/home-assistant/core/pull/80110 +[#80111]: https://github.com/home-assistant/core/pull/80111 +[#80112]: https://github.com/home-assistant/core/pull/80112 +[#80113]: https://github.com/home-assistant/core/pull/80113 +[#80114]: https://github.com/home-assistant/core/pull/80114 +[#80115]: https://github.com/home-assistant/core/pull/80115 +[#80116]: https://github.com/home-assistant/core/pull/80116 +[#80118]: https://github.com/home-assistant/core/pull/80118 +[#80119]: https://github.com/home-assistant/core/pull/80119 +[#80120]: https://github.com/home-assistant/core/pull/80120 +[#80121]: https://github.com/home-assistant/core/pull/80121 +[#80122]: https://github.com/home-assistant/core/pull/80122 +[#80129]: https://github.com/home-assistant/core/pull/80129 +[#80134]: https://github.com/home-assistant/core/pull/80134 +[#80136]: https://github.com/home-assistant/core/pull/80136 +[#80141]: https://github.com/home-assistant/core/pull/80141 +[#80147]: https://github.com/home-assistant/core/pull/80147 +[#80149]: https://github.com/home-assistant/core/pull/80149 +[#80150]: https://github.com/home-assistant/core/pull/80150 +[#80151]: https://github.com/home-assistant/core/pull/80151 +[#80156]: https://github.com/home-assistant/core/pull/80156 +[#80159]: https://github.com/home-assistant/core/pull/80159 +[#80160]: https://github.com/home-assistant/core/pull/80160 +[#80161]: https://github.com/home-assistant/core/pull/80161 +[#80162]: https://github.com/home-assistant/core/pull/80162 +[#80163]: https://github.com/home-assistant/core/pull/80163 +[#80165]: https://github.com/home-assistant/core/pull/80165 +[#80166]: https://github.com/home-assistant/core/pull/80166 +[#80168]: https://github.com/home-assistant/core/pull/80168 +[#80169]: https://github.com/home-assistant/core/pull/80169 +[#80170]: https://github.com/home-assistant/core/pull/80170 +[#80173]: https://github.com/home-assistant/core/pull/80173 +[#80174]: https://github.com/home-assistant/core/pull/80174 +[#80175]: https://github.com/home-assistant/core/pull/80175 +[#80176]: https://github.com/home-assistant/core/pull/80176 +[#80182]: https://github.com/home-assistant/core/pull/80182 +[#80185]: https://github.com/home-assistant/core/pull/80185 +[#80187]: https://github.com/home-assistant/core/pull/80187 +[#80189]: https://github.com/home-assistant/core/pull/80189 +[#80190]: https://github.com/home-assistant/core/pull/80190 +[#80191]: https://github.com/home-assistant/core/pull/80191 +[#80197]: https://github.com/home-assistant/core/pull/80197 +[#80207]: https://github.com/home-assistant/core/pull/80207 +[#80209]: https://github.com/home-assistant/core/pull/80209 +[#80213]: https://github.com/home-assistant/core/pull/80213 +[#80214]: https://github.com/home-assistant/core/pull/80214 +[#80218]: https://github.com/home-assistant/core/pull/80218 +[#80221]: https://github.com/home-assistant/core/pull/80221 +[#80222]: https://github.com/home-assistant/core/pull/80222 +[#80226]: https://github.com/home-assistant/core/pull/80226 +[#80227]: https://github.com/home-assistant/core/pull/80227 +[#80228]: https://github.com/home-assistant/core/pull/80228 +[#80230]: https://github.com/home-assistant/core/pull/80230 +[#80232]: https://github.com/home-assistant/core/pull/80232 +[#80233]: https://github.com/home-assistant/core/pull/80233 +[#80234]: https://github.com/home-assistant/core/pull/80234 +[#80235]: https://github.com/home-assistant/core/pull/80235 +[#80236]: https://github.com/home-assistant/core/pull/80236 +[#80237]: https://github.com/home-assistant/core/pull/80237 +[#80238]: https://github.com/home-assistant/core/pull/80238 +[#80239]: https://github.com/home-assistant/core/pull/80239 +[#80241]: https://github.com/home-assistant/core/pull/80241 +[#80242]: https://github.com/home-assistant/core/pull/80242 +[#80243]: https://github.com/home-assistant/core/pull/80243 +[#80244]: https://github.com/home-assistant/core/pull/80244 +[#80246]: https://github.com/home-assistant/core/pull/80246 +[#80247]: https://github.com/home-assistant/core/pull/80247 +[#80251]: https://github.com/home-assistant/core/pull/80251 +[#80253]: https://github.com/home-assistant/core/pull/80253 +[#80255]: https://github.com/home-assistant/core/pull/80255 +[#80256]: https://github.com/home-assistant/core/pull/80256 +[#80257]: https://github.com/home-assistant/core/pull/80257 +[#80259]: https://github.com/home-assistant/core/pull/80259 +[#80260]: https://github.com/home-assistant/core/pull/80260 +[#80262]: https://github.com/home-assistant/core/pull/80262 +[#80264]: https://github.com/home-assistant/core/pull/80264 +[#80265]: https://github.com/home-assistant/core/pull/80265 +[#80266]: https://github.com/home-assistant/core/pull/80266 +[#80267]: https://github.com/home-assistant/core/pull/80267 +[#80269]: https://github.com/home-assistant/core/pull/80269 +[#80270]: https://github.com/home-assistant/core/pull/80270 +[#80271]: https://github.com/home-assistant/core/pull/80271 +[#80272]: https://github.com/home-assistant/core/pull/80272 +[#80282]: https://github.com/home-assistant/core/pull/80282 +[#80289]: https://github.com/home-assistant/core/pull/80289 +[#80296]: https://github.com/home-assistant/core/pull/80296 +[#80298]: https://github.com/home-assistant/core/pull/80298 +[#80300]: https://github.com/home-assistant/core/pull/80300 +[#80304]: https://github.com/home-assistant/core/pull/80304 +[#80312]: https://github.com/home-assistant/core/pull/80312 +[#80313]: https://github.com/home-assistant/core/pull/80313 +[#80314]: https://github.com/home-assistant/core/pull/80314 +[#80315]: https://github.com/home-assistant/core/pull/80315 +[#80318]: https://github.com/home-assistant/core/pull/80318 +[#80319]: https://github.com/home-assistant/core/pull/80319 +[#80320]: https://github.com/home-assistant/core/pull/80320 +[#80322]: https://github.com/home-assistant/core/pull/80322 +[#80323]: https://github.com/home-assistant/core/pull/80323 +[#80324]: https://github.com/home-assistant/core/pull/80324 +[#80325]: https://github.com/home-assistant/core/pull/80325 +[#80328]: https://github.com/home-assistant/core/pull/80328 +[#80332]: https://github.com/home-assistant/core/pull/80332 +[#80333]: https://github.com/home-assistant/core/pull/80333 +[#80336]: https://github.com/home-assistant/core/pull/80336 +[#80337]: https://github.com/home-assistant/core/pull/80337 +[#80347]: https://github.com/home-assistant/core/pull/80347 +[#80349]: https://github.com/home-assistant/core/pull/80349 +[#80350]: https://github.com/home-assistant/core/pull/80350 +[#80355]: https://github.com/home-assistant/core/pull/80355 +[#80360]: https://github.com/home-assistant/core/pull/80360 +[#80381]: https://github.com/home-assistant/core/pull/80381 +[#80383]: https://github.com/home-assistant/core/pull/80383 +[#80388]: https://github.com/home-assistant/core/pull/80388 +[#80389]: https://github.com/home-assistant/core/pull/80389 +[#80392]: https://github.com/home-assistant/core/pull/80392 +[#80396]: https://github.com/home-assistant/core/pull/80396 +[#80397]: https://github.com/home-assistant/core/pull/80397 +[#80401]: https://github.com/home-assistant/core/pull/80401 +[#80403]: https://github.com/home-assistant/core/pull/80403 +[#80406]: https://github.com/home-assistant/core/pull/80406 +[#80407]: https://github.com/home-assistant/core/pull/80407 +[#80409]: https://github.com/home-assistant/core/pull/80409 +[#80417]: https://github.com/home-assistant/core/pull/80417 +[#80421]: https://github.com/home-assistant/core/pull/80421 +[#80423]: https://github.com/home-assistant/core/pull/80423 +[#80426]: https://github.com/home-assistant/core/pull/80426 +[#80431]: https://github.com/home-assistant/core/pull/80431 +[#80433]: https://github.com/home-assistant/core/pull/80433 +[#80435]: https://github.com/home-assistant/core/pull/80435 +[#80436]: https://github.com/home-assistant/core/pull/80436 +[#80438]: https://github.com/home-assistant/core/pull/80438 +[#80440]: https://github.com/home-assistant/core/pull/80440 +[#80443]: https://github.com/home-assistant/core/pull/80443 +[#80444]: https://github.com/home-assistant/core/pull/80444 +[#80446]: https://github.com/home-assistant/core/pull/80446 +[#80448]: https://github.com/home-assistant/core/pull/80448 +[#80457]: https://github.com/home-assistant/core/pull/80457 +[#80460]: https://github.com/home-assistant/core/pull/80460 +[#80463]: https://github.com/home-assistant/core/pull/80463 +[#80465]: https://github.com/home-assistant/core/pull/80465 +[#80467]: https://github.com/home-assistant/core/pull/80467 +[#80470]: https://github.com/home-assistant/core/pull/80470 +[#80471]: https://github.com/home-assistant/core/pull/80471 +[#80473]: https://github.com/home-assistant/core/pull/80473 +[#80474]: https://github.com/home-assistant/core/pull/80474 +[#80479]: https://github.com/home-assistant/core/pull/80479 +[#80480]: https://github.com/home-assistant/core/pull/80480 +[#80486]: https://github.com/home-assistant/core/pull/80486 +[#80492]: https://github.com/home-assistant/core/pull/80492 +[#80495]: https://github.com/home-assistant/core/pull/80495 +[#80496]: https://github.com/home-assistant/core/pull/80496 +[#80497]: https://github.com/home-assistant/core/pull/80497 +[#80498]: https://github.com/home-assistant/core/pull/80498 +[#80499]: https://github.com/home-assistant/core/pull/80499 +[#80500]: https://github.com/home-assistant/core/pull/80500 +[#80505]: https://github.com/home-assistant/core/pull/80505 +[#80508]: https://github.com/home-assistant/core/pull/80508 +[#80510]: https://github.com/home-assistant/core/pull/80510 +[#80511]: https://github.com/home-assistant/core/pull/80511 +[#80513]: https://github.com/home-assistant/core/pull/80513 +[#80514]: https://github.com/home-assistant/core/pull/80514 +[#80516]: https://github.com/home-assistant/core/pull/80516 +[#80518]: https://github.com/home-assistant/core/pull/80518 +[#80520]: https://github.com/home-assistant/core/pull/80520 +[#80521]: https://github.com/home-assistant/core/pull/80521 +[#80524]: https://github.com/home-assistant/core/pull/80524 +[#80525]: https://github.com/home-assistant/core/pull/80525 +[#80527]: https://github.com/home-assistant/core/pull/80527 +[#80528]: https://github.com/home-assistant/core/pull/80528 +[#80530]: https://github.com/home-assistant/core/pull/80530 +[#80531]: https://github.com/home-assistant/core/pull/80531 +[#80532]: https://github.com/home-assistant/core/pull/80532 +[#80533]: https://github.com/home-assistant/core/pull/80533 +[#80534]: https://github.com/home-assistant/core/pull/80534 +[#80535]: https://github.com/home-assistant/core/pull/80535 +[#80536]: https://github.com/home-assistant/core/pull/80536 +[#80537]: https://github.com/home-assistant/core/pull/80537 +[#80543]: https://github.com/home-assistant/core/pull/80543 +[#80544]: https://github.com/home-assistant/core/pull/80544 +[#80545]: https://github.com/home-assistant/core/pull/80545 +[#80546]: https://github.com/home-assistant/core/pull/80546 +[#80549]: https://github.com/home-assistant/core/pull/80549 +[#80552]: https://github.com/home-assistant/core/pull/80552 +[#80554]: https://github.com/home-assistant/core/pull/80554 +[#80558]: https://github.com/home-assistant/core/pull/80558 +[#80559]: https://github.com/home-assistant/core/pull/80559 +[#80560]: https://github.com/home-assistant/core/pull/80560 +[#80566]: https://github.com/home-assistant/core/pull/80566 +[#80567]: https://github.com/home-assistant/core/pull/80567 +[#80569]: https://github.com/home-assistant/core/pull/80569 +[#80576]: https://github.com/home-assistant/core/pull/80576 +[#80581]: https://github.com/home-assistant/core/pull/80581 +[#80584]: https://github.com/home-assistant/core/pull/80584 +[#80585]: https://github.com/home-assistant/core/pull/80585 +[#80586]: https://github.com/home-assistant/core/pull/80586 +[#80593]: https://github.com/home-assistant/core/pull/80593 +[#80596]: https://github.com/home-assistant/core/pull/80596 +[#80599]: https://github.com/home-assistant/core/pull/80599 +[#80601]: https://github.com/home-assistant/core/pull/80601 +[#80605]: https://github.com/home-assistant/core/pull/80605 +[#80607]: https://github.com/home-assistant/core/pull/80607 +[#80608]: https://github.com/home-assistant/core/pull/80608 +[#80609]: https://github.com/home-assistant/core/pull/80609 +[#80611]: https://github.com/home-assistant/core/pull/80611 +[#80612]: https://github.com/home-assistant/core/pull/80612 +[#80613]: https://github.com/home-assistant/core/pull/80613 +[#80615]: https://github.com/home-assistant/core/pull/80615 +[#80620]: https://github.com/home-assistant/core/pull/80620 +[#80623]: https://github.com/home-assistant/core/pull/80623 +[#80625]: https://github.com/home-assistant/core/pull/80625 +[#80629]: https://github.com/home-assistant/core/pull/80629 +[#80630]: https://github.com/home-assistant/core/pull/80630 +[#80631]: https://github.com/home-assistant/core/pull/80631 +[#80633]: https://github.com/home-assistant/core/pull/80633 +[#80637]: https://github.com/home-assistant/core/pull/80637 +[#80638]: https://github.com/home-assistant/core/pull/80638 +[#80640]: https://github.com/home-assistant/core/pull/80640 +[#80645]: https://github.com/home-assistant/core/pull/80645 +[#80646]: https://github.com/home-assistant/core/pull/80646 +[#80650]: https://github.com/home-assistant/core/pull/80650 +[#80651]: https://github.com/home-assistant/core/pull/80651 +[#80652]: https://github.com/home-assistant/core/pull/80652 +[#80653]: https://github.com/home-assistant/core/pull/80653 +[#80654]: https://github.com/home-assistant/core/pull/80654 +[#80657]: https://github.com/home-assistant/core/pull/80657 +[#80658]: https://github.com/home-assistant/core/pull/80658 +[#80659]: https://github.com/home-assistant/core/pull/80659 +[#80661]: https://github.com/home-assistant/core/pull/80661 +[#80663]: https://github.com/home-assistant/core/pull/80663 +[#80664]: https://github.com/home-assistant/core/pull/80664 +[#80668]: https://github.com/home-assistant/core/pull/80668 +[#80669]: https://github.com/home-assistant/core/pull/80669 +[#80671]: https://github.com/home-assistant/core/pull/80671 +[#80674]: https://github.com/home-assistant/core/pull/80674 +[#80676]: https://github.com/home-assistant/core/pull/80676 +[#80677]: https://github.com/home-assistant/core/pull/80677 +[#80679]: https://github.com/home-assistant/core/pull/80679 +[#80680]: https://github.com/home-assistant/core/pull/80680 +[#80681]: https://github.com/home-assistant/core/pull/80681 +[#80682]: https://github.com/home-assistant/core/pull/80682 +[#80686]: https://github.com/home-assistant/core/pull/80686 +[#80688]: https://github.com/home-assistant/core/pull/80688 +[#80695]: https://github.com/home-assistant/core/pull/80695 +[#80697]: https://github.com/home-assistant/core/pull/80697 +[#80698]: https://github.com/home-assistant/core/pull/80698 +[#80699]: https://github.com/home-assistant/core/pull/80699 +[#80700]: https://github.com/home-assistant/core/pull/80700 +[#80702]: https://github.com/home-assistant/core/pull/80702 +[#80705]: https://github.com/home-assistant/core/pull/80705 +[#80714]: https://github.com/home-assistant/core/pull/80714 +[#80721]: https://github.com/home-assistant/core/pull/80721 +[#80722]: https://github.com/home-assistant/core/pull/80722 +[#80723]: https://github.com/home-assistant/core/pull/80723 +[#80728]: https://github.com/home-assistant/core/pull/80728 +[#80732]: https://github.com/home-assistant/core/pull/80732 +[#80733]: https://github.com/home-assistant/core/pull/80733 +[#80735]: https://github.com/home-assistant/core/pull/80735 +[#80737]: https://github.com/home-assistant/core/pull/80737 +[#80738]: https://github.com/home-assistant/core/pull/80738 +[#80739]: https://github.com/home-assistant/core/pull/80739 +[#80740]: https://github.com/home-assistant/core/pull/80740 +[#80746]: https://github.com/home-assistant/core/pull/80746 +[#80747]: https://github.com/home-assistant/core/pull/80747 +[#80748]: https://github.com/home-assistant/core/pull/80748 +[#80751]: https://github.com/home-assistant/core/pull/80751 +[#80752]: https://github.com/home-assistant/core/pull/80752 +[#80755]: https://github.com/home-assistant/core/pull/80755 +[#80756]: https://github.com/home-assistant/core/pull/80756 +[#80759]: https://github.com/home-assistant/core/pull/80759 +[#80760]: https://github.com/home-assistant/core/pull/80760 +[#80761]: https://github.com/home-assistant/core/pull/80761 +[#80762]: https://github.com/home-assistant/core/pull/80762 +[#80763]: https://github.com/home-assistant/core/pull/80763 +[#80764]: https://github.com/home-assistant/core/pull/80764 +[#80767]: https://github.com/home-assistant/core/pull/80767 +[#80768]: https://github.com/home-assistant/core/pull/80768 +[#80773]: https://github.com/home-assistant/core/pull/80773 +[#80775]: https://github.com/home-assistant/core/pull/80775 +[#80782]: https://github.com/home-assistant/core/pull/80782 +[#80784]: https://github.com/home-assistant/core/pull/80784 +[#80785]: https://github.com/home-assistant/core/pull/80785 +[#80790]: https://github.com/home-assistant/core/pull/80790 +[#80792]: https://github.com/home-assistant/core/pull/80792 +[#80793]: https://github.com/home-assistant/core/pull/80793 +[#80794]: https://github.com/home-assistant/core/pull/80794 +[#80795]: https://github.com/home-assistant/core/pull/80795 +[#80797]: https://github.com/home-assistant/core/pull/80797 +[#80798]: https://github.com/home-assistant/core/pull/80798 +[#80800]: https://github.com/home-assistant/core/pull/80800 +[#80804]: https://github.com/home-assistant/core/pull/80804 +[#80815]: https://github.com/home-assistant/core/pull/80815 +[#80819]: https://github.com/home-assistant/core/pull/80819 +[#80820]: https://github.com/home-assistant/core/pull/80820 +[#80823]: https://github.com/home-assistant/core/pull/80823 +[#80827]: https://github.com/home-assistant/core/pull/80827 +[#80828]: https://github.com/home-assistant/core/pull/80828 +[#80830]: https://github.com/home-assistant/core/pull/80830 +[#80831]: https://github.com/home-assistant/core/pull/80831 +[#80832]: https://github.com/home-assistant/core/pull/80832 +[#80833]: https://github.com/home-assistant/core/pull/80833 +[#80835]: https://github.com/home-assistant/core/pull/80835 +[#80836]: https://github.com/home-assistant/core/pull/80836 +[#80842]: https://github.com/home-assistant/core/pull/80842 +[#80843]: https://github.com/home-assistant/core/pull/80843 +[#80845]: https://github.com/home-assistant/core/pull/80845 +[#80852]: https://github.com/home-assistant/core/pull/80852 +[#80853]: https://github.com/home-assistant/core/pull/80853 +[#80854]: https://github.com/home-assistant/core/pull/80854 +[#80857]: https://github.com/home-assistant/core/pull/80857 +[#80858]: https://github.com/home-assistant/core/pull/80858 +[#80859]: https://github.com/home-assistant/core/pull/80859 +[#80861]: https://github.com/home-assistant/core/pull/80861 +[#80863]: https://github.com/home-assistant/core/pull/80863 +[#80867]: https://github.com/home-assistant/core/pull/80867 +[#80870]: https://github.com/home-assistant/core/pull/80870 +[#80874]: https://github.com/home-assistant/core/pull/80874 +[#80875]: https://github.com/home-assistant/core/pull/80875 +[#80876]: https://github.com/home-assistant/core/pull/80876 +[#80877]: https://github.com/home-assistant/core/pull/80877 +[#80882]: https://github.com/home-assistant/core/pull/80882 +[#80883]: https://github.com/home-assistant/core/pull/80883 +[#80884]: https://github.com/home-assistant/core/pull/80884 +[#80885]: https://github.com/home-assistant/core/pull/80885 +[#80886]: https://github.com/home-assistant/core/pull/80886 +[#80887]: https://github.com/home-assistant/core/pull/80887 +[#80888]: https://github.com/home-assistant/core/pull/80888 +[#80889]: https://github.com/home-assistant/core/pull/80889 +[#80890]: https://github.com/home-assistant/core/pull/80890 +[#80891]: https://github.com/home-assistant/core/pull/80891 +[#80899]: https://github.com/home-assistant/core/pull/80899 +[#80906]: https://github.com/home-assistant/core/pull/80906 +[#80907]: https://github.com/home-assistant/core/pull/80907 +[#80908]: https://github.com/home-assistant/core/pull/80908 +[#80909]: https://github.com/home-assistant/core/pull/80909 +[#80910]: https://github.com/home-assistant/core/pull/80910 +[#80913]: https://github.com/home-assistant/core/pull/80913 +[#80914]: https://github.com/home-assistant/core/pull/80914 +[#80918]: https://github.com/home-assistant/core/pull/80918 +[#80924]: https://github.com/home-assistant/core/pull/80924 +[#80925]: https://github.com/home-assistant/core/pull/80925 +[#80928]: https://github.com/home-assistant/core/pull/80928 +[#80935]: https://github.com/home-assistant/core/pull/80935 +[#80937]: https://github.com/home-assistant/core/pull/80937 +[#80938]: https://github.com/home-assistant/core/pull/80938 +[#80939]: https://github.com/home-assistant/core/pull/80939 +[#80940]: https://github.com/home-assistant/core/pull/80940 +[#80943]: https://github.com/home-assistant/core/pull/80943 +[#80944]: https://github.com/home-assistant/core/pull/80944 +[#80945]: https://github.com/home-assistant/core/pull/80945 +[#80946]: https://github.com/home-assistant/core/pull/80946 +[#80947]: https://github.com/home-assistant/core/pull/80947 +[#80948]: https://github.com/home-assistant/core/pull/80948 +[#80951]: https://github.com/home-assistant/core/pull/80951 +[#80953]: https://github.com/home-assistant/core/pull/80953 +[#80958]: https://github.com/home-assistant/core/pull/80958 +[#80959]: https://github.com/home-assistant/core/pull/80959 +[#80961]: https://github.com/home-assistant/core/pull/80961 +[#80963]: https://github.com/home-assistant/core/pull/80963 +[#80964]: https://github.com/home-assistant/core/pull/80964 +[#80968]: https://github.com/home-assistant/core/pull/80968 +[#80969]: https://github.com/home-assistant/core/pull/80969 +[#80970]: https://github.com/home-assistant/core/pull/80970 +[#80974]: https://github.com/home-assistant/core/pull/80974 +[#80975]: https://github.com/home-assistant/core/pull/80975 +[#80980]: https://github.com/home-assistant/core/pull/80980 +[#80987]: https://github.com/home-assistant/core/pull/80987 +[#80993]: https://github.com/home-assistant/core/pull/80993 +[#80994]: https://github.com/home-assistant/core/pull/80994 +[#80996]: https://github.com/home-assistant/core/pull/80996 +[#80998]: https://github.com/home-assistant/core/pull/80998 +[#81000]: https://github.com/home-assistant/core/pull/81000 +[#81003]: https://github.com/home-assistant/core/pull/81003 +[#81004]: https://github.com/home-assistant/core/pull/81004 +[#81005]: https://github.com/home-assistant/core/pull/81005 +[#81006]: https://github.com/home-assistant/core/pull/81006 +[#81007]: https://github.com/home-assistant/core/pull/81007 +[#81008]: https://github.com/home-assistant/core/pull/81008 +[#81009]: https://github.com/home-assistant/core/pull/81009 +[#81011]: https://github.com/home-assistant/core/pull/81011 +[#81013]: https://github.com/home-assistant/core/pull/81013 +[#81014]: https://github.com/home-assistant/core/pull/81014 +[#81015]: https://github.com/home-assistant/core/pull/81015 +[#81016]: https://github.com/home-assistant/core/pull/81016 +[#81020]: https://github.com/home-assistant/core/pull/81020 +[#81021]: https://github.com/home-assistant/core/pull/81021 +[#81022]: https://github.com/home-assistant/core/pull/81022 +[#81023]: https://github.com/home-assistant/core/pull/81023 +[#81026]: https://github.com/home-assistant/core/pull/81026 +[#81028]: https://github.com/home-assistant/core/pull/81028 +[#81030]: https://github.com/home-assistant/core/pull/81030 +[#81031]: https://github.com/home-assistant/core/pull/81031 +[#81032]: https://github.com/home-assistant/core/pull/81032 +[#81035]: https://github.com/home-assistant/core/pull/81035 +[#81039]: https://github.com/home-assistant/core/pull/81039 +[#81040]: https://github.com/home-assistant/core/pull/81040 +[#81041]: https://github.com/home-assistant/core/pull/81041 +[#81042]: https://github.com/home-assistant/core/pull/81042 +[#81043]: https://github.com/home-assistant/core/pull/81043 +[#81046]: https://github.com/home-assistant/core/pull/81046 +[#81048]: https://github.com/home-assistant/core/pull/81048 +[#81049]: https://github.com/home-assistant/core/pull/81049 +[#81050]: https://github.com/home-assistant/core/pull/81050 +[#81051]: https://github.com/home-assistant/core/pull/81051 +[#81058]: https://github.com/home-assistant/core/pull/81058 +[#81059]: https://github.com/home-assistant/core/pull/81059 +[#81061]: https://github.com/home-assistant/core/pull/81061 +[#81071]: https://github.com/home-assistant/core/pull/81071 +[#81095]: https://github.com/home-assistant/core/pull/81095 +[#81098]: https://github.com/home-assistant/core/pull/81098 +[#81109]: https://github.com/home-assistant/core/pull/81109 +[#81110]: https://github.com/home-assistant/core/pull/81110 +[#81112]: https://github.com/home-assistant/core/pull/81112 +[#81114]: https://github.com/home-assistant/core/pull/81114 +[#81121]: https://github.com/home-assistant/core/pull/81121 +[#81123]: https://github.com/home-assistant/core/pull/81123 +[#81129]: https://github.com/home-assistant/core/pull/81129 +[#81131]: https://github.com/home-assistant/core/pull/81131 +[#81133]: https://github.com/home-assistant/core/pull/81133 +[#81144]: https://github.com/home-assistant/core/pull/81144 +[#81146]: https://github.com/home-assistant/core/pull/81146 +[#81148]: https://github.com/home-assistant/core/pull/81148 +[#81153]: https://github.com/home-assistant/core/pull/81153 +[#81161]: https://github.com/home-assistant/core/pull/81161 +[#81163]: https://github.com/home-assistant/core/pull/81163 +[#81164]: https://github.com/home-assistant/core/pull/81164 +[#81166]: https://github.com/home-assistant/core/pull/81166 +[#81171]: https://github.com/home-assistant/core/pull/81171 +[#81172]: https://github.com/home-assistant/core/pull/81172 +[#81175]: https://github.com/home-assistant/core/pull/81175 +[#81177]: https://github.com/home-assistant/core/pull/81177 +[#81188]: https://github.com/home-assistant/core/pull/81188 +[#81195]: https://github.com/home-assistant/core/pull/81195 +[#81197]: https://github.com/home-assistant/core/pull/81197 +[#81198]: https://github.com/home-assistant/core/pull/81198 +[#81200]: https://github.com/home-assistant/core/pull/81200 +[#81204]: https://github.com/home-assistant/core/pull/81204 +[#81205]: https://github.com/home-assistant/core/pull/81205 +[#81211]: https://github.com/home-assistant/core/pull/81211 +[#81213]: https://github.com/home-assistant/core/pull/81213 +[#81215]: https://github.com/home-assistant/core/pull/81215 +[#81221]: https://github.com/home-assistant/core/pull/81221 +[#81229]: https://github.com/home-assistant/core/pull/81229 +[#81243]: https://github.com/home-assistant/core/pull/81243 +[#81246]: https://github.com/home-assistant/core/pull/81246 +[#81254]: https://github.com/home-assistant/core/pull/81254 +[#81255]: https://github.com/home-assistant/core/pull/81255 +[#81257]: https://github.com/home-assistant/core/pull/81257 +[#81265]: https://github.com/home-assistant/core/pull/81265 +[#81266]: https://github.com/home-assistant/core/pull/81266 +[#81268]: https://github.com/home-assistant/core/pull/81268 +[#81270]: https://github.com/home-assistant/core/pull/81270 +[#81277]: https://github.com/home-assistant/core/pull/81277 +[#81280]: https://github.com/home-assistant/core/pull/81280 +[#81282]: https://github.com/home-assistant/core/pull/81282 +[#81283]: https://github.com/home-assistant/core/pull/81283 +[#81284]: https://github.com/home-assistant/core/pull/81284 +[#81285]: https://github.com/home-assistant/core/pull/81285 +[#81286]: https://github.com/home-assistant/core/pull/81286 +[#81287]: https://github.com/home-assistant/core/pull/81287 +[#81290]: https://github.com/home-assistant/core/pull/81290 +[#81296]: https://github.com/home-assistant/core/pull/81296 +[#81311]: https://github.com/home-assistant/core/pull/81311 +[#81312]: https://github.com/home-assistant/core/pull/81312 +[#81313]: https://github.com/home-assistant/core/pull/81313 +[#81315]: https://github.com/home-assistant/core/pull/81315 +[#81317]: https://github.com/home-assistant/core/pull/81317 +[#81320]: https://github.com/home-assistant/core/pull/81320 +[#81323]: https://github.com/home-assistant/core/pull/81323 +[#81324]: https://github.com/home-assistant/core/pull/81324 +[#81326]: https://github.com/home-assistant/core/pull/81326 +[#81339]: https://github.com/home-assistant/core/pull/81339 +[#81341]: https://github.com/home-assistant/core/pull/81341 +[#81342]: https://github.com/home-assistant/core/pull/81342 +[#81345]: https://github.com/home-assistant/core/pull/81345 +[#81347]: https://github.com/home-assistant/core/pull/81347 +[#81348]: https://github.com/home-assistant/core/pull/81348 +[#81351]: https://github.com/home-assistant/core/pull/81351 +[#81356]: https://github.com/home-assistant/core/pull/81356 +[#81357]: https://github.com/home-assistant/core/pull/81357 +[#81358]: https://github.com/home-assistant/core/pull/81358 +[#81360]: https://github.com/home-assistant/core/pull/81360 +[#81363]: https://github.com/home-assistant/core/pull/81363 +[#81370]: https://github.com/home-assistant/core/pull/81370 +[#81372]: https://github.com/home-assistant/core/pull/81372 +[#81379]: https://github.com/home-assistant/core/pull/81379 +[#81386]: https://github.com/home-assistant/core/pull/81386 +[#81387]: https://github.com/home-assistant/core/pull/81387 +[#81398]: https://github.com/home-assistant/core/pull/81398 +[#81405]: https://github.com/home-assistant/core/pull/81405 +[#81407]: https://github.com/home-assistant/core/pull/81407 +[#81414]: https://github.com/home-assistant/core/pull/81414 +[#81422]: https://github.com/home-assistant/core/pull/81422 +[@AngellusMortis]: https://github.com/AngellusMortis +[@AustinBrunkhorst]: https://github.com/AustinBrunkhorst +[@Cereal2nd]: https://github.com/Cereal2nd +[@CharlieBailly]: https://github.com/CharlieBailly +[@Danielhiversen]: https://github.com/Danielhiversen +[@DeerMaximum]: https://github.com/DeerMaximum +[@Djelibeybi]: https://github.com/Djelibeybi +[@DurgNomis-drol]: https://github.com/DurgNomis-drol +[@G-Two]: https://github.com/G-Two +[@Geliras]: https://github.com/Geliras +[@HarvsG]: https://github.com/HarvsG +[@HennieLP]: https://github.com/HennieLP +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@KevinCathcart]: https://github.com/KevinCathcart +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MrAliFu]: https://github.com/MrAliFu +[@Nardol]: https://github.com/Nardol +[@Nippey]: https://github.com/Nippey +[@OnFreund]: https://github.com/OnFreund +[@Ongy]: https://github.com/Ongy +[@PeteRager]: https://github.com/PeteRager +[@Petro31]: https://github.com/Petro31 +[@Quentame]: https://github.com/Quentame +[@Shutgun]: https://github.com/Shutgun +[@Socalix]: https://github.com/Socalix +[@StevenLooman]: https://github.com/StevenLooman +[@TheJulianJES]: https://github.com/TheJulianJES +[@ThomDietrich]: https://github.com/ThomDietrich +[@TomBrien]: https://github.com/TomBrien +[@Tommatheussen]: https://github.com/Tommatheussen +[@Xeevis]: https://github.com/Xeevis +[@alexdrl]: https://github.com/alexdrl +[@allenporter]: https://github.com/allenporter +[@avishorp]: https://github.com/avishorp +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@borky]: https://github.com/borky +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@ctalkington]: https://github.com/ctalkington +[@cyberjunky]: https://github.com/cyberjunky +[@dala318]: https://github.com/dala318 +[@danaues]: https://github.com/danaues +[@davet2001]: https://github.com/davet2001 +[@definitio]: https://github.com/definitio +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@ehendrix23]: https://github.com/ehendrix23 +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@farmio]: https://github.com/farmio +[@felipecrs]: https://github.com/felipecrs +[@flabbamann]: https://github.com/flabbamann +[@flacjacket]: https://github.com/flacjacket +[@flemmingss]: https://github.com/flemmingss +[@flz]: https://github.com/flz +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@grimpy]: https://github.com/grimpy +[@gwww]: https://github.com/gwww +[@hackerESQ]: https://github.com/hackerESQ +[@iMicknl]: https://github.com/iMicknl +[@jafar-atili]: https://github.com/jafar-atili +[@janick]: https://github.com/janick +[@javicalle]: https://github.com/javicalle +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jeinwag]: https://github.com/jeinwag +[@jesserockz]: https://github.com/jesserockz +[@jfparis]: https://github.com/jfparis +[@jjlawren]: https://github.com/jjlawren +[@jloehr]: https://github.com/jloehr +[@jplitza]: https://github.com/jplitza +[@jramirez857]: https://github.com/jramirez857 +[@kevdliu]: https://github.com/kevdliu +[@killer0071234]: https://github.com/killer0071234 +[@kilrogg]: https://github.com/kilrogg +[@kingy444]: https://github.com/kingy444 +[@kneirinck]: https://github.com/kneirinck +[@kpine]: https://github.com/kpine +[@liudger]: https://github.com/liudger +[@luar123]: https://github.com/luar123 +[@ludeeus]: https://github.com/ludeeus +[@macmenco]: https://github.com/macmenco +[@majuss]: https://github.com/majuss +[@marcusrbrown]: https://github.com/marcusrbrown +[@marvin-w]: https://github.com/marvin-w +[@mbo18]: https://github.com/mbo18 +[@mdegat01]: https://github.com/mdegat01 +[@mezz64]: https://github.com/mezz64 +[@mib1185]: https://github.com/mib1185 +[@mtdcr]: https://github.com/mtdcr +[@muppet3000]: https://github.com/muppet3000 +[@mvn23]: https://github.com/mvn23 +[@natekspencer]: https://github.com/natekspencer +[@ndbroadbent]: https://github.com/ndbroadbent +[@niobos]: https://github.com/niobos +[@nkgilley]: https://github.com/nkgilley +[@oischinger]: https://github.com/oischinger +[@ol-iver]: https://github.com/ol-iver +[@ollo69]: https://github.com/ollo69 +[@onpremcloudguy]: https://github.com/onpremcloudguy +[@osono-design]: https://github.com/osono-design +[@oyvindwe]: https://github.com/oyvindwe +[@pattyland]: https://github.com/pattyland +[@pghazanfari]: https://github.com/pghazanfari +[@philschenker]: https://github.com/philschenker +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@rajlaud]: https://github.com/rajlaud +[@raman325]: https://github.com/raman325 +[@rappenze]: https://github.com/rappenze +[@renaiku]: https://github.com/renaiku +[@renegaderyu]: https://github.com/renegaderyu +[@rfleming71]: https://github.com/rfleming71 +[@rikroe]: https://github.com/rikroe +[@riokuu]: https://github.com/riokuu +[@rklomp]: https://github.com/rklomp +[@scop]: https://github.com/scop +[@shbatm]: https://github.com/shbatm +[@slovdahl]: https://github.com/slovdahl +[@starkillerOG]: https://github.com/starkillerOG +[@taiyeoguns]: https://github.com/taiyeoguns +[@tetienne]: https://github.com/tetienne +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[@tymm]: https://github.com/tymm +[@uvjustin]: https://github.com/uvjustin +[@vigonotion]: https://github.com/vigonotion +[@vincegio]: https://github.com/vincegio +[@vpathuis]: https://github.com/vpathuis +[@wrt54g]: https://github.com/wrt54g +[@yozik04]: https://github.com/yozik04 +[@yuvalabou]: https://github.com/yuvalabou +[accuweather docs]: /integrations/accuweather/ +[adax docs]: /integrations/adax/ +[aemet docs]: /integrations/aemet/ +[airnow docs]: /integrations/airnow/ +[airthings_ble docs]: /integrations/airthings_ble/ +[alert docs]: /integrations/alert/ +[amberelectric docs]: /integrations/amberelectric/ +[ambient_station docs]: /integrations/ambient_station/ +[android_ip_webcam docs]: /integrations/android_ip_webcam/ +[androidtv docs]: /integrations/androidtv/ +[anthemav docs]: /integrations/anthemav/ +[apcupsd docs]: /integrations/apcupsd/ +[apprise docs]: /integrations/apprise/ +[aqualogic docs]: /integrations/aqualogic/ +[automation docs]: /integrations/automation/ +[aws docs]: /integrations/aws/ +[axis docs]: /integrations/axis/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[baf docs]: /integrations/baf/ +[bayesian docs]: /integrations/bayesian/ +[blebox docs]: /integrations/blebox/ +[blockchain docs]: /integrations/blockchain/ +[blueprint docs]: /integrations/blueprint/ +[bluesound docs]: /integrations/bluesound/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bosch_shc docs]: /integrations/bosch_shc/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[bsblan docs]: /integrations/bsblan/ +[buienradar docs]: /integrations/buienradar/ +[calendar docs]: /integrations/calendar/ +[camera docs]: /integrations/camera/ +[channels docs]: /integrations/channels/ +[citybikes docs]: /integrations/citybikes/ +[clickatell docs]: /integrations/clickatell/ +[clicksend docs]: /integrations/clicksend/ +[clicksend_tts docs]: /integrations/clicksend_tts/ +[cloud docs]: /integrations/cloud/ +[coinbase docs]: /integrations/coinbase/ +[comfoconnect docs]: /integrations/comfoconnect/ +[config docs]: /integrations/config/ +[conversation docs]: /integrations/conversation/ +[daikin docs]: /integrations/daikin/ +[danfoss_air docs]: /integrations/danfoss_air/ +[darksky docs]: /integrations/darksky/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[denonavr docs]: /integrations/denonavr/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[eafm docs]: /integrations/eafm/ +[ecobee docs]: /integrations/ecobee/ +[ecowitt docs]: /integrations/ecowitt/ +[edl21 docs]: /integrations/edl21/ +[eight_sleep docs]: /integrations/eight_sleep/ +[energy docs]: /integrations/energy/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[esphome docs]: /integrations/esphome/ +[fibaro docs]: /integrations/fibaro/ +[fints docs]: /integrations/fints/ +[fireservicerota docs]: /integrations/fireservicerota/ +[fitbit docs]: /integrations/fitbit/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flo docs]: /integrations/flo/ +[flume docs]: /integrations/flume/ +[forked_daapd docs]: /integrations/forked_daapd/ +[freebox docs]: /integrations/freebox/ +[fritzbox docs]: /integrations/fritzbox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[frontend docs]: /integrations/frontend/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[gdacs docs]: /integrations/gdacs/ +[generic docs]: /integrations/generic/ +[generic_hygrostat docs]: /integrations/generic_hygrostat/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[github docs]: /integrations/github/ +[glances docs]: /integrations/glances/ +[goodwe docs]: /integrations/goodwe/ +[google docs]: /integrations/google/ +[google_cloud docs]: /integrations/google_cloud/ +[google_pubsub docs]: /integrations/google_pubsub/ +[google_travel_time docs]: /integrations/google_travel_time/ +[graphite docs]: /integrations/graphite/ +[gree docs]: /integrations/gree/ +[group docs]: /integrations/group/ +[growatt_server docs]: /integrations/growatt_server/ +[guardian docs]: /integrations/guardian/ +[hassio docs]: /integrations/hassio/ +[here_travel_time docs]: /integrations/here_travel_time/ +[history_stats docs]: /integrations/history_stats/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homewizard docs]: /integrations/homewizard/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[hvv_departures docs]: /integrations/hvv_departures/ +[iaqualink docs]: /integrations/iaqualink/ +[ibeacon docs]: /integrations/ibeacon/ +[intellifire docs]: /integrations/intellifire/ +[ipma docs]: /integrations/ipma/ +[ipp docs]: /integrations/ipp/ +[iqvia docs]: /integrations/iqvia/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[iss docs]: /integrations/iss/ +[isy994 docs]: /integrations/isy994/ +[jellyfin docs]: /integrations/jellyfin/ +[kira docs]: /integrations/kira/ +[knx docs]: /integrations/knx/ +[lacrosse docs]: /integrations/lacrosse/ +[lametric docs]: /integrations/lametric/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[launch_library docs]: /integrations/launch_library/ +[led_ble docs]: /integrations/led_ble/ +[lidarr docs]: /integrations/lidarr/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[litterrobot docs]: /integrations/litterrobot/ +[logbook docs]: /integrations/logbook/ +[lovelace docs]: /integrations/lovelace/ +[lupusec docs]: /integrations/lupusec/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[lyric docs]: /integrations/lyric/ +[map docs]: /integrations/map/ +[mazda docs]: /integrations/mazda/ +[meteo_france docs]: /integrations/meteo_france/ +[mikrotik docs]: /integrations/mikrotik/ +[min_max docs]: /integrations/min_max/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[monoprice docs]: /integrations/monoprice/ +[motion_blinds docs]: /integrations/motion_blinds/ +[motioneye docs]: /integrations/motioneye/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[nam docs]: /integrations/nam/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netdata docs]: /integrations/netdata/ +[nexia docs]: /integrations/nexia/ +[nextcloud docs]: /integrations/nextcloud/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[nina docs]: /integrations/nina/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[nobo_hub docs]: /integrations/nobo_hub/ +[notion docs]: /integrations/notion/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[octoprint docs]: /integrations/octoprint/ +[oncue docs]: /integrations/oncue/ +[openexchangerates docs]: /integrations/openexchangerates/ +[opengarage docs]: /integrations/opengarage/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[oralb docs]: /integrations/oralb/ +[overkiz docs]: /integrations/overkiz/ +[p1_monitor docs]: /integrations/p1_monitor/ +[persistent_notification docs]: /integrations/persistent_notification/ +[philips_js docs]: /integrations/philips_js/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[pushover docs]: /integrations/pushover/ +[qingping docs]: /integrations/qingping/ +[radarr docs]: /integrations/radarr/ +[rainmachine docs]: /integrations/rainmachine/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[remote_rpi_gpio docs]: /integrations/remote_rpi_gpio/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ridwell docs]: /integrations/ridwell/ +[ring docs]: /integrations/ring/ +[risco docs]: /integrations/risco/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[scrape docs]: /integrations/scrape/ +[script docs]: /integrations/script/ +[select docs]: /integrations/select/ +[senseme docs]: /integrations/senseme/ +[sensibo docs]: /integrations/sensibo/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[shelly docs]: /integrations/shelly/ +[simplepush docs]: /integrations/simplepush/ +[simplisafe docs]: /integrations/simplisafe/ +[skybell docs]: /integrations/skybell/ +[sma docs]: /integrations/sma/ +[smartthings docs]: /integrations/smartthings/ +[snapcast docs]: /integrations/snapcast/ +[snooz docs]: /integrations/snooz/ +[sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[ssdp docs]: /integrations/ssdp/ +[statistics docs]: /integrations/statistics/ +[stream docs]: /integrations/stream/ +[subaru docs]: /integrations/subaru/ +[suez_water docs]: /integrations/suez_water/ +[sun docs]: /integrations/sun/ +[switchbee docs]: /integrations/switchbee/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[symfonisk docs]: /integrations/symfonisk/ +[syncthru docs]: /integrations/syncthru/ +[system_bridge docs]: /integrations/system_bridge/ +[system_log docs]: /integrations/system_log/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tasmota docs]: /integrations/tasmota/ +[tellduslive docs]: /integrations/tellduslive/ +[temper docs]: /integrations/temper/ +[template docs]: /integrations/template/ +[tibber docs]: /integrations/tibber/ +[tile docs]: /integrations/tile/ +[tomorrowio docs]: /integrations/tomorrowio/ +[toon docs]: /integrations/toon/ +[tplink docs]: /integrations/tplink/ +[trace docs]: /integrations/trace/ +[trafikverket_ferry docs]: /integrations/trafikverket_ferry/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[ultraloq docs]: /integrations/ultraloq/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[upcloud docs]: /integrations/upcloud/ +[upnp docs]: /integrations/upnp/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[volvooncall docs]: /integrations/volvooncall/ +[watttime docs]: /integrations/watttime/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[weather docs]: /integrations/weather/ +[webhook docs]: /integrations/webhook/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wled docs]: /integrations/wled/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xmpp docs]: /integrations/xmpp/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[youless docs]: /integrations/youless/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave_js docs]: /integrations/zwave_js/ diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index f1196603327..b53cb439336 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -129,6 +129,7 @@ frontend: View can be marked as "Subview". Subviews won’t show up in the navigation bar. When on the subview, the navigation bar only show the name of the subview and a back button. By default, clicking on back button will navigate to the previous view but a custom back path (`back_path`) can be set. + You can access subviews from other parts of your dashboard by using [cards that support the `navigate` action](/dashboards/actions). #### Example diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 3043e234b6b..857bf272417 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -31,12 +31,12 @@ Now let's make a change using the file editor: we are going to change the name, name: Home latitude: xx.xxxx longitude: xx.xxxx - unit_system: imperial + unit_system: us_customary time_zone: America/Chicago ```
- Valid options for `unit_system` are `imperial` or `metric`. See [here](https://timezonedb.com/time-zones) for a list of valid time zones. Enter the appropriate option found under the Time Zone column at that page. + Valid options for `unit_system` are `us_customary` or `metric`. See [here](https://timezonedb.com/time-zones) for a list of valid time zones. Enter the appropriate option found under the Time Zone column at that page.
diff --git a/source/images/blog/2022-11/first-day-of-the-week.png b/source/images/blog/2022-11/first-day-of-the-week.png new file mode 100644 index 00000000000..767b0a8a7cb Binary files /dev/null and b/source/images/blog/2022-11/first-day-of-the-week.png differ diff --git a/source/images/blog/2022-11/kelvin.png b/source/images/blog/2022-11/kelvin.png new file mode 100644 index 00000000000..e9977ffee92 Binary files /dev/null and b/source/images/blog/2022-11/kelvin.png differ diff --git a/source/images/blog/2022-11/long-term-stats-more-info-dialog.png b/source/images/blog/2022-11/long-term-stats-more-info-dialog.png new file mode 100644 index 00000000000..3882b12c261 Binary files /dev/null and b/source/images/blog/2022-11/long-term-stats-more-info-dialog.png differ diff --git a/source/images/blog/2022-11/social.png b/source/images/blog/2022-11/social.png new file mode 100644 index 00000000000..b10595978d5 Binary files /dev/null and b/source/images/blog/2022-11/social.png differ diff --git a/source/images/blog/2022-11/statistic-card.png b/source/images/blog/2022-11/statistic-card.png new file mode 100644 index 00000000000..7611bd24632 Binary files /dev/null and b/source/images/blog/2022-11/statistic-card.png differ diff --git a/source/images/blog/2022-11/tile-card.png b/source/images/blog/2022-11/tile-card.png new file mode 100644 index 00000000000..372ae2758fd Binary files /dev/null and b/source/images/blog/2022-11/tile-card.png differ diff --git a/source/images/blog/2022-11/water-usage.png b/source/images/blog/2022-11/water-usage.png new file mode 100644 index 00000000000..f0640382c23 Binary files /dev/null and b/source/images/blog/2022-11/water-usage.png differ diff --git a/source/images/dashboards/energy/water-graph.png b/source/images/dashboards/energy/water-graph.png new file mode 100644 index 00000000000..76eaf4ff496 Binary files /dev/null and b/source/images/dashboards/energy/water-graph.png differ diff --git a/source/images/dashboards/statistic.png b/source/images/dashboards/statistic.png new file mode 100644 index 00000000000..09ff7b6ff89 Binary files /dev/null and b/source/images/dashboards/statistic.png differ diff --git a/source/images/dashboards/tile_card.png b/source/images/dashboards/tile_card.png new file mode 100644 index 00000000000..5ae0f1e0db6 Binary files /dev/null and b/source/images/dashboards/tile_card.png differ diff --git a/source/images/integrations/snooz/pairing_mode.jpg b/source/images/integrations/snooz/pairing_mode.jpg new file mode 100644 index 00000000000..d8a48df7680 Binary files /dev/null and b/source/images/integrations/snooz/pairing_mode.jpg differ