- This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2022.10.
-
-
-The [OpenALPR](https://www.openalpr.com/) integration for Home Assistant allows you
-to process vehicle license plates from a camera. You can use this information to
-trigger [automations](/integrations/automation/) like opening a garage door.
-
-For using the result inside an automation rule, take a look at the
-[image processing integration](/integrations/image_processing) page.
-
-## Local installation
-
-If you want process all data locally, you will need version 2.3.1 or higher of the
-`alpr` command line tool.
-
-If you don't find binaries for your distribution, you can compile the tool from source.
-Documentation of how to build OpenALPR is found
-[here](https://github.com/openalpr/openalpr/wiki).
-
-On a Debian system you can use the following `cmake` command to build only the command
-line tool:
-
-```bash
-cmake -DWITH_TEST=FALSE -DWITH_BINDING_JAVA=FALSE --DWITH_BINDING_PYTHON=FALSE \
- --DWITH_BINDING_GO=FALSE -DWITH_DAEMON=FALSE -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
-```
-
-For other operating systems, please refer to the
-[OpenALPR wiki](https://github.com/openalpr/openalpr/wiki).
-
-Verify your `alpr` installation with a command like the following:
-
-```bash
-wget -O- -q http://plates.openalpr.com/h786poj.jpg | alpr -
-```
-
-### Configuration
-
-```yaml
-# Example configuration.yaml entry
-image_processing:
- - platform: openalpr_local
- region: eu
- source:
- - entity_id: camera.garage
-```
-
-{% configuration %}
-region:
- description: Country or region. List of [supported values](https://github.com/openalpr/openalpr/tree/master/runtime_data/config).
- required: true
- type: string
-alpr_bin:
- description: The command line tool alpr from OpenALPR software for local processing.
- required: false
- type: string
- default: alpr
-confidence:
- description: The minimum confidence in percent to process with Home Assistant.
- required: false
- type: integer
- default: 80
-source:
- description: List of image sources.
- required: true
- type: list
- keys:
- entity_id:
- description: A camera entity id to get the picture from.
- required: true
- type: string
- name:
- description: This parameter allows you to override the name of your OpenALPR entity.
- required: false
- type: string
-{% endconfiguration %}
diff --git a/source/_integrations/oralb.markdown b/source/_integrations/oralb.markdown
index 1e89d99cc06e..fd78d674d23c 100644
--- a/source/_integrations/oralb.markdown
+++ b/source/_integrations/oralb.markdown
@@ -8,6 +8,7 @@ ha_release: 2022.11
ha_iot_class: Local Push
ha_codeowners:
- '@bdraco'
+ - '@Lash-L'
ha_domain: oralb
ha_config_flow: true
ha_platforms:
@@ -24,17 +25,22 @@ The Oral-B integration will automatically discover devices once the [Bluetooth](
## Supported devices
- [IO 4 Series](https://oralb.com/en-us/products/electric-toothbrushes/oralbio)
+- [IO 6 Series](https://oralb.com/en-us/products/electric-toothbrushes/io-series-6-electric-toothbrush-gray-opal/)
- [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 4000
+- Smart Series 6000
- [Smart Series 7000](https://oralb.com/en-us/products/electric-toothbrushes/smart-7000-rechargeable-electric-toothbrush/)
+- Smart Series 8000
- [Genius Series 9000](https://oralb.com/en-us/products/electric-toothbrushes/genius-9600-rechargeable-electric-toothbrush-white/)
+- Triumph V2
## Sensor
* Mode - selected cleaning mode e.g. daily clean.
* Number of sectors - brushing areas set in the **Set Pacer Visualisation** in the brushing preferences in the mobile app.
-* Sector - the current area of the mouth you are brushing.
-* Sector time - amount time brushing the current sector in seconds.
+* Sector - the current sector of brush goal you are in (i.e. if brush goal is 2:00 minutes, and you are at 0:37, you are in sector 2)
* Time - total brushing time in seconds.
* Toothbrush state - whether the toothbrush is running, idle.
+* Battery - toothbrush battery percentage.
diff --git a/source/_integrations/otbr.markdown b/source/_integrations/otbr.markdown
new file mode 100644
index 000000000000..98d802a9c4e3
--- /dev/null
+++ b/source/_integrations/otbr.markdown
@@ -0,0 +1,18 @@
+---
+title: Open Thread Border Router
+ha_category:
+ - Other
+ha_release: 2023.2
+ha_quality_scale: internal
+ha_codeowners:
+ - '@home-assistant/core'
+ha_domain: otbr
+ha_iot_class: Local Polling
+ha_platforms:
+ha_integration_type: integration
+---
+
+The Open Thread Border Router integration allows calling an Open Thread Border Router's REST API from Python and via WebSocket.
+The integration is automatically set up when the "Silicon Labs Multiprotocol" add-on is installed.
+
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/powerwall.markdown b/source/_integrations/powerwall.markdown
index dfe91bea7e4a..ef1de6b55019 100644
--- a/source/_integrations/powerwall.markdown
+++ b/source/_integrations/powerwall.markdown
@@ -5,17 +5,20 @@ ha_category:
- Binary Sensor
- Energy
- Sensor
+ - Switch
ha_release: 0.108
ha_iot_class: Local Polling
ha_config_flow: true
ha_codeowners:
- '@bdraco'
- '@jrester'
+ - '@daniel-simpson'
ha_domain: powerwall
ha_dhcp: true
ha_platforms:
- binary_sensor
- sensor
+ - switch
ha_integration_type: integration
---
@@ -25,6 +28,7 @@ There is currently support for the following device types within Home Assistant:
- [Binary Sensor](#binary-sensor)
- [Sensor](#sensor)
+- [Switch](#switch)
{% include integrations/config_flow.md %}
@@ -65,6 +69,12 @@ The following sensors show the direction of energy:
- Powerwall Generator Export - Generator energy exported in kWh
- Powerwall Generator Import - Generator energy imported in kWh
+### Switch
+
+The following switches are added for each Powerwall:
+
+- Off-Grid operation - Take your Powerwall off-grid (simulate a grid outage)
+
### Device Info
- Model Number
diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown
index 3cd11b4e5f8a..99300f75b835 100644
--- a/source/_integrations/profiler.markdown
+++ b/source/_integrations/profiler.markdown
@@ -53,6 +53,10 @@ gprof2dot -f pstats profile.1234567890123456.cprof | dot -Tsvg -o profile.svg
### Service `profiler.memory`
+
+This service is unavailable when using Python 3.11 as the underlying guppy3 library does not yet support Python 3.11.
+
+
Start the memory profiler for the specified number of seconds.
| Service data attribute | Optional | Description |
diff --git a/source/_integrations/pvpc_hourly_pricing.markdown b/source/_integrations/pvpc_hourly_pricing.markdown
index fe2187f5a631..7e91863fab5c 100644
--- a/source/_integrations/pvpc_hourly_pricing.markdown
+++ b/source/_integrations/pvpc_hourly_pricing.markdown
@@ -43,43 +43,6 @@ In case you did nothing after the tariff change on 2021-06-01, both powers are e
You can add up to 2 sensors (one for each geographic zone) by adding them again through the integrations panel,
and you can change the sensor configuration anytime by going to the integration's options.
-### Advanced configuration
-
-PVPC Hourly Pricing allows manual configuration by adding a section to your `configuration.yaml`.
-
-```yaml
-# Set up electricity price sensors as a component:
-pvpc_hourly_pricing:
- - name: "PVPC"
- tariff: "2.0TD"
- power: 3.45
- power_p3: 4.6
- - name: "PVPC-CYM"
- tariff: "2.0TD (Ceuta/Melilla)"
-```
-
-{% configuration %}
-name:
- description: Custom name for the sensor.
- required: true
- type: string
-tariff:
- description: Electric tariff by geographic zone.
- required: true
- default: 2.0TD
- type: string
-power:
- description: Contracted electric power in kW.
- required: false
- default: 3.3
- type: float
-power_p3:
- description: Contracted electric power in kW for valley period (P3).
- required: false
- default: 3.3
- type: float
-{% endconfiguration %}
-
The sensor provides an hourly price for energy consumed, but the variable cost of energy is only one of the factors that add up to the electricity bill:
diff --git a/source/_integrations/qnap_qsw.markdown b/source/_integrations/qnap_qsw.markdown
index d37dc7a5d928..08d9d797c56e 100644
--- a/source/_integrations/qnap_qsw.markdown
+++ b/source/_integrations/qnap_qsw.markdown
@@ -62,6 +62,17 @@ The following *sensors* are created:
| temperature | Switch temperature. |
| uptime | Uptime seconds. |
+The following sensors are created for each port (or LACP):
+
+| Condition | Description |
+| :------------------ | :--------------------------------- |
+| link_speed | Link speed. |
+| rx | RX bytes. |
+| rx_errors | Number of RX errors. |
+| rx_speed | RX speed. |
+| tx | TX bytes. |
+| tx_speed | TX speed. |
+
## Update
| Update | Description |
diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown
index 829e3576cb08..e7b606e0c774 100644
--- a/source/_integrations/rainbird.markdown
+++ b/source/_integrations/rainbird.markdown
@@ -3,8 +3,10 @@ title: Rain Bird
description: Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant.
ha_category:
- Irrigation
+ - Binary Sensor
- Sensor
- Switch
+ha_config_flow: true
ha_release: 0.61
ha_iot_class: Local Polling
ha_codeowners:
@@ -22,109 +24,43 @@ This `rainbird` integration allows interacting with [LNK WiFi](https://www.rainb
There is currently support for the following device types within Home Assistant:
-- [Sensor](#sensor)
+- [Binary Sensor](#binary-sensor)
+- [Number](#number)
- [Switch](#switch)
-## Configuration
+{% include integrations/config_flow.md %}
-To enable it, add the following to your `configuration.yaml` file:
+## Configuration Options
-```yaml
-# Example configuration.yaml entry
-rainbird:
- host: IP_ADDRESS_OF_MODULE
- password: YOUR_PASSWORD
- trigger_time: 360
-
-```
-
-{% configuration %}
-host:
- description: IP Address of the Module
- required: true
- type: string
-password:
- description: The password for accessing the module.
- required: true
- type: string
-trigger_time:
- description: Irrigation time. The time will be rounded down to whole minutes.
- required: true
- type: time
-zones:
- description: Dictionary of zone configurations
- required: false
- type: map
- keys:
- ZONE_NUMBER:
- description: Zone ID
- type: map
- keys:
- friendly_name:
- description: Friendly name to see in GUI
- required: false
- type: string
- trigger_time:
- description: Irrigation time. Seconds are ignored.
- required: false
- type: time
-{% endconfiguration %}
-
-
-More complex configuration using all possible features could look like this example:
-```yaml
-# Example configuration.yaml entry
-rainbird:
- - host: IP_ADDRESS_OF_MODULE
- password: YOUR_PASSWORD
- trigger_time:
- minutes: 6
- zones:
- 1:
- friendly_name: My zone 1
- trigger_time:
- minutes: 6
- 2:
- friendly_name: My zone 2
- trigger_time:
- minutes: 2
- - host: IP_ADDRESS_OF_ANOTHER_MODULE
- password: YOUR_ANOTHER_PASSWORD
- trigger_time: 0:06
- zones:
- 1:
- friendly_name: My zone 1
- trigger_time: 0:06
- 3:
- friendly_name: My zone 3
- trigger_time: 0:05
-```
-
-Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active).
-
-
-## Sensor
-
-This `rainbird` sensor allows interacting with [LNK WiFi](https://www.rainbird.com/products/lnk-wifi-module) module of the Rain Bird Irrigation system in Home Assistant.
-
-The integration adds `rainsensor` and `raindelay` sensors and their `binary_sensor` alternatives.
+The integration has a configuration option to change the default amount of time that the irrigation
+will run when turning on a zone switch (default is 6 minutes). This can be overridden with a service call (see below).
-## Switch
+## Binary Sensor
+
+The `rainsensor` sensor will tell if you if the device has detected rain.
+
+## Number
-This `rainbird` switch platform allows interacting with [LNK WiFi](https://www.rainbird.com/products/lnk-wifi-module) module of the Rain Bird Irrigation system in Home Assistant.
+The Rain Delay Number Entity lets you set and view the number of days, if any, the automatic irrigation schedule has been delayed.
+
+## Switch
Switches are automatically added for all available zones of configured controllers.
## Services
-The Rain Bird switch platform exposes a service to start a single irrigation for a given duration.
+The integration exposes services to give additional control over a Rain Bird device.
+
+### `rainbird.start_irrigation`
+
+Start a Rain Bird zone for a set number of minutes. This service accepts a Rain Bird sprinkler
+zone switch entity and allows a custom duration unlike the switch.
-| Service | Description |
-| ------- | ----------- |
-| rainbird.start_irrigation | Set a duration state attribute for a switch and turn the irrigation on.|
-| rainbird.set_rain_delay | Set how long automatic irrigation is turned off.|
+| Service Data Attribute | Optional | Description |
+| ---------------------- | -------- | ----------------------------------------------------- |
+| `entity_id` | no | The Rain Bird Sprinkler zone switch to turn on. |
+| `duration` | no | Number of minutes for this zone to be turned on. |
-The service can be used as part of an automation script. For example:
```yaml
# Example configuration.yaml automation entry
@@ -136,6 +72,6 @@ automation:
action:
- service: rainbird.start_irrigation
data:
- entity_id: switch.sprinkler_1
+ entity_id: switch.rain_bird_sprinkler_1
duration: 5
-```
+```
\ No newline at end of file
diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown
index e4f5194b8de2..ad999774d78e 100644
--- a/source/_integrations/recollect_waste.markdown
+++ b/source/_integrations/recollect_waste.markdown
@@ -10,12 +10,13 @@ ha_codeowners:
- '@bachya'
ha_config_flow: true
ha_platforms:
+ - calendar
- diagnostics
- sensor
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/).
+The `recollect_waste` integration allows you to track the next scheduled waste pickup and what type of waste from [ReCollect Waste](https://recollect.net/waste-haulers/).
To use this integration, you must know both your ReCollect Place and Service IDs. In general, cities/municipalities that utilize ReCollect will give you a way to subscribe to a calendar with pickup dates. If you examine the iCal URL for this calendar, the Place and Service IDs are embedded in it:
diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown
index 11c335cc4587..a6bc6c19cc2a 100644
--- a/source/_integrations/recorder.markdown
+++ b/source/_integrations/recorder.markdown
@@ -75,9 +75,9 @@ recorder:
default: 10
type: integer
commit_interval:
- description: How often (in seconds) the events and state changes are committed to the database. The default of `1` allows events to be committed almost right away without trashing the disk when an event storm happens. Increasing this will reduce disk I/O and may prolong disk (SD card) lifetime with the trade-off being that the logbook and history will lag. If this is set to `0` (zero), commit are made as soon as possible after an event is processed.
+ description: How often (in seconds) the events and state changes are committed to the database. The default of `5` allows events to be committed almost right away without trashing the disk when an event storm happens. Increasing this will reduce disk I/O and may prolong disk (SD card) lifetime with the trade-off being that the logbook and history will lag. If this is set to `0` (zero), commit are made as soon as possible after an event is processed.
required: false
- default: 1
+ default: 5
type: integer
exclude:
description: Configure which integrations should be excluded from recordings. ([Configure Filter](#configure-filter))
diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown
index 8cabf016667a..d83638a30761 100644
--- a/source/_integrations/renault.markdown
+++ b/source/_integrations/renault.markdown
@@ -13,6 +13,7 @@ ha_config_flow: true
ha_codeowners:
- '@epenet'
ha_domain: renault
+ha_quality_scale: platinum
ha_platforms:
- binary_sensor
- button
@@ -88,11 +89,3 @@ Notes:
},
]
```
-
-### Service `renault.charge_start`
-
-Start charge on vehicle.
-
- | Service data attribute | Required | Description |
- | ---------------------- | -------- | ----------- |
- | `vehicle`| yes | device_id of the vehicle |
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index 5eebafa85070..2305d9222958 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -7,7 +7,7 @@ ha_iot_class: Local Polling
ha_release: 2023.1
ha_domain: reolink
ha_codeowners:
- - '@starkillerOG'
+ - "@starkillerOG"
ha_config_flow: true
ha_platforms:
- Camera
@@ -23,14 +23,35 @@ A Reolink user account with admin privileges is needed for the proper operation
{% include integrations/option_flow.md %}
{% configuration_basic %}
Protocol:
- description: Switch between RTSP or RTMP streaming protocol.
+ description: Switch between RTSP, RTMP or FLV streaming protocol.
{% endconfiguration_basic %}
## Camera streams
This integration creates a few camera entities, one for each stream type with different resolutions: Main, Sub, Ext, and Snapshots.
The Sub stream camera entity is enabled by default; the other streams are disabled by default.
-The snapshots stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the hi-res RTMP/RTSP video stream has too much lag.
+The Images stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the RTMP/RTSP/FLV video stream has too much lag.
+
+## Binary sensors
+
+Depending on the supported features of the camera binary sensors are added for:
+
+- Motion detection
+- Doorbell presses
+- AI person detection
+- AI vehicle detection
+- AI pet detection
+- AI face detection
+
+These sensors are polled every 60 seconds and receive ONVIF push events for immediate updates.
+Not all camera models generate ONVIF push events for all event types, some binary sensors might, therefore, only be polled.
+
+## Number entities
+
+Depending on the supported features of the camera number entities are added for:
+
+- Optical zoom control
+- Focus control
## Tested models
diff --git a/source/_integrations/ruuvi_gateway.markdown b/source/_integrations/ruuvi_gateway.markdown
new file mode 100644
index 000000000000..546f6eb7ef37
--- /dev/null
+++ b/source/_integrations/ruuvi_gateway.markdown
@@ -0,0 +1,31 @@
+---
+title: Ruuvi Gateway
+description: Support for Ruuvi Gateway devices acting as BLE remote scanners.
+ha_category:
+ - Sensor
+ha_release: '2023.2'
+ha_iot_class: Local Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@akx'
+ha_domain: ruuvi_gateway
+ha_dhcp: true
+ha_integration_type: integration
+---
+
+Integrates [Ruuvi Gateway](https://ruuvi.com/gateway/) devices as
+polling BLE remote scanners [via the `/history` endpoint][poll].
+
+## Setup
+
+Make sure to [enable Bearer Token authentication][poll] on the Ruuvi Gateway device
+(and take note of the token).
+
+You may also wish to enable scanning for _all_ BLE beacons (not just RuuviTags);
+be sure to set the "Use Ruuvi Cloud or/and a custom server and configure more settings"
+option on the Cloud Options setup page, and when you get to the "Bluetooth Scanning" page,
+select "All (including third party beacons)".
+
+{% include integrations/config_flow.md %}
+
+[poll]: https://docs.ruuvi.com/gw-examples/polling-mode
diff --git a/source/_integrations/rympro.markdown b/source/_integrations/rympro.markdown
new file mode 100644
index 000000000000..3e53b11ca292
--- /dev/null
+++ b/source/_integrations/rympro.markdown
@@ -0,0 +1,23 @@
+---
+title: Read Your Meter Pro
+description: Instructions on how to integrate water meters through Read Your Meter Pro.
+ha_category:
+ - Sensor
+ha_release: '2023.2'
+ha_iot_class: Cloud Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@OnFreund'
+ha_domain: rympro
+ha_platforms:
+ - sensor
+ha_integration_type: integration
+---
+
+This integration connects with a [Read Your Meter Pro](https://rym-pro.com/) account to get water meter reads into Home Assistant.
+
+{% include integrations/config_flow.md %}
+
+## Supported Platforms:
+
+- [Sensor](/integrations/sensor/)
diff --git a/source/_integrations/select.markdown b/source/_integrations/select.markdown
index 16af11e944e3..566ee76dccf8 100644
--- a/source/_integrations/select.markdown
+++ b/source/_integrations/select.markdown
@@ -15,10 +15,127 @@ Keeps track on `select` entities in your environment, their state, and allows
you to control them. This integration allows other integrations to offer
a limited set of selectable options for the entity.
-### Services
+## Services
-The Select entities registers the following services:
+The select entity exposes additional to control the entity in, for example,
+automation or scripts. These service can be created via the UI, but are
+also available in YAML (for which examples are provided below).
-| Service | Data | Description |
-| ------- | ---- | ----------- |
-| `select_option` | `option`
`entity_id(s)`
`area_id(s)` | Set the current select option of specific `select` entities
+### Service `select.select_first`
+
+The {% my developer_call_service service="select.select_first" %} service
+changes the selected option of the select entity to the first option in the
+list of options available.
+
+This service does not have additional options.
+
+ {% my developer_call_service badge service="select.select_first" %}
+
+An example in YAML:
+
+```yaml
+service: select.select_first
+target:
+ entity_id: select.my_entity
+```
+
+### Service `select.select_last`
+
+The {% my developer_call_service service="select.select_last" %} service changes
+the selected option of the select entity to the last option in the list of
+options available.
+
+This service does not have additional options.
+
+{% my developer_call_service badge service="select.select_last" %}
+
+An example in YAML:
+
+```yaml
+service: select.select_last
+target:
+ entity_id: select.my_entity
+```
+
+### Service `select.select_next`
+
+The {% my developer_call_service service="select.select_next" %} service changes
+the selected option of the select entity to the next option in the list of
+options available. If the current select option is unknown, the first option
+in the list is selected instead.
+
+In case the current select option is the last option in the list, it will by
+default, cycle back the first option and select that one instead. This cycle
+behavior can be disabled by setting the `cycle` option to `false` in the
+service call data.
+
+{% my developer_call_service badge service="select.select_next" %}
+
+Examples in YAML:
+
+```yaml
+service: select.select_next
+target:
+ entity_id: select.my_entity
+```
+
+```yaml
+# Disable cycling back to the first option
+service: select.select_next
+target:
+ entity_id: select.my_entity
+data:
+ cycle: false
+```
+
+### Service `select.select_option`
+
+The {% my developer_call_service service="select.select_option" %} service
+changes the selected option to a specific desired option provided in the
+service call using the required `option` service call data.
+
+The service call wil not succeed if the selected option is not available in
+the list of options for the targeted entity.
+
+{% my developer_call_service badge service="select.select_option" %}
+
+An example in YAML:
+
+```yaml
+service: select.select_option
+target:
+ entity_id: select.my_entity
+data:
+ option: "example_option"
+```
+
+### Service `select.select_previous`
+
+The {% my developer_call_service service="select.select_previous" %} service
+changes the selected option of the select entity to the previous option in the
+list of options available. If the current select option is unknown, the
+last option in the list is selected instead.
+
+In case the current select option is the first option in the list, it will by
+default, cycle back the last option and select that one instead. This cycle
+behavior can be disabled by setting the `cycle` option to `false` in the
+service call data.
+
+{% my developer_call_service badge service="select.select_previous" %}
+
+Examples in YAML:
+
+```yaml
+service: select.select_previous
+target:
+ entity_id: select.my_entity
+```
+
+```yaml
+# Disable cycling back to the last option
+service: select.select_previous
+target:
+ entity_id: select.my_entity
+data:
+ cycle: false
+```
diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown
index 2335a91ea447..4b7a037f542a 100644
--- a/source/_integrations/sensor.markdown
+++ b/source/_integrations/sensor.markdown
@@ -7,11 +7,11 @@ ha_release: 0.7
ha_quality_scale: internal
ha_domain: sensor
ha_codeowners:
- - '@home-assistant/core'
+ - "@home-assistant/core"
ha_integration_type: entity
---
-Sensors are a basic platform component in Home Assistant. They monitor the states and conditions of a variety of entities. An entity can be many things. This can include a physical device like a motion sensor that reports the battery level, a web service that retrieves the weather temperature, a built-in function that calculates the sun's elevation relative to your GPS position, or even a custom sensor you may have created to report the free space on your laptop. These are all *things* reporting different types of information.
+Sensors are a basic platform component in Home Assistant. They monitor the states and conditions of a variety of entities. An entity can be many things. This can include a physical device like a motion sensor that reports the battery level, a web service that retrieves the weather temperature, a built-in function that calculates the sun's elevation relative to your GPS position, or even a custom sensor you may have created to report the free space on your laptop. These are all _things_ reporting different types of information.
Some of these sensors are built-in to Home Assistant, some are created automatically when you add an integration (see this [list](/integrations/#sensor)), and some can be created manually. The [Statistics](/integrations/statistics) and [Template](/integrations/template) sensors are two examples of the last case.
@@ -25,16 +25,16 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, inHg, kPa, mbar, Pa or psi
- **battery**: Percentage of battery that is left in %
- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke) in ppm
-- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) in ppm
+- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) in ppm
- **current**: Current in A, mA
- **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s or GiB/s
- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB or YiB
- **date**: Date string (ISO 8601)
-- **distance**: Generic distance in km, m, cm, mm, mi, yd or in
-- **duration**: Duration in d, h, min or s
-- **energy**: Energy in Wh, kWh or MWh
+- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in
+- **duration**: Duration in d, h, min, or s
+- **energy**: Energy in Wh, kWh, MWh, MJ, or GJ
- **enum**: Has a limited set of (non-numeric) states
-- **frequency**: Frequency in Hz, kHz, MHz or GHz
+- **frequency**: Frequency in Hz, kHz, MHz, or GHz
- **gas**: Gasvolume in m³, ft³ or CCF
- **humidity**: Percentage of humidity in the air in %
- **illuminance**: The current light level in lx
@@ -58,14 +58,14 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **sound_pressure**: Sound pressure in dB or dBA
- **speed**: Generic speed in ft/s, in/d, in/h, km/h, kn, m/s, mph or mm/d
- **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³
-- **temperature**: Temperature in °C or °F
+- **temperature**: Temperature in °C, °F or K
- **timestamp**: Datetime object or timestamp string (ISO 8601)
- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³
- **voltage**: Voltage in V, mV
-- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³ or CCF
-- **water**: Water consumption in L, gal, m³, ft³ or CCF
-- **weight**: Generic mass in kg, g, mg, µg, oz, lb or st
-- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s or mph
+- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
+- **water**: Water consumption in L, gal, m³, ft³, or CCF
+- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st
+- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index 7ab82ff789aa..34dc163add2e 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -170,6 +170,10 @@ payload_not_available:
required: false
type: string
default: offline
+suggested_display_precision:
+ description: The number of decimals which should be used in the sensor's state after rounding.
+ required: false
+ type: integer
qos:
description: The maximum QoS level of the state topic.
required: false
@@ -323,6 +327,7 @@ mqtt:
sensor:
- name: "Temperature"
state_topic: "office/sensor1"
+ suggested_display_precision: 1
unit_of_measurement: "°C"
value_template: "{{ value_json.temperature }}"
- name: "Humidity"
diff --git a/source/_integrations/sfr_box.markdown b/source/_integrations/sfr_box.markdown
new file mode 100644
index 000000000000..4d3c46af7cfa
--- /dev/null
+++ b/source/_integrations/sfr_box.markdown
@@ -0,0 +1,27 @@
+---
+title: SFR Box
+description: Instructions on how to integrate SFR Box into Home Assistant.
+ha_category:
+ - Sensor
+ha_release: 2023.2
+ha_iot_class: Local Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@epenet'
+ha_domain: sfr_box
+ha_platforms:
+ - binary_sensor
+ - button
+ - sensor
+ha_integration_type: device
+---
+
+The SFR Box integration offers integration with the **SFR** broadband router.
+
+This integration provides the following platforms:
+
+- Binary Sensors - such as ADSL status.
+- Buttons - such as reboot.
+- Sensors - such as ADSL line status, attenuation, noise and data rate.
+
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown
index 9133d54f53c3..d8842a335744 100644
--- a/source/_integrations/shelly.markdown
+++ b/source/_integrations/shelly.markdown
@@ -193,7 +193,7 @@ You can also create automations using YAML, for example:
| `SL` | `single_long` |
| `LS` | `long_single` |
-Generation 2 devices use the values `btn_down`, `btn_up`, `single_push`, `double_push` and `long_push` as `click_type`.
+Generation 2 devices use the values `btn_down`, `btn_up`, `single_push`, `double_push`, `triple_push` and `long_push` as `click_type`.
diff --git a/source/_integrations/snooz.markdown b/source/_integrations/snooz.markdown
index 5751f78bb1d5..85f256e01f4c 100644
--- a/source/_integrations/snooz.markdown
+++ b/source/_integrations/snooz.markdown
@@ -49,3 +49,61 @@ 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.
+
+## Services
+
+### Service `snooz.transition_on`
+
+Transition the volume level over the specified duration. If the device is powered off, the transition will start at the lowest volume level.
+
+{% my developer_call_service badge service="snooz.transition_on" %}
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `duration` | yes | Number of seconds to transition to target volume.
+| `volume` | yes | Percentage volume level. If not specified, the volume on the device is used.
+
+#### Automation example
+
+```yaml
+automation:
+ - trigger:
+ - platform: time
+ at: "04:20:00"
+ action:
+ - service: snooz.transition_on
+ target:
+ entity_id: fan.snooz_abcd
+ data:
+ volume: 33
+ duration: 120
+```
+
+### Service `snooz.transition_off`
+
+Transition the volume level to the lowest setting over the specified duration, then power off the device.
+
+
+Once the transition completes, the volume level is restored to the value before the transition started.
+
+
+{% my developer_call_service badge service="snooz.transition_off" %}
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `duration` | yes | Number of seconds to complete the transition.
+
+#### Automation example
+
+```yaml
+automation:
+ - trigger:
+ - platform: time
+ at: "16:20:00"
+ action:
+ - service: snooz.transition_off
+ target:
+ entity_id: fan.snooz_abcd
+ data:
+ duration: 120
+```
diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown
index 59e453c34fd0..0da077cca3a4 100644
--- a/source/_integrations/sql.markdown
+++ b/source/_integrations/sql.markdown
@@ -19,8 +19,68 @@ ha_integration_type: integration
The `sql` sensor platform enables you to use values from an [SQL](https://en.wikipedia.org/wiki/SQL) database supported by the [sqlalchemy](https://www.sqlalchemy.org) library, to populate a sensor state (and attributes).
This can be used to present statistics about Home Assistant sensors if used with the `recorder` integration database. It can also be used with an external data source.
+**This integration can be configured using both config flow and by YAML.**
+
{% include integrations/config_flow.md %}
+## Configuration by YAML
+
+To configure this sensor, define the sensor connection variables and a list of queries to your `configuration.yaml` file. A sensor will be created for each query.
+
+To enable it, add the following lines to your `configuration.yaml` file (example by required fields):
+
+{% raw %}
+```yaml
+# Example configuration.yaml
+sql:
+ - name: Sun state
+ query: >
+ SELECT *
+ FROM states
+ WHERE entity_id = 'sun.sun'
+ ORDER BY state_id
+ DESC LIMIT 1;
+ column: "state"
+```
+{% endraw %}
+
+{% configuration %}
+sql:
+ description: Integration.
+ required: true
+ type: map
+ keys:
+ db_url:
+ description: The URL which points to your database. See [supported engines](/integrations/recorder/#custom-database-engines).
+ required: false
+ default: "Defaults to the default recorder `db_url` (not the current `db_url` of recorder)."
+ type: string
+ name:
+ description: The name of the sensor.
+ required: true
+ type: string
+ query:
+ description: An SQL QUERY string, should return 1 result at most.
+ required: true
+ type: string
+ column:
+ description: The field name to select.
+ required: true
+ type: string
+ unit_of_measurement:
+ description: Defines the units of measurement of the sensor, if any.
+ required: false
+ type: string
+ value_template:
+ description: Defines a template to extract a value from the payload.
+ required: false
+ type: template
+ unique_id:
+ description: Provide a unique id for this sensor.
+ required: false
+ type: string
+{% endconfiguration %}
+
## Information
See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration.
diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown
index 7130818db77d..6c019bf08968 100644
--- a/source/_integrations/ssdp.markdown
+++ b/source/_integrations/ssdp.markdown
@@ -47,6 +47,6 @@ The following integrations are automatically discovered by the SSDP integration:
- [Sony Songpal](/integrations/songpal/)
- [Synology DSM](/integrations/synology_dsm/)
- [Ubiquiti UniFi](/integrations/unifi/)
- - [Universal Devices ISY994](/integrations/isy994/)
+ - [Universal Devices ISY/IoX](/integrations/isy994/)
- [UPnP](/integrations/upnp/)
- [WiLight](/integrations/wilight/)
diff --git a/source/_integrations/starlink.markdown b/source/_integrations/starlink.markdown
new file mode 100644
index 000000000000..316b096c134d
--- /dev/null
+++ b/source/_integrations/starlink.markdown
@@ -0,0 +1,56 @@
+---
+title: Starlink
+description: Instructions on how to integrate Starlink into Home Assistant.
+ha_category:
+ - Sensor
+ - Binary Sensor
+ - Button
+ - Switch
+ - Network
+ha_release: 2023.2
+ha_iot_class: Local Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@boswelja'
+ha_domain: starlink
+ha_platforms:
+ - sensor
+ - binary_sensor
+ - switch
+ - button
+ha_integration_type: integration
+---
+
+The Starlink integration allows you to integrate your [Starlink](https://www.starlink.com/) into Home Assistant.
+
+**Important:** Your Starlink must **not** be in bypass mode. In this mode, the local API is unavailable, and this integration will not work.
+
+{% include integrations/config_flow.md %}
+
+### Sensor
+
+- Ping - The ping that Starlink has measured, in ms
+- Azimuth - The direction Dishy is facing in degrees
+- Elevation - Dishy's current elevation in degrees
+- Uplink throughput - The amount of data being uploaded through Starlink in Mbit/s
+- Downlink throughput - The amount of data being downloaded through Starlink in Mbit/s
+- Last boot time - The time Starlink was last turned on
+
+### Binary Sensor
+
+- Obstructed - Whether Dishy is currently obstructed
+- Roaming - Whether Starlink is "roaming". Roaming is an optional upgrade that allows you to use your Starlink outside of your home address. It is also known as "portability"
+- Heating - Whether Dishy is currently heating. This may be due to cold temperatures, or an attempt to thaw snow and ice
+- Idle - Whether Starlink is in an "idle" state to save power
+- Mast near vertical - Whether Dishy is mounted straight
+- Motors stuck - Whether Dishy is unable to move
+- Thermal throttle - Whether Starlink has reduced performance to avoid overheating
+- Unexpected location - Whether Starlink has detected operation outside of its designated area
+
+### Button
+
+- Reboot - Reboots your Starlink system
+
+### Switch
+
+- Stowed - Controls whether Dishy is stowed
diff --git a/source/_integrations/stookwijzer.markdown b/source/_integrations/stookwijzer.markdown
new file mode 100644
index 000000000000..22a02798f684
--- /dev/null
+++ b/source/_integrations/stookwijzer.markdown
@@ -0,0 +1,21 @@
+---
+title: Stookwijzer
+description: Instructions on how to use Stookwijzer data within Home Assistant
+ha_category:
+ - Sensor
+ - Environment
+ha_release: 2023.2
+ha_iot_class: Cloud Polling
+ha_codeowners:
+ - '@fwestenberg'
+ha_domain: stookwijzer
+ha_config_flow: true
+ha_platforms:
+ - sensor
+ - diagnostics
+ha_integration_type: service
+---
+
+The Stookwijzer integration queries the [Stookwijzer](https://www.stookwijzer.nu) API for windspeed and gets the air quality index from [Luchtmeetnet](https://www.luchtmeetnet.nl). Using these parameters, Stookwijzer advises people not to burn pallets or wood, or to use the barbecue. This can prevent health problems for people in the area.
+
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown
index 8087e3519c1f..3ea76769f549 100644
--- a/source/_integrations/switchbot.markdown
+++ b/source/_integrations/switchbot.markdown
@@ -61,6 +61,7 @@ Please note, device names configured in the SwitchBot app are not transferred in
- Motion Sensor (WoPresence)
- Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401)
- Lock (WoLock)
+- Blind Tilt (WoBlindTilt)
## SwitchBot Entity
@@ -107,6 +108,56 @@ Encryption key:
For instructions on how to obtain the locks encryption key, see README in [PySwitchbot](https://github.com/Danielhiversen/pySwitchbot#obtaining-locks-encryption-key) project.
+## SwitchBot Blind Tilt
+
+The blind tilt is exposed as a cover entity with control of the tilt position only:
+
+| Tilt Position | Blind State |
+| ------------- | ----------- |
+| 100% | Closed Up |
+| 50% | Fully Open |
+| 0% | Closed Down |
+
+The close button will close the blinds to the closest closed position (either 0% or 100%), and defaults to closing down if the blinds are fully open. Because Home Assistant believes 100% is open, the default cards will disable the open button when the tilt is at 100%, but the service call will still work and open the blind to 50%.
+
+### Simple cover template entity
+
+Some integrations may expose your SwitchBot Blind Tilt to other services which expect that 100% is open and 0% is fully closed. Using a [Cover Template](/integrations/cover.template), a proxy entity can be created which will be open at 100% and closed at 0%. This template entity is limited to closing in one direction.
+
+{% raw %}
+
+```yaml
+# Example configuration.yaml entry
+cover:
+ - platform: template
+ covers:
+ example_blinds_simple:
+ device_class: blind
+ friendly_name: Example Blinds (Simple Down)
+ open_cover:
+ service: cover.set_cover_tilt_position
+ data:
+ tilt_position: 50
+ target:
+ entity_id: cover.example_blinds
+ close_cover:
+ service: cover.set_cover_tilt_position
+ data:
+ tilt_position: 0
+ target:
+ entity_id: cover.example_blinds
+ position_template: >
+ {{ int(states.cover.example_blinds.attributes.current_tilt_position)*2 }}
+ set_cover_position:
+ service: cover.set_cover_tilt_position
+ data:
+ tilt_position: "{{position/2}}"
+ target:
+ entity_id: cover.example_blinds
+```
+
+{% endraw %}
+
## Error codes and troubleshooting
The SwitchBot integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown
new file mode 100644
index 000000000000..c7c54743b437
--- /dev/null
+++ b/source/_integrations/thread.markdown
@@ -0,0 +1,16 @@
+---
+title: Thread
+ha_category:
+ - Other
+ha_release: 2023.2
+ha_quality_scale: internal
+ha_codeowners:
+ - '@home-assistant/core'
+ha_domain: thread
+ha_iot_class: Local Polling
+ha_platforms:
+ha_integration_type: integration
+---
+
+The Thread integration is currently a placheolder, but will manage Thread network credentials in a future release.
+The integration is automatically setup when the "Silicon Labs Multiprotocol" add-on is installed.
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index decb26c26e25..93c21fd747b4 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -156,6 +156,7 @@ The light strips allow setting a sequence effect.
| `segments` | List of segments (0 for all) |
| `brightness` | Initial brightness |
| `duration` | Duration |
+| `repeat_times` | Repetitions (0 for continuous) |
| `transition` | Transition |
| `spread` | Speed of spread |
| `direction` | Direction |
diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown
index a30e68c6b8a7..28a1935d284f 100644
--- a/source/_integrations/venstar.markdown
+++ b/source/_integrations/venstar.markdown
@@ -39,6 +39,7 @@ Currently supported functionality:
- Remote temperature sensors
- Thermostat alerts (Filter replacement/etc)
- Reading IAQ and CO2 levels (on supported devices, e.g. T3950, only)
+- Reading the current schedule state (morning/day/evening/night/inactive)
The following values are supported for the preset_mode state attribute:
diff --git a/source/_integrations/whirlpool.markdown b/source/_integrations/whirlpool.markdown
index ef781b8a7517..a2b909500501 100644
--- a/source/_integrations/whirlpool.markdown
+++ b/source/_integrations/whirlpool.markdown
@@ -1,9 +1,10 @@
---
-title: Whirlpool Sixth Sense
-description: Instructions on how to integrate Whirlpool 6th Sense Live appliances with Home Assistant.
+title: Whirlpool Appliances
+description: Instructions on how to integrate Whirlpool appliances with Home Assistant.
ha_category:
- Climate
-ha_release: '2021.10'
+ - Sensor
+ha_release: '2022.10'
ha_iot_class: Cloud Push
ha_config_flow: true
ha_codeowners:
@@ -11,24 +12,41 @@ ha_codeowners:
ha_domain: whirlpool
ha_platforms:
- climate
+ - sensor
ha_integration_type: integration
---
-The `whirlpool` integration integrates Whirlpool 6th Sense Live appliances into Home Assistant.
+The `whirlpool` integration integrates Whirlpool 6th Sense Live, and Whirlpool/Maytag Washer and Dryer appliances into Home Assistant.
There is currently support for the following device types within Home Assistant:
+- [Supported hardware](#supported-hardware)
+- [Sensor](#sensor)
- [Climate](#climate)
## Supported hardware
The following air conditioners are confirmed to be working, but other models that use the 6th Sense Live application may also work:
+Climate:
+
- SPIW309A2WF/SPIW312A2WF
- SPIW409A2WF
+Washer:
+
+- WTW6120HW2
+
+Dryer:
+
+- Not confirmed
+
{% include integrations/config_flow.md %}
+## Sensor
+
+The `whirlpool` sensor platform integrates Whirlpool Washer and Dryer systems into Home Assistant, allowing views of the machine state, time remaining and the "wash & go" tank fill status as sensors for each device.
+
## Climate
The `whirlpool` climate platform integrates Whirlpool air conditioning systems into Home Assistant, allowing control of the appliance trough the user interface. The current inside temperature is also displayed on the thermostat card.
diff --git a/source/_integrations/zeversolar.markdown b/source/_integrations/zeversolar.markdown
new file mode 100644
index 000000000000..b853e562c074
--- /dev/null
+++ b/source/_integrations/zeversolar.markdown
@@ -0,0 +1,34 @@
+---
+title: Zeversolar
+description: Instructions on how to configure the Zeversolar integration within Home Assistant
+ha_category:
+ - Environment
+ha_release: 2023.2
+ha_iot_class: Local Polling
+ha_domain: zeversolar
+ha_platforms:
+ - sensor
+ha_config_flow: true
+ha_integration_type: integration
+ha_codeowners:
+ - '@kvanzuijlen'
+---
+
+The Zeversolar integration uses the local device IP to get information like the current power and
+today's total energy production.
+This integration allows you to collect and save data providig a historical overview of your Zeversolar
+production.
+
+## Prerequisites
+
+You need a Zeversolar inverter connected to your solar panels and Wi-Fi. Furthermore, you need to
+get the Zeversolar IP address.
+
+{% include integrations/config_flow.md %}
+
+## Sensor Types
+
+When configured, the integration will create two sensors for each configured inverter:
+
+- Energy today, in `kWh` (Kilowatt-hour)
+- Current power, in `W` (Watts)
diff --git a/source/_redirects b/source/_redirects
index a2e7650ce1b4..bb2f58a3d201 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -195,7 +195,6 @@
/integrations/input_slider /integrations/input_number
/integrations/leviton /integrations/leviton_z_wave
/integrations/light.switch /integrations/switch_as_x
-/integrations/openalpr /integrations/openalpr_local
/integrations/pca /integrations/elv
/integrations/pollen /integrations/iqvia
/integrations/polling /integrations/telegram_polling
@@ -420,6 +419,7 @@
# Removed integrations
/integrations/alarmdotcom /more-info/removed-integration 301
+/integrations/almond /more-info/removed-integration 301
/integrations/ambee /more-info/removed-integration 301
/integrations/apns /more-info/removed-integration 301
/integrations/arlo /more-info/removed-integration 301
@@ -479,6 +479,8 @@
/integrations/nello /more-info/removed-integration 301
/integrations/nma /more-info/removed-integration 301
/integrations/nuimo_controller /more-info/removed-integration 301
+/integrations/openalpr /more-info/removed-integration 301
+/integrations/openalpr_local /more-info/removed-integration 301
/integrations/orangepi_gpio /more-info/removed-integration 301
/integrations/ozw /more-info/removed-integration 301
/integrations/pcal9535a /more-info/removed-integration 301
diff --git a/source/dashboards/header-footer.markdown b/source/dashboards/header-footer.markdown
index 20fc36f33f0c..5e25b4241755 100644
--- a/source/dashboards/header-footer.markdown
+++ b/source/dashboards/header-footer.markdown
@@ -28,6 +28,10 @@ image:
required: true
description: The URL of an image.
type: string
+alt_text:
+ required: false
+ description: Alternative text for the image. This is necessary for users of assistive technology. The [W3C images tutorial](https://www.w3.org/WAI/tutorials/images/) provides simple guidance for writing alternative text.
+ type: string
tap_action:
required: false
description: Action taken on card tap. See [action documentation](/dashboards/actions/#tap-action).
diff --git a/source/docs/assist/aliases.markdown b/source/docs/assist/aliases.markdown
new file mode 100644
index 000000000000..75dcadce3587
--- /dev/null
+++ b/source/docs/assist/aliases.markdown
@@ -0,0 +1,9 @@
+---
+title: "Assist - Entity Aliases"
+---
+
+Assist will use the names of your entities, as well as any aliases you've configured.
+
+
+
+By adding aliases in your native language, you can speak to Home Assistant with the language configured on your [Android watch](/docs/assist/android/) or [Apple device](/docs/assist/apple/).
diff --git a/source/docs/assist/android.markdown b/source/docs/assist/android.markdown
new file mode 100644
index 000000000000..8b622444eabd
--- /dev/null
+++ b/source/docs/assist/android.markdown
@@ -0,0 +1,28 @@
+---
+title: "Assist on Android."
+---
+
+Assist is available on WearOS using the [Home Assistant Companion App](https://companion.home-assistant.io/) and "Assist" tile.
+
+
+
+## Installation
+
+After [installing the companion app](https://companion.home-assistant.io/docs/getting_started/) and connecting it to your Home Assistant, visit the Android WatchOS app and click "Add tile" inside the Tiles area. Select the "Assist" tile to add it to your watch:
+
+
+
+
+## Usage
+
+Swipe left on your watch until the "Assist" button is visible:
+
+
+
+After pressing "Assist", wait for "Speak Now" to be displayed:
+
+
+
+Speak your command, then press the "play" icon on the right to send the command to Home Assistant:
+
+
diff --git a/source/docs/assist/apple.markdown b/source/docs/assist/apple.markdown
new file mode 100644
index 000000000000..2ee7c69cc5df
--- /dev/null
+++ b/source/docs/assist/apple.markdown
@@ -0,0 +1,69 @@
+---
+title: "Assist on Apple devices"
+---
+
+_The Assist shortcut will be available in the Mac and iOS beta channel today and will be part of the next release for iOS and Mac._
+
+Assist is integrated into Apple devices using the [Shortcuts app](https://support.apple.com/guide/shortcuts/welcome/ios) that is available on all Apple devices. Assist can be used in the following ways on Apple devices:
+
+- Activated by Siri by saying the shortcut name "Hey Siri, Assist"
+- Added to your iPhone home screen
+- Pinned to your Mac menu bar
+- Activated via a keyboard shortcut on your Mac
+- Added as an Apple Watch complication
+
+
+
+## Installation
+
+To get started make sure you're running the latest version of the [Home Assistant Companion app](https://apps.apple.com/us/app/home-assistant/id1099568401?itsct=apps_box_badge&itscg=30200) and have updated your Apple devices. Then download the two shortcuts and open them to import them:
+
+- [Assist shortcut](https://www.icloud.com/shortcuts/4172210db1d74599bf9ae4f9e1e3d6ed)
+- [Assist Button shortcut](https://www.icloud.com/shortcuts/73ebb68ca1a24ae1811b7d6971203334)
+
+
+
+There are two versions of the shortcut. The normal shortcut works better with Siri while the Button shortcut has the ability to use speech-to-text when triggered outside of Siri and can customize the input language (instead of relying on the OS language)
+
+[_Last updated: Jan 26, 2022_](#changelog)
+
+### Adjusting the language
+
+Shortcuts triggerd via Siri will always use the same language as Siri is set to. The Assist Button shortcut is meant to be manually triggered and can be configured for any language.
+
+Open the shortcuts app, and edit the Button Assist shortcut. The text in quotes will be shown in the language of your device.
+
+- Use the arrow to expand the _"Dictate text"_ action options, and select your language
+- Use the arrow to expand the _"Assist with `Provided Input`"_ options, and select your language.
+
+
+You can import the button shortcut multiple times to create versions for different languages, when asked if you would like to replace your Shortcut, choose "Keep Both".
+
+
+## Multiple servers
+
+The Assist shortcut works also if you have configured multiple Home Assistant servers. By default it will prompt you to pick the server to sent the command too. This is not very hands-off, and so you can update the shortcut to point at a specific server. You will need to import the shortcuts multiple times, once for each server.
+
+Open the shortcuts app and edit each Assist shortcut. The text in quotes will be shown in the language of your device.
+
+- Use the arrow to expand the _"Assist with `Provided Input`"_ action, and select your Home Assistant server.
+
+## Customizing the Siri experience
+
+Siri allows activating shortcuts by their name. If you change the name of the "Assist" shortcut, you will also have to refer to it by its new name: "Hey Siri, my new name". Be aware that Siri can get confused and might not work if your shortcut name overlaps with actual Siri commands.
+
+It is possible to change the text that Siri says when activating the Assist shortcut. Open the shortcuts app and edit each your Assist shortcut. The text in quotes will be shown in the language of your device.
+
+- Find _"Ask for `Text`"_ and tap on _`How can I assist?`_ and change it to your desired prompt.
+
+You can also use the share action to [add a Shortcut to your Home Screen](https://support.apple.com/guide/shortcuts/apd735880972/ios) or set an [Accessibility Shortcut](https://support.apple.com/en-gb/HT204390) to run this Shortcut when you triple-click the Side button.
+
+## Troubleshooting
+
+The latest version of Siri on the Apple Watch contains an annoying bug where it will not remember that the shortcut is allowed to talk to Home Assistant. This requires the user to tap or say "Allow" for every invocation of the Assist shortcut. The workaround is to remove the Home Assistant application from your watch, which will have the shortcut execute on your phone which does not have this problem. Removing the app prevents you from triggering actions via the Home Assistant interface for Apple Watch. It does not prevent you from adding shortcuts to trigger assist from a complication.
+
+## Changelog
+
+### Version 1 - Jan 26, 2022
+
+Initial release
diff --git a/source/docs/assist/builtin_sentences.markdown b/source/docs/assist/builtin_sentences.markdown
new file mode 100644
index 000000000000..41abf4245e7c
--- /dev/null
+++ b/source/docs/assist/builtin_sentences.markdown
@@ -0,0 +1,27 @@
+---
+title: "Assist - Default Sentences"
+---
+
+Home Assistant comes with built-in sentences [contributed by the community](https://github.com/home-assistant/intents/) for [dozens of languages](https://developers.home-assistant.io/docs/voice/intent-recognition/supported-languages).
+These sentences allow you to:
+
+* **Turn entities on and off**
+ * *"turn on the living room light"*
+ * *"turn off ceiling fan"*
+* **Open and close covers**
+ * *"Close the garage door"*
+ * *"Open kitchen window"*
+* **Set the brightness and color of lights**
+ * *"Change kitchen lights brightness to 50%"*
+ * *"Set bed light to green"*
+
+In addition to individual entities, commands can target **areas**:
+
+* *"turn on all lights in the living room"*
+* *"open windows in the kitchen"*
+* *"change kitchen brightness to 50%"*
+* *"set bedroom lights to green"*
+
+Entity [aliases](/docs/assist/aliases) are also matched so multiple names can be used, even in different languages.
+
+You can extend the built-in sentences or [add your own](/docs/assist/custom_sentences) to trigger any action in Home Assistant.
diff --git a/source/docs/assist/custom_sentences.markdown b/source/docs/assist/custom_sentences.markdown
new file mode 100644
index 000000000000..5c2e5112a921
--- /dev/null
+++ b/source/docs/assist/custom_sentences.markdown
@@ -0,0 +1,120 @@
+---
+title: "Assist - Custom Sentences"
+---
+
+You may add your own sentences to the intent recognizer by either extending an [existing intent](https://developers.home-assistant.io/docs/intent_builtin/) or creating a new one. You may also [customize responses](#customizing-responses) for existing intents.
+
+## In configuration.yaml
+
+Intents and sentences may be added in the [`conversation`](/integrations/conversation/) config in your `configuration.yaml` file:
+
+{% raw %}
+
+```yaml
+# Example configuration.yaml
+conversation:
+ intents:
+ HassTurnOn:
+ - "activate [the] {name}"
+```
+
+```yaml
+# Example configuration.yaml
+conversation:
+ intents:
+ HassTurnOn:
+ - "activate [the] {name}"
+```
+
+{% endraw %}
+
+This extends the default English sentences for the `HassTurnOn` intent, allowing you to say "activate the kitchen lights" as well as "turn on the kitchen lights".
+
+New intents can also be added, with their responses and actions defined using the [`intent_script`](/integrations/intent_script/) integration:
+
+{% raw %}
+
+```yaml
+# Example configuration.yaml
+conversation:
+ intents:
+ YearOfVoice:
+ - "how is the year of voice going"
+
+intent_script:
+ YearOfVoice:
+ speech:
+ text: "Great! We're at over 40 languages and counting."
+```
+
+{% endraw %}
+
+Besides a text response, `intent_script` can trigger any `action` available in Home Assistant, such as calling a service or firing an event.
+
+## In config directory
+
+More advanced customization can be done in Home Assistant's `config` directory. YAML files in `config/custom_sentences/en`, for example, will be loaded when English sentences (language code `en`) are requested.
+
+The following example creates a new `SetVolume` intent that changes the volume on one of two media players:
+
+{% raw %}
+
+```yaml
+# Example config/custom_sentences/en/media.yaml
+language: "en"
+intents:
+ SetVolume:
+ data:
+ - sentences:
+ - "(set|change) {media_player} volume to {volume} [percent]"
+ - "(set|change) [the] volume for {media_player} to {volume} [percent]"
+lists:
+ media_player:
+ values:
+ - in: "living room"
+ out: "media_player.living_room"
+ - in: "bedroom"
+ out: "media_player.bedroom"
+ volume:
+ range:
+ from: 0
+ to: 100
+```
+
+{% endraw %}
+
+As mentioned above, you can then use the `intent_script` integration to implement an action and provide a response for `SetVolume`:
+
+{% raw %}
+
+```yaml
+# Example configuration.yaml
+intent_script:
+ SetVolume:
+ action:
+ service: "media_player.volume_set"
+ data:
+ entity_id: "{{ media_player }}"
+ volume_level: "{{ volume / 100.0 }}"
+ speech:
+ text: "Volume changed to {{ volume }}"
+```
+
+{% endraw %}
+
+## Customizing Responses
+
+Responses for existing intents can be customized as well in `config/custom_sentences/
`:
+
+{% raw %}
+
+```yaml
+# Example config/custom_sentences/en/responses.yaml
+language: "en"
+responses:
+ intents:
+ HassTurnOn:
+ default: "I have turned on the {{ slots.name }}"
+```
+
+{% endraw %}
diff --git a/source/docs/assist/index.markdown b/source/docs/assist/index.markdown
new file mode 100644
index 000000000000..bfde547ee8c0
--- /dev/null
+++ b/source/docs/assist/index.markdown
@@ -0,0 +1,21 @@
+---
+title: Assist - Talking to Home Assistant
+---
+
+
+
+Assist is our feature to allow you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community. You can use the [built-in sentences](/docs/assist/builtin_sentences) to control entities and areas, or [create your own](/docs/assist/custom_sentences).
+
+[List of supported languages.](https://developers.home-assistant.io/docs/voice/intent-recognition/supported-languages)
+
+Assist is available to use on most platforms that can interface with Home Assistant. Look for the Assist icon
:
+
+- Inside the Home Assistant app in the top-right corner
+- On Android Watch using [Assist tile](/docs/assist/android)
+- On Apple devices via [Siri and Assist shortcuts](/docs/assist/apple)
+
+Did Assist not understand your sentence? [Contribute them.](https://developers.home-assistant.io/docs/voice/intent-recognition/)
+
+_Assist was introduced in Home Assistant 2023.2._
+
+
diff --git a/source/images/assist/android_tile.png b/source/images/assist/android_tile.png
new file mode 100644
index 000000000000..bcfced7ad913
Binary files /dev/null and b/source/images/assist/android_tile.png differ
diff --git a/source/images/assist/android_watch.png b/source/images/assist/android_watch.png
new file mode 100644
index 000000000000..ae93b94b8e21
Binary files /dev/null and b/source/images/assist/android_watch.png differ
diff --git a/source/images/assist/android_watch_1.png b/source/images/assist/android_watch_1.png
new file mode 100644
index 000000000000..9c921883a266
Binary files /dev/null and b/source/images/assist/android_watch_1.png differ
diff --git a/source/images/assist/android_watch_2.png b/source/images/assist/android_watch_2.png
new file mode 100644
index 000000000000..769bcc4c3622
Binary files /dev/null and b/source/images/assist/android_watch_2.png differ
diff --git a/source/images/assist/android_watch_3.png b/source/images/assist/android_watch_3.png
new file mode 100644
index 000000000000..7614b7ca75bc
Binary files /dev/null and b/source/images/assist/android_watch_3.png differ
diff --git a/source/images/assist/assist-logo.png b/source/images/assist/assist-logo.png
new file mode 100644
index 000000000000..b9717beb3355
Binary files /dev/null and b/source/images/assist/assist-logo.png differ
diff --git a/source/images/assist/ios-expanded-shortcut-action.jpeg b/source/images/assist/ios-expanded-shortcut-action.jpeg
new file mode 100644
index 000000000000..be98e8b1ff37
Binary files /dev/null and b/source/images/assist/ios-expanded-shortcut-action.jpeg differ
diff --git a/source/images/integrations/google_assistant_sdk/conversation.png b/source/images/integrations/google_assistant_sdk/conversation.png
new file mode 100644
index 000000000000..ee696e0533f2
Binary files /dev/null and b/source/images/integrations/google_assistant_sdk/conversation.png differ
diff --git a/source/images/screenshots/voice-commands.png b/source/images/screenshots/voice-commands.png
index 39a98deef7ed..cfed4415f2d1 100644
Binary files a/source/images/screenshots/voice-commands.png and b/source/images/screenshots/voice-commands.png differ