-
-Please note that some monitored conditions, such as `temperature_high` or `temperature_low`, may only work when setting the `forecast` attribute to at least `0` (current day).
-
-
-
-#### Time period dictionary example
-
-```yaml
-scan_interval:
- # At least one of these must be specified:
- days: 0
- hours: 0
- minutes: 3
- seconds: 30
- milliseconds: 0
-```
-
-#### Language options
-
-All language options are described in this table that you can use for the Dark Sky sensor.
-
-|Language|Variable Code|
-|---|---|
-|Arabic|`ar`|
-|Azerbaijani|`az`|
-|Belarusian|`be`|
-|Bulgarian|`bg`|
-|Bengali|`bn`|
-|Bosnian|`bs`|
-|Catalan|`ca`|
-|Czech|`cs`|
-|Danish|`da`|
-|German|`de`|
-|Greek|`el`|
-|English|`en`|
-|Esperanto|`eo`|
-|Spanish|`es`|
-|Estonian|`et`|
-|Finnish|`fi`|
-|French|`fr`|
-|Hebrew|`he`|
-|Hindi|`hi`|
-|Croatian|`hr`|
-|Hungarian|`hu`|
-|Indonesian|`id`|
-|Icelandic|`is`|
-|Italian|`it`|
-|Japanese|`ja`|
-|Georgian|`ka`|
-|Kannada|`kn`|
-|Korean|`ko`|
-|Cornish|`kw`|
-|Latvian|`lv`|
-|Malayam|`ml`|
-|Marathi|`mr`|
-|Norwegian Bokmål|`nb`|
-|Dutch|`nl`|
-|Punjabi|`pa`|
-|Polish|`pl`|
-|Portuguese|`pt`|
-|Romanian|`ro`|
-|Russian|`ru`|
-|Slovak|`sk`|
-|Slovenian|`sl`|
-|Serbian|`sr`|
-|Swedish|`sv`|
-|Tamil|`ta`|
-|Telugu|`te`|
-|Tetum|`tet`|
-|Turkish|`tr`|
-|Ukrainian|`uk`|
-|Urdu|`ur`|
-|Igpay Atinlay|`x-pig-latin`|
-|simplified Chinese|`zh`|
-|traditional Chinese|`zh-tw`|
-
-
-While the platform is called "darksky" the sensors will show up in Home Assistant as "dark_sky" (eg: sensor.dark_sky_summary).
-
-
-More details about the API are available in the [Dark Sky API documentation](https://darksky.net/dev/docs).
diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown
index 96330a9ea15d..89b415f9a99c 100644
--- a/source/_integrations/discovery.markdown
+++ b/source/_integrations/discovery.markdown
@@ -18,7 +18,6 @@ This integration is limited to detect:
* [Bluesound speakers](/integrations/bluesound)
* [Bose Soundtouch speakers](/integrations/soundtouch)
* [Enigma2 media player](/integrations/enigma2)
- * [Frontier Silicon internet radios](/integrations/frontier_silicon)
* [Linn / Openhome](/integrations/openhome)
* [SABnzbd downloader](/integrations/sabnzbd)
* [Yamaha media player](/integrations/yamaha)
@@ -49,7 +48,6 @@ Valid values for ignore are:
* `bluesound`: Bluesound speakers
* `bose_soundtouch`: Bose Soundtouch speakers
* `enigma2`: Enigma2 media players
- * `frontier_silicon`: Frontier Silicon internet radios
* `lg_smart_device`: LG Soundbars
* `openhome`: Linn / Openhome
* `sabnzbd`: SABnzbd downloader
diff --git a/source/_integrations/esera_onewire.markdown b/source/_integrations/esera_onewire.markdown
new file mode 100644
index 000000000000..15b6386ff039
--- /dev/null
+++ b/source/_integrations/esera_onewire.markdown
@@ -0,0 +1,23 @@
+---
+title: ESERA 1-Wire
+description: Instructions on how to integrate ESERA 1-Wire sensors into Home Assistant.
+ha_category:
+ - DIY
+ha_domain: esera_onewire
+ha_integration_type: virtual
+ha_supporting_domain: onewire
+ha_supporting_integration: 1-Wire
+ha_release: 0.12
+ha_codeowners:
+ - '@garbled1'
+ - '@epenet'
+ha_config_flow: true
+ha_platforms:
+ - binary_sensor
+ - diagnostics
+ - sensor
+ - switch
+ha_iot_class: Local Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown
index e8e4116d6440..5c084c1e21ec 100644
--- a/source/_integrations/filter.markdown
+++ b/source/_integrations/filter.markdown
@@ -115,6 +115,12 @@ filters:
default: positive infinity
{% endconfiguration %}
+
+
+When configuring a `window_size` that is not a time and with a value larger than the default of `1`, the database must examine nearly every stored state for that entity during Home Assistant startup. If you have modified the [Recorder `purge_keep_days`](/integrations/recorder/#purge_keep_days) value or have many states stored in the database for the filtered entity, this can cause your Home Assistant instance can to respond poorly during startup.
+
+
+
## Filters
### Low-pass
diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown
index d59f62da8fd9..4737f76ca9e4 100644
--- a/source/_integrations/fritzbox.markdown
+++ b/source/_integrations/fritzbox.markdown
@@ -53,7 +53,8 @@ Additionally, we also support to trigger smarthome templates.
- [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/)
- [FRITZ!DECT 500](https://en.avm.de/products/fritzdect/fritzdect-500/)
- [Eurotronic Comet DECT](https://eurotronic.org/produkte/dect-ule-heizkoerperthermostat/comet-dect/)
-- [Magenta SmartHome LED E27](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss)
+- [Magenta SmartHome LED E27 Color](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss)
+- Magenta SmartHome LED E27 warmwhite
- [Rademacher RolloTron DECT 1213](https://www.rademacher.de/shop/rollladen-sonnenschutz/elektrischer-gurtwickler/rollotron-dect-1213)
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown
index eed3d21811d5..dbc0c884a478 100644
--- a/source/_integrations/frontier_silicon.markdown
+++ b/source/_integrations/frontier_silicon.markdown
@@ -11,58 +11,37 @@ ha_platforms:
ha_integration_type: integration
ha_codeowners:
- '@wlcrs'
+ha_ssdp: true
+ha_config_flow: true
---
-This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the [UNDOK] app.
+This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the UNDOK app.
## Supported Models
+
+Frontier Silicon is used by many different brands of radio manufacturers.
+
+Supported devices include, but are not limited to:
+
* Hama: [IR50], [IR110], [DIR3110]
* Medion: [Medion Radios]
* Silvercrest: [SIRD 14 C2 (archived website)]
* Teufel: [Radio 3sixty (2019)]
+* Roberts: [Roberts Stream 94i]
* Some models from: Auna, Technisat, Revo, Pinell, Como Audio
-This integration was developed and tested with a Hama [DIR3110] and a Medion [MD 87466].
+This integration was developed and tested with a [Roberts Stream 94i].
-## Configuration
+If your device is supported by the UNDOK app, then it is also supported by this integration.
-Your Frontier Silicon based device should be automatically discovered by Home Assistant. The auto-discovery service assumes that the device uses the default PIN code: *1234*. If you have changed the PIN code, the auto-discovery will fail as Home Assistant will not be able to connect to the device. You can set the PIN code of your device (depending on manufacturer) under:
+## Prerequisites
-*MENU button > Main Menu > System setting > Network > NetRemote PIN setup*
-
-If your device was not automatically discovered or you have changed the PIN you can alternatively add the following to your `configuration.yaml` file:
+The integration supports automatic discovery of your Internet Radio. If you need to set up the device manually, please provide the device IP-address. Some models use a separate port (2244) for API access, this can be verified by visiting `http://[host]:[port]/device`.
-```yaml
-# Example configuration.yaml entry
-media_player:
- - platform: frontier_silicon
- host: IP_ADDRESS
-```
+The default PIN for Frontier Silicon-based devices is 1234. You can set the PIN code of your device (depending on manufacturer) under:
+*MENU button > Main Menu > System setting > Network > NetRemote PIN setup*
-{% configuration %}
-host:
- description: The host name or the IP address of the device.
- required: true
- default: 192.168.1.11
- type: string
-port:
- description: The port number of the device.
- required: false
- default: 80
- type: integer
-password:
- description: PIN code of the Internet Radio.
- required: false
- default: 1234
- type: string
-name:
- description: Friendly name of the Internet Radio. If present this will override the friendly name reported by the radio itself.
- required: false
- default: empty
- type: string
-{% endconfiguration %}
-
-Some models use a separate port (2244) for API access, this can be verified by visiting http://[host]:[port]/device.
+{% include integrations/config_flow.md %}
In case your device (friendly name) is called *badezimmer*, an example automation can look something like this:
@@ -81,6 +60,7 @@ action:
```
## Screenshots:
+
Overview DAB+ (Badezimmer) and Spotify (Küche):
-The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the Home Assistant integration polls the device state every 30 seconds or issues a command by creating a new session.
-*If you want to prevent Home Assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234*
+Some older devices may require setting up a session to process requests. This is automatically detected by the underlying library. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated.
+
+This renders the usage of [UNDOK] almost impossible for these older devices, as the Home Assistant integration polls the device state every 30 seconds or issues a command by creating a new session. In that case, you have to disable the integration if you want to use UNDOK.
@@ -113,7 +89,4 @@ The Frontier Silicon API does not provide a multi-user environment. There is alw
[MD 87466]: https://www.conrad.com/p/medion-p83302-md-87466-internet-kitchen-radio-dab-fm-aux-internet-radio-dlna-compatible-white-1434428
[Radio 3sixty (2019)]: https://teufel.de/radio-3sixty-2019-105437000
[SIRD 14 C2 (archived website)]: https://web.archive.org/web/20191011141311/https://www.silvercrest-multiroom.de/produkte/stereo-internet-radio/
-[fsapi]: https://github.com/zhelev/python-fsapi
-[UNDOK]: https://www.frontiersmart.com/product/undok/
-[flammy]: https://github.com/flammy/fsapi/
-[tiwillam]: https://github.com/tiwilliam/fsapi
+[Roberts Stream 94i]: https://www.robertsradio.com/en-gb/stream-94i
\ No newline at end of file
diff --git a/source/_integrations/google.markdown b/source/_integrations/google.markdown
index 17c0a7cbb138..a80711dcca36 100644
--- a/source/_integrations/google.markdown
+++ b/source/_integrations/google.markdown
@@ -146,6 +146,7 @@ A calendar `target` is selected with a [Target Selector](/docs/blueprint/selecto
| `start_date` | yes | The date the whole day event should start. | 2019-03-10
| `end_date` | yes | The date the whole day event should end. | 2019-03-11
| `in` | yes | Days or weeks that you want to create the event in. | "days": 2
+| `location` | yes | The location of the event. | Bowling center
diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown
index 210322595da1..39f10be5817b 100644
--- a/source/_integrations/group.markdown
+++ b/source/_integrations/group.markdown
@@ -102,7 +102,7 @@ In short, when any group member entity is `unlocked`, the group will also be `un
### Sensor groups
-- The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range or sum of the collected states.
+- The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range, product or sum of the collected states.
- Members can be any `sensor`, `number` or `input_number` holding numeric states.
- The group state is `unavailable` if all group members are `unavailable`.
- If `ignore_non_numeric` is `false` then group state will be `unavailable` if one member is `unavailable` or does not have a numeric state.
@@ -241,7 +241,7 @@ all:
type: boolean
default: false
type:
- description: "Only available for `sensor` group. The type of sensor: `min`, `max`, `last`, `mean`, `median`, `range`, or `sum`."
+ description: "Only available for `sensor` group. The type of sensor: `min`, `max`, `last`, `mean`, `median`, `range`, `product` or `sum`."
type: string
required: true
ignore_non_numeric:
@@ -296,7 +296,7 @@ services:
required: true
type: string
data:
- description: A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target` or `title`.
+ description: A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target` or `title`. Parameters specified by the action will override the values configured here.
required: false
type: string
{% endconfiguration %}
diff --git a/source/_integrations/hassio.markdown b/source/_integrations/hassio.markdown
index 1bc143ec49cf..7fe2ab3294bc 100644
--- a/source/_integrations/hassio.markdown
+++ b/source/_integrations/hassio.markdown
@@ -24,7 +24,7 @@ This integration is installed automatically if you run Home Assistant OS or Supe
## Sensor entities
-For each installed add-on Supervisor provides following sensors:
+For each installed add-on, the following sensors are available:
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
@@ -33,13 +33,37 @@ For each installed add-on Supervisor provides following sensors:
| CPU Percent| no | The CPU Percent usage of the add-on
| Memory Percent| no | The Memory (RAM) Percent usage of the add-on
-For Home Assistant OS Supervisor provides following sensors:
+For Home Assistant OS, the following sensors are available:
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| Version | no | Current version of the Home Assistant OS
| Newest Version | no | Latest version of the Home Assistant OS currently available
+For Home Assistant Core, the following sensors are available:
+
+| Sensor | Enabled by default | Description |
+| ------- | ------------------ | ----------- |
+| CPU Percent| no | The CPU Percent usage of the core
+| Memory Percent| no | The Memory (RAM) Percent usage of the core
+
+For Home Assistant Supervisor, the following sensors are available:
+
+| Sensor | Enabled by default | Description |
+| ------- | ------------------ | ----------- |
+| CPU Percent| no | The CPU Percent usage of the supervisor
+| Memory Percent| no | The Memory (RAM) Percent usage of the supervisor
+
+For Home Assistant Host, the following sensors are available:
+
+| Sensor | Enabled by default | Description |
+| ------- | ------------------ | ----------- |
+| OS Agent Version | no | The version of the installed OS Agent
+| Apparmor Version | no | The version of apparmor
+| Disk Free | no | Free space (in GB) left on the device
+| Disk Total | no | Total space (in GB) on the device
+| Disk Used | no | Used space (in GB) on the device
+
## Binary Sensor entities
For each installed add-on Supervisor provides following binary sensors:
diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown
index 206711d1e10c..58085970eecc 100644
--- a/source/_integrations/homeassistant.markdown
+++ b/source/_integrations/homeassistant.markdown
@@ -29,11 +29,16 @@ Reload all YAML configuration that can be reloaded without restarting Home Assis
It calls the `reload` service on all domains that have it available. Additionally,
it reloads the core configuration (equivalent to calling
-`homeassistant.reload_core_config`) and themes (`frontend.reload_themes`).
+`homeassistant.reload_core_config`), themes (`frontend.reload_themes`), and custom Jinja (`homeassistant.reload_custom_jinja`).
Prior to reloading, a basic configuration check is performed. If that fails, the reload
will not be performed and will raise an error.
+### Service `homeassistant.reload_custom_jinja`
+
+Reload all Jinja templates in the `config/custom_jinja` directory. Changes to these templates
+will take effect the next time an importing template is rendered.
+
### Service `homeassistant.reload_config_entry`
Reloads an integration config entry.
diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown
index bb71bbc7417e..e1c631b5af19 100644
--- a/source/_integrations/homekit.markdown
+++ b/source/_integrations/homekit.markdown
@@ -396,6 +396,7 @@ The following integrations are currently supported:
| climate | Thermostat | All climate devices. |
| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` or `gate` as their `device_class`. |
| cover | WindowCovering | All covers that support `set_cover_position`. |
+| cover | Door | All covers that support `set_cover_position` and have `door` as their `device_class`. |
| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) |
| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) |
| device_tracker / person | Sensor | Support for `occupancy` device class. |
diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown
index 5515d65328ff..8f7e00d55b76 100644
--- a/source/_integrations/homematicip_cloud.markdown
+++ b/source/_integrations/homematicip_cloud.markdown
@@ -9,6 +9,7 @@ ha_category:
- Cover
- Hub
- Light
+ - Lock
- Sensor
- Switch
ha_iot_class: Cloud Push
@@ -23,6 +24,7 @@ ha_platforms:
- climate
- cover
- light
+ - lock
- sensor
- switch
- weather
@@ -39,6 +41,7 @@ There is currently support for the following device types within Home Assistant:
* Climate
* Cover
* Light
+* Lock
* Sensor
* Switch
* Weather
@@ -153,6 +156,9 @@ Within this delay the device registration should be completed in the App, otherw
* Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*)
* Wired Dimmer module – 3x channels (*HMIPW-DRD3*)
+* homematicip_cloud.lock
+ * Door Lock Drive - currently, usage just without a pin is possible (*HmIP-DLD*)
+
* homematicip_cloud.sensor
* Access Point Duty Cycle (*HmIP-HAP, HmIP-HAP-B1*)
* Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*)
diff --git a/source/_integrations/homeseer.markdown b/source/_integrations/homeseer.markdown
new file mode 100644
index 000000000000..4f772f83a56e
--- /dev/null
+++ b/source/_integrations/homeseer.markdown
@@ -0,0 +1,36 @@
+---
+title: HomeSeer
+description: Connect and control your HomeSeer Z-Wave devices using the Z-Wave integration
+ha_release: '2023.4'
+ha_iot_class: Local Push
+ha_category:
+ - Binary Sensor
+ - Light
+ - Sensor
+ - Switch
+ha_domain: homeseer
+ha_integration_type: brand
+works_with:
+ - zwave
+ha_platforms:
+ - binary_sensor
+ - light
+ - sensor
+ - switch
+ha_iot_standard: zwave
+ha_brand: true
+---
+
+[HomeSeer](https://homeseer.com/) is a member of the Works with Home Assistant partner program for their Z-Wave products. Despite offering their own Home Automation software HomeSeer is committed to making sure their products are up-to-date and ready to use in Home Assistant.
+
+HomeSeer products are all Z-Wave Plus certified. Their wall switches and dimmers offer convenient additional status LEDs that can signal events happening in your home and double-tap actions for triggering automations and scenes. Their water valves will stop the water flow when leaks are detected and notify you.
+
+HomeSeer Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
+
+### Firmware updates
+
+HomeSeer periodically releases new firmware with additional features and functionality which can be sent to devices via an encrypted OTA (Over-The-Air) update process. In Home Assistant, you can navigate to your device page and use the Update Device Firmware option to upload the firmware from HomeSeer for your device.
+
+{% my add_zwave_device badge domain=page.ha_domain %}
+
+[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/)
\ No newline at end of file
diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown
index ded3321b5058..7a769bb4daa8 100644
--- a/source/_integrations/imap.markdown
+++ b/source/_integrations/imap.markdown
@@ -14,7 +14,7 @@ ha_codeowners:
ha_config_flow: true
---
-The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the number of unread emails. Other search criteria can be used, as shown in the example below.
+The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol). It can report the number of unread emails and can send a custom event that can be used to trigger an automation. Other search criteria can be used, as shown in the example below.
{% include integrations/config_flow.md %}
@@ -48,3 +48,136 @@ Below is an example for setting up the integration to connect to your Microsoft
- Username: Your full email address
- Password: Your password
- Charset: `US-ASCII`
+
+### Using events
+
+When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation.
+It is also possible to use to create a template [`binary_sensor` or `sensor`](/integrations/template/#trigger-based-template-binary-sensors-buttons-numbers-selects-and-sensors) based the [event data](/docs/automation/templating/#event).
+
+The table below shows what attributes come with `trigger.event.data`. The data is a dictionary that has the keys that are shown below:
+
+{% configuration_basic %}
+server:
+ description: The IMAP server name
+username:
+ description: The IMAP user name
+search:
+ description: The IMAP search configuration
+folder:
+ description: The IMAP folder configuration
+text:
+ description: The email body `text` of the the message
+sender:
+ description: The `sender` of the message
+subject:
+ description: The `subject` of the message
+date:
+ description: A `datetime` object of the `date` sent
+headers:
+ description: The `headers` of the message in the for of a dictionary. The values are iterable as headers can occur more than once.
+
+{% endconfiguration_basic %}
+
+The `event_type` for the custom event should be set to `imap_content`. The configuration below shows how you can use the event data in a template `sensor`.
+
+{% raw %}
+
+```yaml
+template:
+ - trigger:
+ - platform: event
+ event_type: "imap_content"
+ id: "custom_event"
+ sensor:
+ - name: imap_content
+ state: "{{ trigger.event.data['subject'] }}"
+ attributes:
+ Message: "{{ trigger.event.data['text'] }}"
+ Server: "{{ trigger.event.data['server'] }}"
+ Username: "{{ trigger.event.data['username'] }}"
+ Search: "{{ trigger.event.data['search'] }}"
+ Folder: "{{ trigger.event.data['folder'] }}"
+ Sender: "{{ trigger.event.data['sender'] }}"
+ Date: "{{ trigger.event.data['date'] }}"
+ Subject: "{{ trigger.event.data['subject'] }}"
+ To: "{{ trigger.event.data['headers']['Delivered-To'][0] }}"
+ Subject: "{{ trigger.event.data['headers']['Subject'][0] }}"
+ Return_Path: "{{ trigger.event.data['headers']['Return-Path'][0] }}"
+ Received-first: "{{ trigger.event.data['headers']['Received'][0] }}"
+ Received-last: "{{ trigger.event.data['headers']['Received'][-1] }}"
+```
+
+{% endraw %}
+
+## Example - keyword spotting
+
+The following example shows the usage of the IMAP email content sensor to scan the subject of an email for text, in this case, an email from the APC SmartConnect service, which tells whether the UPS is running on battery or not.
+
+{% raw %}
+
+```yaml
+template:
+ - trigger:
+ - platform: event
+ event_type: "imap_content"
+ id: "custom_event"
+ event_data:
+ sender: "no-reply@smartconnect.apc.com"
+ sensor:
+ - name: house_electricity
+ state: >-
+ {% if 'UPS On Battery' in trigger.event.data["subject"] %}
+ power_out
+ {% elif 'Power Restored' in trigger.event.data["subject"] %}
+ power_on
+ {% endif %}
+```
+
+{% endraw %}
+
+## Example - extracting formatted text from an email using template sensors
+
+This example shows how to extract numbers or other formatted data from an email to change the value of a template sensor to a value extracted from the email. In this example, we will be extracting energy use, cost, and billed amount from an email (from Georgia Power) and putting it into sensor values using a template sensor that runs against our IMAP email sensor already set up. A sample of the body of the email used is below:
+
+```text
+Yesterday's Energy Use: 76 kWh
+Yesterday's estimated energy cost: $8
+Monthly Energy use-to-date for 23 days: 1860 kWh
+Monthly estimated energy cost-to-date for 23 days: $198
+
+To view your account for details about your energy use, please click here.
+```
+
+Below is the template sensor which extracts the information from the body of the email in our IMAP email sensor (named sensor.energy_email) into 3 sensors for the energy use, daily cost, and billing cycle total.
+
+{% raw %}
+
+```yaml
+template:
+ - trigger:
+ - platform: event
+ event_type: "imap_content"
+ id: "custom_event"
+ event_data:
+ sender: "no-reply@smartconnect.apc.com"
+ - sensor:
+ - name: "Previous Day Energy Use"
+ unit_of_measurement: "kWh"
+ state: >
+ {{ trigger.event.data["text"]
+ | regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
+ - name: "Previous Day Cost"
+ unit_of_measurement: "$"
+ state: >
+ {{ trigger.event.data["text"]
+ | regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
+ - name: "Billing Cycle Total"
+ unit_of_measurement: "$"
+ state: >
+ {{ trigger.event.data["text"]
+ | regex_findall_index("\ days:\* \$([0-9.]+)") }}
+```
+
+{% endraw %}
+
+By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails.
\ No newline at end of file
diff --git a/source/_integrations/imap_email_content.markdown b/source/_integrations/imap_email_content.markdown
deleted file mode 100644
index f045047edeb9..000000000000
--- a/source/_integrations/imap_email_content.markdown
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: IMAP Email Content
-description: Instructions on how to integrate IMAP email content sensor into Home Assistant.
-ha_category:
- - Mailbox
-ha_iot_class: Cloud Push
-ha_release: 0.25
-ha_domain: imap_email_content
-ha_platforms:
- - sensor
-ha_integration_type: integration
----
-
-The `imap_email_content` integration will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email.
-
-## Configuration
-
-To enable this sensor, add the following lines to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: imap_email_content
- server: imap.gmail.com
- port: 993
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
- folder: YOUR_FOLDER
- senders:
- - example@gmail.com
-```
-
-{% configuration %}
-server:
- description: The IP address or hostname of the IMAP server.
- required: true
- type: string
-port:
- description: The port where the server is accessible.
- required: false
- default: 993
- type: integer
-name:
- description: Name of the IMAP sensor.
- required: false
- type: string
-username:
- description: Username for the IMAP server.
- required: true
- type: string
-password:
- description: Password for the IMAP server.
- required: true
- type: string
-folder:
- description: Folder to get mails from.
- required: false
- default: INBOX
- type: string
-senders:
- description: A list of sender email addresses that are allowed to report state via email. Only emails received from these addresses will be processed.
- required: true
- type: string
-value_template:
- description: If specified this template will be used to render the state of the sensor. If a template is not supplied the message subject will be used for the sensor value. The following attributes will be supplied to the template.
- required: false
- type: template
- keys:
- from:
- description: The from address of the email.
- body:
- description: The body of the email.
- subject:
- description: The subject of the email.
- date:
- description: The date and time the email was sent.
-verify_ssl:
- description: If the SSL certificate of the server needs to be verified.
- required: false
- type: boolean
- default: true
-{% endconfiguration %}
-
-## Example - keyword spotting
-
-The following example shows the usage of the IMAP email content sensor to scan the subject of an email for text, in this case, an email from the APC SmartConnect service which tells whether the UPS is running on battery or not.
-
-{% raw %}
-
-```yaml
-sensor:
- - platform: imap_email_content
- server: imap.gmail.com
- name: house_electricity
- port: 993
- username: MY_EMAIL_USERNAME
- password: MY_EMAIL_PASSWORD
- senders:
- - no-reply@smartconnect.apc.com
- value_template: >-
- {% if 'UPS On Battery' in subject %}
- power_out
- {% elif 'Power Restored' in subject %}
- power_on
- {% endif %}
-```
-
-{% endraw %}
-
-The same template structure can scan the date, body or sender for matching text before setting the state of the sensor.
-
-## Example - extracting formatted text from an email using template sensors
-
-This example shows how to extract numbers or other formatted data from an email to change the value of a template sensor to a value extracted from the email. In this example, we will be extracting energy use, cost, and billed amount from an email (from Georgia Power) and putting it into sensor values using a template sensor that runs against our IMAP email sensor already set up. A sample of the body of the email used is below:
-
-```text
-Yesterday's Energy Use: 76 kWh
-Yesterday's estimated energy cost: $8
-Monthly Energy use-to-date for 23 days: 1860 kWh
-Monthly estimated energy cost-to-date for 23 days: $198
-
-To view your account for details about your energy use, please click here.
-```
-
-Below is the template sensor which extracts the information from the body of the email in our IMAP email sensor (named sensor.energy_email) into 3 sensors for the energy use, daily cost, and billing cycle total.
-
-{% raw %}
-
-```yaml
-template:
- - sensor:
- - name: "Previous Day Energy Use"
- unit_of_measurement: "kWh"
- state: >
- {{ state_attr('sensor.energy_email','body')
- | regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
- - name: "Previous Day Cost"
- unit_of_measurement: "$"
- state: >
- {{ state_attr('sensor.energy_email', 'body')
- | regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
- - name: "Billing Cycle Total"
- unit_of_measurement: "$"
- state: >
- {{ state_attr('sensor.energy_email', 'body')
- | regex_findall_index("\ days:\* \$([0-9.]+)") }}
-```
-
-{% endraw %}
-
-By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body of other emails.
diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown
index 530e431df5a6..abccaa4d5683 100644
--- a/source/_integrations/isy994.markdown
+++ b/source/_integrations/isy994.markdown
@@ -134,7 +134,8 @@ Insteon devices will include entities for setting the device On Level, Ramp Rate
Once loaded, the following services will be exposed with the `isy994.` prefix, to allow advanced control over the ISY and its connected devices:
- - Entity services for Home Assistant-connected entities: `send_node_command`, `send_raw_node_command`, and `set_ramp_rate`.
+ - Entity services for all Home Assistant-connected entities: `send_node_command`, `send_raw_node_command`.
+ - ISY Z-Wave Node services: `get_zwave_parameter`, `set_zwave_parameter`, `set_zwave_lock_user_code`, `delete_zwave_lock_user_code`
- Generic ISY services: `send_program_command`
#### Service `isy994.send_node_command`
@@ -178,6 +179,26 @@ Update a Z-Wave Device parameter via the ISY. The parameter value will also be r
| `value` | no | The value to set for the parameter. May be an integer or byte string (e.g. "0xFFFF"). |
| `size` | no | The size of the parameter, either 1, 2, or 4 bytes. |
+#### Service `isy994.set_zwave_lock_user_code`
+
+Set a Z-Wave Lock User Code via the ISY.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------------------------------------------------------------------------------------------- |
+| `entity_id` | no | Name of target entity for the command, e.g., `lock.front_door`. The entity must be an ISY Z-Wave Lock entity. |
+| `user_num` | no | The user slot number to set on the end device. |
+| `code` | no | The lock code to set for the user slot. |
+
+
+#### Service `isy994.delete_zwave_lock_user_code`
+
+Delete a Z-Wave Lock User Code via the ISY.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------------------------------------------------------------------------------------------- |
+| `entity_id` | no | Name of target entity for the command, e.g., `lock.front_door`. The entity must be an ISY Z-Wave Lock entity. |
+| `user_num` | no | The user slot number to delete the code on the end device. |
+
#### Service `isy994.rename_node`
Rename a node or group (scene) on the ISY994. Note: this will not automatically change the Home Assistant Entity Name or Entity ID to match. The entity name and ID will only be updated after calling `isy994.reload` or restarting Home Assistant, and ONLY IF you have not already customized the name within Home Assistant.
diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown
index 261a3ed49945..fe52fa30ff40 100644
--- a/source/_integrations/light.markdown
+++ b/source/_integrations/light.markdown
@@ -56,7 +56,7 @@ Most lights do not support all attributes. You can check the integration documen
| `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100), where 0 means the light is off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light.
| `brightness_step` | yes | Change brightness by an amount. Should be between -255..255.
| `brightness_step_pct` | yes | Change brightness by a percentage. Should be between -100..100.
-| `white` | yes | Set the light to white mode and change its brightness, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. Note that `white` does not have a corresponding state attribute, the `color_mode` state attribute will to `white` and the `brightness` state attribute will be set to the requested brightness.
+| `white` | yes | Set the light to white mode by setting this to `True`. Note that `white` does not have a corresponding state attribute, so the `color_mode` state attribute will be set to `white`.
| `flash` | yes | Tell light to flash, can be either value `short` or `long`.
| `effect`| yes | Applies an effect such as `colorloop` or `random`.
diff --git a/source/_integrations/litterrobot.markdown b/source/_integrations/litterrobot.markdown
index 3227ad93d1f9..44ba02d55432 100644
--- a/source/_integrations/litterrobot.markdown
+++ b/source/_integrations/litterrobot.markdown
@@ -45,12 +45,13 @@ You will need a Litter-Robot account as well as a Wi-Fi-enabled Litter-Robot or
| Last seen | `sensor` | Displays the time the unit was last seen / reported an update. |
| Litter level | `sensor` | Displays the litter level, only for Litter-Robot 4. |
| Pet weight | `sensor` | Displays the last measured pet weight, only for Litter-Robot 4. |
-| Sleep mode start time | `sensor` | When sleep mode is enabled, displays the current or next sleep mode start time. |
-| Sleep mode end time | `sensor` | When sleep mode is enabled, displays the current or last sleep mode end time. |
-| Status code | `sensor` | Displays the status code (Clean Cycle in Progress, Ready, Drawer Full, etc). |
-| Waste drawer | `sensor` | Displays the current waste drawer level. |
-| Clean cycle wait time minutes | `select` | View and select the clean cycle wait time. |
-| Reset waste drawer | `button` | Button to reset the waste drawer level to 0%, only for Litter-Robot 3. |
+| Sleep Mode Start Time | `sensor` | When sleep mode is enabled, displays the current or next sleep mode start time. |
+| Sleep Mode End Time | `sensor` | When sleep mode is enabled, displays the current or last sleep mode end time. |
+| Status Code | `sensor` | Displays the status code (Clean Cycle in Progress, Ready, Drawer Full, etc). |
+| Waste Drawer | `sensor` | Displays the current waste drawer level. |
+| Clean Cycle Wait Time Minutes | `select` | View and select the clean cycle wait time. |
+| Panel brightness | `select` | View and select the panel brightness, only for Litter-Robot 4. |
+| Reset Waste Drawer | `button` | Button to reset the waste drawer level to 0%, only for Litter-Robot 3. |
| Firmware | `update` | View and update to the latest firmware, only for Litter-Robot 4. |
### Feeder-Robot
diff --git a/source/_integrations/livisi.markdown b/source/_integrations/livisi.markdown
index ea47ad36c9e9..393254406058 100644
--- a/source/_integrations/livisi.markdown
+++ b/source/_integrations/livisi.markdown
@@ -2,6 +2,8 @@
title: LIVISI Smart Home
description: Access and control your LIVISI Smart Home Controller (SHC) and its connected RWE/innogy devices.
ha_category:
+ - Binary Sensor
+ - Climate
- Switch
ha_iot_class: Local Polling
ha_release: 2022.12
@@ -10,6 +12,8 @@ ha_codeowners:
- '@StefanIacobLivisi'
ha_domain: livisi
ha_platforms:
+ - binary_sensor
+ - climate
- switch
ha_integration_type: integration
---
@@ -18,7 +22,12 @@ The LIVISI Smart Home integration allows you to connect your LIVISI Smart Home C
The following devices are currently supported by this integration:
-- RWE/innogy Smart Plug (PSS)
+- Indoor Smart Plug (PSS)
+- Inwall Switch (ISSx)
+- Outdoor Smart Plug (PSSO)
+- Room Heating Control (VRCC) that includes support for physical heating devices such as Radiator Thermostat (RSTx), Room Thermostat (WRT) or Floor Heating Control (FSC8)
+- Wall Switches (ISS, ISS2)
+- Window-Door Sensor (WDS)
## Prequisites
diff --git a/source/_integrations/magicseaweed.markdown b/source/_integrations/magicseaweed.markdown
deleted file mode 100644
index b65428bc8719..000000000000
--- a/source/_integrations/magicseaweed.markdown
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: Magicseaweed
-description: How to integrate Magicseaweed within Home Assistant.
-ha_category:
- - Sensor
-ha_release: 0.75
-ha_iot_class: Cloud Polling
-ha_domain: magicseaweed
-ha_platforms:
- - sensor
-ha_integration_type: integration
----
-
-
- This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2023.2.
-
-
-The `magicseaweed` platform uses the [Magicseaweed Forecast API](https://magicseaweed.com/docs/developers/59/) as a source for surf forecasting data for the surf spots of your choice.
-
-## Setup
-
-You need an API key which is free but requires [registration](https://magicseaweed.com/docs/developers/59/sign-up/9908/). Magicseaweed is limiting users of the API to 1 spot for the free plan.
-
-## Configuration
-
-To add Magicseaweed forecasts to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: magicseaweed
- api_key: YOUR_API_KEY
- spot_id: 1092
- monitored_conditions:
- - max_breaking_swell
-```
-
-{% configuration %}
-api_key:
- description: The API key to access the service.
- required: true
- type: string
-name:
- description: Spot nickname for the sensors.
- required: false
- default: MSW.
- type: string
-hours:
- description: List of hours you would like to receive data for.
- required: false
- default: Defaults to current forecast.
- type: list
- keys:
- 3AM:
- description: Display forecast for 3AM.
- 6AM:
- description: Display forecast for 6AM.
- 9AM:
- description: Display forecast for 9AM.
- 12PM:
- description: Display forecast for 12PM.
- 3PM:
- description: Display forecast for 3PM.
- 6PM:
- description: Display forecast for 6PM.
- 9PM:
- description: Display forecast for 9PM.
- 12AM:
- description: Display forecast for 12AM.
-spot_id:
- description: ID of the surf spot. Details for getting spot id available at [Magicseaweed](https://magicseaweed.com/docs/developers/59/)
- required: true
- type: string
-monitored_conditions:
- description: Type of data to display.
- required: true
- type: list
- keys:
- swell_forecast:
- description: List of forecast summaries as attributes with current summary as state.
- min_breaking_swell:
- description: The minimum wave height as the state with a detailed list of forecast attributes.
- max_breaking_swell:
- description: The maximum wave height as the state with a detailed list of forecast attributes.
-units:
- description: Specify the unit system. Either `uk`, `eu` or `us`.
- required: false
- default: Default to `uk` or `us` based on the temperature preference in Home Assistant.
- type: string
-{% endconfiguration %}
-
-Details about the API are available in the [Magicseaweed documentation](https://magicseaweed.com/docs/developers/59/).
diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown
index ec751a734e6b..01114d849f9d 100644
--- a/source/_integrations/matter.markdown
+++ b/source/_integrations/matter.markdown
@@ -3,7 +3,9 @@ title: Matter (BETA)
description: Instructions on how to integrate Matter with Home Assistant.
ha_category:
- Binary Sensor
+ - Cover
- Light
+ - Lock
- Sensor
- Switch
ha_release: '2022.12'
@@ -14,8 +16,10 @@ ha_codeowners:
ha_domain: matter
ha_platforms:
- binary_sensor
+ - cover
- diagnostics
- light
+ - lock
- sensor
- switch
ha_integration_type: integration
@@ -27,8 +31,6 @@ Matter is [the new standard for home automation](https://en.wikipedia.org/wiki/M
Matter devices are available using either WiFi based communication or [Thread](/integrations/thread/), both are supported by Home Assistant. Bluetooth is used for adding new devices to your Matter network.
-Home Assistant only supports control of Matter devices. Home Assistant is not a bridge itself and it cannot turn devices within Home Assistant into Matter compatible devices.
-
At this time there are only a few devices available that are compatible with the standard and some of them require you to join a beta/developer program. It is to be expected that more devices will hit the market during the 2nd quarter of 2023 and beyond.
@@ -51,7 +53,7 @@ _If you run Home Assistant Container, Home Assistant Core, or you don’t want t
While the support for Matter is evolving, we will regularly update the Matter integration with new features or device support. Because it might be hard to track what's supported and what not, we list the current state here and try to update this information as often as possible.
-Platform support in Home Assistant is currently limited to switches, lights, and (binary) sensors. The light platform is limited to _on/off_ and _brightness_ control only, support for _color_ and _color temperature_ control will be added soon.
+Platform support in Home Assistant is currently limited to switches, lights, locks, covers and (binary) sensors.
### Known issues
@@ -165,6 +167,11 @@ Once the initial firmware upgrade to Matter is complete, the device can also be
- [Eve Door & Window on Amazon](https://amzn.to/3RIU6ml)
- [Eve Motion on Amazon](https://amzn.to/3jDujiP)
+### Zemismart Roller Shade Motor (cover)
+This cover is supported by [Longan.Link](https://longan.link/), a professional matter module provider, and will be on sale soon. It runs Matter out of the box, so you can directly add it to the controller(s) of your choice!
+
+- [Zemismart Roller Shade Motor Pre-Sale](https://www.zemismart.com/products/zm25m)
+
## Troubleshooting
### I do not see the option to add a Matter device in the settings
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 6df9014c51de..6176ac8848f9 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -426,7 +426,9 @@ modbus:
state_fan_only: 3
state_dry: 4
state_off: 5
+ write_registers: true
hvac_onoff_register: 11
+ write_registers: true
```
{% details "Previous configuration format" %}
@@ -488,6 +490,11 @@ climates:
description: The address of the HVAC mode register.
required: true
type: integer
+ write_registers:
+ description: if true use write_registers
+ required: false
+ type: boolean
+ default: false
values:
description: A mapping between the register values and HVAC modes
required: true
@@ -529,6 +536,11 @@ climates:
value 1 is written.
required: false
type: integer
+ write_registers:
+ description: if true use write_registers for hvac_onoff.
+ required: false
+ type: boolean
+ default: false
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
diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown
index b5e98a66957a..72480e5a412b 100644
--- a/source/_integrations/mysensors.markdown
+++ b/source/_integrations/mysensors.markdown
@@ -15,7 +15,6 @@ ha_platforms:
- cover
- device_tracker
- light
- - notify
- remote
- sensor
- switch
@@ -841,93 +840,6 @@ void send_status_message()
}
```
-## Notify
-
-
-
-The Notify platform is deprecated and replaced with the [Text platform](#text).
-
-
-
-Setting the `target` key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: "[Child description]" or alternatively "[Sketch name] [Node id] [Child id]".
-
-#### Notify automation example
-
-```yaml
-...
-action:
- service: notify.mysensors
- data:
- message: Welcome home!
- target: "TextSensor 254 1"
-```
-
-The following sensor types are supported:
-
-#### MySensors version 2.0 and higher
-
-| S_TYPE | V_TYPE |
-| ------ | ------ |
-| S_INFO | V_TEXT |
-
-#### Notify example sketch
-
-```cpp
-/*
- * Documentation: https://www.mysensors.org
- * Support Forum: https://forum.mysensors.org
- */
-
-// Enable debug prints to serial monitor
-#define MY_DEBUG
-#define MY_RADIO_NRF24
-
-#include
-#include
-
-#define SN "TextSensor"
-#define SV "1.0"
-#define CHILD_ID 1
-
-MyMessage textMsg(CHILD_ID, V_TEXT);
-bool initialValueSent = false;
-
-void setup(void) {
-}
-
-void presentation() {
- sendSketchInfo(SN, SV);
- present(CHILD_ID, S_INFO, "TextSensor1");
-}
-
-void loop() {
- if (!initialValueSent) {
- Serial.println("Sending initial value");
- // Send initial values.
- send(textMsg.set("-"));
- Serial.println("Requesting initial value from controller");
- request(CHILD_ID, V_TEXT);
- wait(2000, C_SET, V_TEXT);
- }
-}
-
-void receive(const MyMessage &message) {
- if (message.type == V_TEXT) {
- if (!initialValueSent) {
- Serial.println("Receiving initial value from controller");
- initialValueSent = true;
- }
- // Dummy print
- Serial.print("Message: ");
- Serial.print(message.sensor);
- Serial.print(", Message: ");
- Serial.println(message.getString());
- // Send message to controller
- send(textMsg.set(message.getString()));
- }
-}
-```
-
## Remote
The following type combinations are supported:
diff --git a/source/_integrations/nextcloud.markdown b/source/_integrations/nextcloud.markdown
index f4f66e60abc7..ea4aaf85cfb5 100644
--- a/source/_integrations/nextcloud.markdown
+++ b/source/_integrations/nextcloud.markdown
@@ -7,6 +7,7 @@ ha_category:
ha_iot_class: Cloud Polling
ha_release: 0.108
ha_domain: nextcloud
+ha_config_flow: true
ha_codeowners:
- '@meichthys'
ha_platforms:
@@ -31,28 +32,4 @@ This integration has the following Nextcloud Server prerequisites:
- The Nextcloud 'Monitoring' app must be installed (__*Nextcloud*__ > __*Apps*__ > 🔍(Search Icon) > __*Monitoring*__ > __*Enable*__)
- (Recommended) A Nextcloud App password should be generated for use in Home Assistant (__*Nextcloud*__ > __*Settings*__ > __*Personal*__ > __*Security*__ > __*Devices & sessions*__ > __*Create new app password*__)
-To enable the Nextcloud integration, add the following lines to your `configuration.yaml`:
-
-```yaml
-# Example configuration.yaml entry
-nextcloud:
- url: https://YOUR_NEXTCLOUD_URL
- username: YOUR_USERNAME
- password: YOUR_APP_PASSWORD
-
-```
-
-{% configuration %}
-url:
- description: The full URL to your Nextcloud instance.
- required: true
- type: string
-username:
- description: The username of a Nextcloud user that has access to the Nextcloud monitor API.
- required: true
- type: string
-password:
- description: The app password generated from the Nextcloud security settings page.
- required: true
- type: string
-{% endconfiguration %}
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown
index 405b311b14d8..8ea85db0c103 100644
--- a/source/_integrations/nuki.markdown
+++ b/source/_integrations/nuki.markdown
@@ -4,7 +4,7 @@ description: Instructions on how to integrate a Nuki Smart Lock devices.
ha_category:
- Lock
ha_release: 0.38
-ha_iot_class: Local Polling
+ha_iot_class: Local Push
ha_codeowners:
- '@pschmitt'
- '@pvizeli'
@@ -24,9 +24,19 @@ The Nuki integration allows you to control [Nuki Smart Locks](https://nuki.io/en
## Prerequisites
To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Go to manage my devices, and select the bridge. Within the bridge configuration turn on the HTTP API and check the details in the screen. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one.
+For faster updates, the callback function of the Nuki bridge can be used. This requires your Home Assistant to be reachable via HTTP by the Nuki bridge, as HTTPS is not supported by the Nuki bridge.
{% include integrations/config_flow.md %}
+{% configuration_basic %}
+ Host:
+ description: Hostname or IP address of your Nuki bridge, e.g., `192.168.1.25`.
+ Port:
+ description: Port of the Nuki bridge HTTP API, default is `8080`.
+ Token:
+ description: Token to authenticate against the Nuki bridge HTTP API.
+{% endconfiguration_basic %}
+
## Services
### Service `nuki.lock_n_go`
diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown
index 122af2051a2e..21df6e8d12b2 100644
--- a/source/_integrations/number.markdown
+++ b/source/_integrations/number.markdown
@@ -34,6 +34,7 @@ The type of data a number represents impacts how it is displayed in the frontend
- **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
- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in
- **energy**: Energy in Wh, kWh, MWh, MJ, or GJ
+- **energy_storage**: Stored energy in Wh, kWh, MWh, MJ, or GJ
- **frequency**: Frequency in Hz, kHz, MHz, or GHz
- **gas**: Gasvolume in m³, ft³, or CCF
- **humidity**: Percentage of humidity in the air
@@ -62,6 +63,7 @@ The type of data a number represents impacts how it is displayed in the frontend
- **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
+- **volume_storage**: Generic stored 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/obihai.markdown b/source/_integrations/obihai.markdown
index 24d423575962..64eae59afa58 100644
--- a/source/_integrations/obihai.markdown
+++ b/source/_integrations/obihai.markdown
@@ -4,9 +4,11 @@ description: Instructions on how to integrate your Obihai device into Home Assis
ha_iot_class: Local Polling
ha_category:
- Sensor
+ha_config_flow: true
ha_release: 0.99
ha_codeowners:
- '@dshokouhi'
+ - '@ejpenney'
ha_domain: obihai
ha_platforms:
- sensor
@@ -15,31 +17,16 @@ ha_integration_type: integration
The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section).
-To enable `obihai` in your installation, add the following to your `configuration.yaml` file:
+{% include integrations/config_flow.md %}
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: obihai
- host: 192.168.1.x
-```
-
-{% configuration %}
+{% configuration_basic %}
host:
description: IP Address of Obihai device
- required: true
- type: string
username:
description: Username for the Obihai device.
- required: false
- type: string
- default: admin
password:
description: Password for the Obihai device.
- required: false
- type: string
- default: admin
-{% endconfiguration %}
+{% endconfiguration_basic %}
The following is a list of expected sensors and their expected states when using the `user` account:
@@ -53,3 +40,5 @@ In addition to the above list the `admin` account can expect to see the followin
- Obihai service status (`Normal`, `Down` or other states from Obihais network)
- Sensors for each phone port in use (`On Hook`, `Off Hook` and `Ringing`)
- Sensors for last caller name and number (this is also the current incoming call, will also show `--` if no data provided)
+
+You will also see a reboot button for each configured Obihai, this button will restart the Obihai when pressed.
diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown
index 99300f75b835..f9c05e48d0d0 100644
--- a/source/_integrations/profiler.markdown
+++ b/source/_integrations/profiler.markdown
@@ -81,12 +81,29 @@ Start logging the growth of objects in memory.
| ---------------------- | -------- | ----------- |
| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0
-Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks.
+Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. This service can be run for long periods to find slow leaks. For finding fast leaks, `profiler.start_log_object_sources` is preferred; however, it is much more CPU intensive.
### Service `profiler.stop_log_objects`
Stop logging the growth of objects in memory.
+### Service `profiler.start_log_object_sources`
+
+Start logging the growth of objects in memory and attempt to find the source of the new objects.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0
+| `max_objects` | yes | The number of new objects to examine for source information. Defaults to 5
+
+Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks.
+
+This service is similar to `start_log_objects` except that it is much more CPU intensive since it will attempt to locate the source of each new object up to `max_objects` each time it logs.
+
+### Service `profiler.stop_log_object_sources`
+
+Stop logging the growth of objects with sources in memory.
+
### Service `profiler.dump_log_objects`
| Service data attribute | Optional | Description |
@@ -137,3 +154,7 @@ Log what is scheduled in the event loop. This can be helpful in tracking down in
Each upcoming scheduled item is logged similar to the below example:
`[homeassistant.components.profiler] Scheduled: .run_action(>>) at /usr/src/homeassistant/homeassistant/helpers/event.py:1175>`
+
+### Service `profiler.lru_stats`
+
+Logs statistics from [lru_cache](https://docs.python.org/3/library/functools.html#functools.lru_cache) and [lru-dict](https://pypi.org/project/lru-dict/) to help tune Home Assistant and locate memory leaks.
diff --git a/source/_integrations/prosegur.markdown b/source/_integrations/prosegur.markdown
index 49c9313daa68..9575f3dbdc39 100644
--- a/source/_integrations/prosegur.markdown
+++ b/source/_integrations/prosegur.markdown
@@ -3,6 +3,7 @@ title: Prosegur Alarm
description: Instructions on how to integrate Prosegur Smart Alarms into Home Assistant.
ha_category:
- Alarm
+ - Camera
ha_release: 2021.8
ha_codeowners:
- '@dgomes'
@@ -14,6 +15,19 @@ ha_platforms:
ha_integration_type: integration
---
-Integrate [Prosegur](https://www.prosegur.com/) Smart Alarms into Home Assistant. Prosegur is company providing intruder protection and detection systems to ensure the security of your home in Iberia, South America and RSA. They have a line of connected alarm systems that can be controlled remotely through a cloud service. This integration taps in to the cloud service API providing functionalities such as ARM_HOME, ARM_AWAY and DISARM.
+Integrate [Prosegur](https://www.prosegur.com/) Smart Alarms into Home Assistant.
+
+Prosegur is a company providing intruder protection and detection systems to ensure the security of your home in Iberia, South America and RSA.
+
+Prosegur has a line of connected alarm systems that can be controlled remotely through a cloud service. This integration taps into the cloud service API, providing functionalities similar to their mobile app.
+
+There is currently support for the following device types within Home Assistant:
+- Alarm
+- Camera
{% include integrations/config_flow.md %}
+
+### Service `camera.request_image`
+
+This service will have Prosegur cloud service "Request image" from your local camera. This service should only be called seldom, as Prosegur tends to throttle this service for long periods of time, resulting in errors for both this integration and your Prosegur mobile application.
+
diff --git a/source/_integrations/pushsafer.markdown b/source/_integrations/pushsafer.markdown
index 3597ff98a7b6..96c8cc7de49d 100644
--- a/source/_integrations/pushsafer.markdown
+++ b/source/_integrations/pushsafer.markdown
@@ -97,7 +97,10 @@ action:
priority: "2"
retry: "60"
expire: "600"
+ confirm: "10"
answer: "1"
+ answeroptions: "yes|no|maybe"
+ answerforce: "1"
picture1: {
path: "C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg"
```
diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown
index 2b1ba37ec96d..1b67f69b98e7 100644
--- a/source/_integrations/qbittorrent.markdown
+++ b/source/_integrations/qbittorrent.markdown
@@ -4,6 +4,7 @@ description: Instructions on how to integrate qBittorrent sensors within Home As
ha_category:
- Downloading
ha_release: 0.84
+ha_config_flow: true
ha_iot_class: Local Polling
ha_domain: qbittorrent
ha_codeowners:
@@ -19,37 +20,7 @@ The `qbittorrent` platform allows you to monitor your downloads with [qBittorren
This sensor requires the qBittorrent Web UI enabled. The [official reference](https://github.com/qbittorrent/qBittorrent/wiki#webui-related) describes how to set up the Web UI.
-## Configuration
-
-To enable this sensor, add the following lines to your `configuration.yaml`:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: qbittorrent
- url: "http://:"
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
-```
-
-{% configuration %}
-url:
- description: The URL of the Web UI of qBittorrent.
- required: true
- type: string
-name:
- description: The name to use when displaying this qBittorrent instance.
- required: false
- type: string
-username:
- description: The username of the Web UI of qBittorrent.
- required: true
- type: string
-password:
- description: The password of the Web UI of qBittorrent.
- required: true
- type: string
-{% endconfiguration %}
+{% include integrations/config_flow.md %}
## Sensors
diff --git a/source/_integrations/quadrafire.markdown b/source/_integrations/quadrafire.markdown
new file mode 100644
index 000000000000..568767d6bdb3
--- /dev/null
+++ b/source/_integrations/quadrafire.markdown
@@ -0,0 +1,30 @@
+---
+title: "Quadra-Fire"
+description: Connect and control your Monessen fireplace using the IntelliFire integration
+ha_category:
+ - Binary Sensor
+ - Climate
+ - Fan
+ - Light
+ - Number
+ - Sensor
+ - Switch
+ha_domain: quadrafire
+ha_integration_type: virtual
+ha_supporting_domain: intellifire
+ha_supporting_integration: IntelliFire
+ha_release: 2022.3
+ha_codeowners:
+ - '@jeeftor'
+ha_platforms:
+ - binary_sensor
+ - climate
+ - fan
+ - light
+ - number
+ - sensor
+ - switch
+ha_iot_class: Local Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown
index 81e32d6f5f27..0b2d88442c6d 100644
--- a/source/_integrations/recorder.markdown
+++ b/source/_integrations/recorder.markdown
@@ -216,9 +216,28 @@ Call the service `recorder.purge_entities` to start a task that purges events an
| `entity_id` | yes* | A list of entity_ids that should be purged from the recorder database. |
| `domains` | yes | A list of domains that should be purged from the recorder database. |
| `entity_globs` | yes | A list of regular expressions that identify entities to purge from the recorder database. |
+| `keep_days` | yes | Number of history days to keep in the database of matching rows. The default of 0 days will remove all matching rows. |
Note: The `entity_id` is only optional when used in `automations.yaml` or `scripts.yaml`. When using the UI to call this service then it is mandatory to specify at least one `entity_id` using the Target Picker or via YAML mode.
+#### Example automation to remove data rows for specific entities
+
+The below automation will remove history for `sensor.power_sensor_0` older than 5 days at `04:15:00` every day.
+
+```yaml
+alias: "Purge noisy power sensors"
+trigger:
+ - platform: time
+ at: "04:15:00"
+action:
+ - service: recorder.purge_entities
+ data:
+ keep_days: 5
+ target:
+ entity_id: sensor.power_sensor_0
+mode: single
+```
+
### Service `disable`
Call the service `recorder.disable` to stop saving events and states to the database.
diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown
index d83638a30761..015f8e45e205 100644
--- a/source/_integrations/renault.markdown
+++ b/source/_integrations/renault.markdown
@@ -30,6 +30,7 @@ This integration provides the following platforms:
- Binary sensors - such as plug and charge status.
- Device tracker - to track location of your car.
+- Buttons - to start air conditioning or start/stop the charge. Please note that although available these actions do not work on all vehicles.
- Selectors - to change the charge mode.
- Sensors - such as battery level, outside temperature, odometer, estimated range, and charging rate.
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index c94771fd0531..e9c650cd7311 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -39,7 +39,7 @@ The Images stream provides a sequence of image snapshots giving very low latency
## Binary sensors
-Depending on the supported features of the camera binary sensors are added for:
+Depending on the supported features of the camera, binary sensors are added for:
- Motion detection
- Doorbell presses
@@ -54,10 +54,99 @@ For list of Reolink products that support ONVIF see the [Reolink Support Site](h
## Number entities
-Depending on the supported features of the camera number entities are added for:
+Depending on the supported features of the camera, number entities are added for:
- Optical zoom control
- Focus control
+- Floodlight turn on brightness
+- Volume
+- Guard return time
+- Motion sensitivity
+- AI face sensitivity
+- AI people sensitivity
+- AI vehicle sensitivity
+- AI pet sensitivity
+- Auto quick reply time
+- Auto track limit left
+- Auto track limit right
+- Auto track disappear time
+- Auto track stop time
+
+"Floodlight turn on brightness" controls the brightness of the floodlight when it is turned on internally by the camera (see "Floodlight mode" select entity) or when using the "Floodlight" light entity.
+
+When the camera is not moved and no person/pet/vehicle is detected for the "Guard return time" in seconds, and the "Guard return" switch is ON, the camera will move back to the guard position.
+
+When a Reolink doorbell is pressed the quick reply message from the "Auto quick reply message" select entity will be played after "Auto quick reply time" seconds, unless the "Auto quick reply message" is set to off.
+
+If the "Auto tracking" switch entity is enabled, and a object disappears from view OR stops moving for the "Auto track disappear time"/"Auto track stop time", the camera goes back to its original position.
+
+## Button entities
+
+Depending on the supported features of the camera, button entities are added for:
+
+- PTZ stop
+- PTZ left
+- PTZ right
+- PTZ up
+- PTZ down
+- PTZ calibrate
+- Guard go to
+- Guard set current position
+
+PTZ left, right, up and down will continually move the camera in the respective position until the PTZ stop is called or the hardware limit is reached.
+
+"Guard set current position" will set the current position as the new guard position.
+
+## Select entities
+
+Depending on the supported features of the camera, select entities are added for:
+
+- Floodlight mode (Off, Auto, Schedule)
+- Day night mode (Auto, Color, Black&White)
+- PTZ preset
+- Auto quick reply message
+- Auto track method (Digital, Digital first, Pan/Tilt first)
+
+PTZ preset positions can be set in the Reolink app/windows/web client, the names of the presets will be loaded into Home Assistant at the start of the integration. When adding new preset positions, please restart the Reolink integration.
+
+Auto quick reply messages can be recorded in the Reolink app where a name is also supplied. New or updated quick reply messages will be loaded into Home Assistant at the start of the integration. When adding new quick reply messages, please restart the Reolink integration.
+
+## Siren entities
+
+If the camera supports a siren, a siren entity will be created.
+When using the siren turn-on service, the siren will continue to sound until the siren turn-off service is called.
+
+In some camera models, there is a delay of up to 5 seconds between the turn-off command and the sound stopping. The siren turn-on service supports setting a volume and a duration (no turn-off service call is needed in that case).
+
+## Switch entities
+
+Depending on the supported features of the camera, switch entities are added for:
+
+- Record audio
+- Siren on event
+- Auto tracking
+- Auto focus
+- Guard return
+
+Depending on the supported features of the NVR/host, global switch entities are added for:
+
+- Record
+- Push notifications
+- Buzzer on event
+- Email on event
+- FTP upload
+
+## Light entities
+
+Depending on the supported features of the camera, light entities are added for:
+
+- Floodlight
+- Infra red lights in night mode
+- Status LED
+
+When the floodlight entity is ON always ON, when OFF controlled based on the internal camera floodlight mode (Off, Auto, Schedule), see the "Floodlight mode" select entity.
+
+When IR light entity is OFF always OFF, when ON IR LEDs will be on when the camera is in night vision mode, see the "Day night mode" select entity.
## Update entity
@@ -109,8 +198,3 @@ The following models are lacking the HTTP webserver API and can therfore not wor
- Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online.
- Ensure at least one of the HTTP/HTTPS ports is enabled in the [windows](https://reolink.com/software-and-manual/)/web client under `Settings`->`Network`->`Advanced`->`Port Settings`, see [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site.
- On some camera models, the RTMP port needs to be enabled in order for the HTTP(S) port to function properly. Make sure this port is also enabled if you get a `Cannot connect to host` error while one of the HTTP/HTTPS ports is already enabled.
-
-## Reolink firmware limitations
-
-- The Reolink NVR only sends event-notifications if motion happens on the camera connected to the first (index "0") channel, therefore the binary sensors of all channels will only be updated when the first channel sees motion. Beta NVR firmware v3.0.0.211_23011204 fixes this issue, you can request beta firmware from reolink support, release firmware is expected in a few weeks.
-- Reolink doorbell presses only generate ONVIF event notifications when the doorbell is directly connected to your network. The doorbell visitor binary sensor will not work when connecting the Reolink doorbell to an NVR. Beta NVR firmware v3.0.0.211_23011204 fixes this issue, you can request beta firmware from reolink support, release firmware is expected in a few weeks.
diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown
index d2002050fc30..c776fc8fc7fb 100644
--- a/source/_integrations/rest.markdown
+++ b/source/_integrations/rest.markdown
@@ -162,6 +162,11 @@ scan_interval:
required: false
type: integer
default: 30
+encoding:
+ description: The character encoding to use if none provided in the header of the shared data.
+ required: false
+ type: string
+ default: UTF-8
sensor:
description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here.
required: false
diff --git a/source/_integrations/ridwell.markdown b/source/_integrations/ridwell.markdown
index 93202149d64a..eeadaf870811 100644
--- a/source/_integrations/ridwell.markdown
+++ b/source/_integrations/ridwell.markdown
@@ -10,6 +10,7 @@ ha_codeowners:
- '@bachya'
ha_config_flow: true
ha_platforms:
+ - calendar
- diagnostics
- sensor
- switch
diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown
index 9929b2b5b6e1..a942b524b0b9 100644
--- a/source/_integrations/samsungtv.markdown
+++ b/source/_integrations/samsungtv.markdown
@@ -48,31 +48,34 @@ name:
description: The name you would like to give to the Samsung Smart TV.
required: false
type: string
-turn_on_action:
- description: "Defines an [action](/docs/automation/action/) to turn the TV on."
- required: false
- type: list
{% endconfiguration %}
After saving the YAML configuration, the TV must be turned on _before_ launching Home Assistant in order for the TV to be registered the first time.
-#### Wake up TV / TV does not turn on
+### Turn on action
-If the integration knows the MAC address of the TV from discovery, it will attempt to wake it using wake on LAN when calling turn on. Wake on LAN must be enabled on the TV for this to work. If the TV is connected to a smart strip or requires a more complex turn-on process, a `turn_on_action` can be provided that will take precedence over the built-in wake on LAN functionality.
+If the integration knows the MAC address of the TV from discovery, it will attempt to wake it using wake on LAN when calling turn on. Wake on LAN must be enabled on the TV for this to work. If the TV is connected to a smart strip or requires a more complex turn-on process, a `turn_on` action can be provided that will take precedence over the built-in wake on LAN functionality.
-To wake up the TV when switched off you can use the [wake-on-lan](/integrations/wake_on_lan/) integration and call a service.
+You can create an automation from the user interface, from the device create a new automation and select the **Device is requested to turn on** automation.
+Automations can also be created using an automation action:
```yaml
-wake_on_lan:
-
-samsungtv:
- - host: IP_ADDRESS
- turn_on_action:
+# Example configuration.yaml entry
+wake_on_lan: # enables `wake_on_lan` integration
+
+automation:
+ - alias: "Turn On Living Room TV with WakeOnLan"
+ trigger:
+ - platform: samsungtv.turn_on
+ entity_id: media_player.samsung_smart_tv
+ action:
- service: wake_on_lan.send_magic_packet
data:
- mac: MAC_ADDRESS
+ mac: aa:bb:cc:dd:ee:ff
```
+Any other [actions](/docs/automation/action/) to power on the device can be configured.
+
### Usage
#### Changing channels
diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown
index 53834dd6ce71..e9569d0d073e 100644
--- a/source/_integrations/scrape.markdown
+++ b/source/_integrations/scrape.markdown
@@ -92,6 +92,11 @@ scan_interval:
required: false
type: integer
default: 600
+encoding:
+ description: The character encoding to use if none provided in the header of the shared data.
+ required: false
+ type: string
+ default: UTF-8
sensor:
description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here.
required: true
diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown
index d5bdad9cc636..f09e9e4c8979 100644
--- a/source/_integrations/sensor.markdown
+++ b/source/_integrations/sensor.markdown
@@ -33,6 +33,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **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
+- **energy_storage**: Stored 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
- **gas**: Gasvolume in m³, ft³ or CCF
@@ -63,6 +64,7 @@ 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, mV
- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
+- **volume_storage**: Generic stored 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/shopping_list.markdown b/source/_integrations/shopping_list.markdown
index 0873762b8721..f5e2926cc89e 100644
--- a/source/_integrations/shopping_list.markdown
+++ b/source/_integrations/shopping_list.markdown
@@ -65,6 +65,14 @@ Mark all items as incomplete in the shopping list.
Clear completed items from the shopping list.
+### Service `shopping_list.sort`
+
+Sort all items by name in the shopping list.
+
+| Service data attribute | Optional | Description |
+|------------------------|----------|---------------------------------------------------------------------|
+| `reverse` | yes | Whether to sort in reverse (_descending_) order. (default: `False`) |
+
## Using in Automations
A `shopping_list_updated` event is triggered when items in the list are modified, with the following data payload attached to it. This can be used to trigger automations such as sending a push notification when someone adds an item to the shopping list, which when clicked, will open the list.
diff --git a/source/_integrations/simplepush.markdown b/source/_integrations/simplepush.markdown
index da61e4275d2a..8b31502e8545 100644
--- a/source/_integrations/simplepush.markdown
+++ b/source/_integrations/simplepush.markdown
@@ -14,17 +14,55 @@ ha_codeowners:
- '@engrbm87'
---
-The `simplepush` platform uses [Simplepush](https://simplepush.io/) to deliver notifications from Home Assistant to your Android device. Unlike similar apps the Simplepush app requires no registration.
+The `simplepush` platform uses [Simplepush](https://simplepush.io/) to deliver notifications from Home Assistant to your Android and iOS device. Unlike similar apps the Simplepush app requires no registration and supports end-to-end encryption.
{% include integrations/config_flow.md %}
To test if the service works, just send a message with `curl` from the command-line.
```bash
-curl 'https://api.simplepush.io/send/device_key/title/message'
+curl 'https://simplepu.sh/YOUR_SIMPLEPUSH_KEY/message'
```
+
+If you enter your password and salt (as defined in the Simplepush app settings) during the configuration of this integration, all notifications sent from this integration will be end-to-end encrypted.
+
## Notifications
-Simplepush can send a notification by calling the [`notify` service](/integrations/notify/). You can specify the `event` under the `data` key. This will override the event configured in YAML when imported.
+Simplepush can send a notification by calling the [`notify` service](/integrations/notify/).
+
+You can specify the `event` under the `data` key.
+Events can be used to customize the notification behavior.
+
+It is also possible to specify `attachments` under the `data` key.
+Attachments can be images, GIFs or video files that are accessible by a URL.
To use notifications, please see the [getting started with automation page](/getting-started/automation/).
+
+## Examples
+
+Send a notification with a title and event.
+
+```yml
+- service: notify.simplepush
+ data:
+ title: "This is the title"
+ message: "This is the message"
+ data:
+ event: "event"
+```
+
+Send a notification with four attachments defined by their URL.
+Attachments can be images, GIFs or video files.
+
+```yml
+- service: notify.simplepush
+ data:
+ message: "This is the message"
+ data:
+ attachments:
+ - image: "https://upload.wikimedia.org/wikipedia/commons/e/ee/Sample_abc.jpg"
+ - image: "https://upload.wikimedia.org/wikipedia/commons/d/d3/Newtons_cradle_animation_book_2.gif"
+ - video: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
+ - video: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
+ thumbnail: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerEscapes.jpg"
+```
diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown
index c26dc0526dd2..e453596d904b 100644
--- a/source/_integrations/snapcast.markdown
+++ b/source/_integrations/snapcast.markdown
@@ -6,33 +6,15 @@ ha_category:
ha_release: 0.13
ha_iot_class: Local Polling
ha_domain: snapcast
+ha_config_flow: true
ha_platforms:
- media_player
ha_integration_type: integration
---
-The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant.
-
-To add Snapcast to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-media_player:
- - platform: snapcast
- host: YOUR_IP_ADDRESS
-```
-
-{% configuration %}
-host:
- description: The IP address of the device, e.g., `192.168.0.10`.
- required: true
- type: string
-port:
- description: The port number.
- required: false
- default: 1705
- type: integer
-{% endconfiguration %}
+The Snapcast integration allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant.
+
+{% include integrations/config_flow.md %}
## Services
diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown
index 54aca6e6fcf1..7b88c29e33e0 100644
--- a/source/_integrations/sql.markdown
+++ b/source/_integrations/sql.markdown
@@ -35,11 +35,26 @@ To enable it, add the following lines to your `configuration.yaml` file (example
sql:
- name: Sun state
query: >
- SELECT *
- FROM states
- WHERE entity_id = 'sun.sun'
- ORDER BY state_id
- DESC LIMIT 1;
+ SELECT
+ states.state
+ FROM
+ states
+ LEFT JOIN state_attributes ON (
+ states.attributes_id = state_attributes.attributes_id
+ )
+ WHERE
+ metadata_id = (
+ SELECT
+ metadata_id
+ FROM
+ states_meta
+ where
+ entity_id = 'sun.sun'
+ )
+ ORDER BY
+ state_id DESC
+ LIMIT
+ 1;
column: "state"
```
{% endraw %}
@@ -79,13 +94,21 @@ sql:
description: Provide a unique id for this sensor.
required: false
type: string
+ device_class:
+ description: "Provide [device class](/integrations/sensor#device-class) for this sensor."
+ required: false
+ type: string
+ state_class:
+ description: "Provide [state class](https://developers.home-assistant.io/docs/core/entity/sensor/#available-state-classes) 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.
-The SQL integration will connect to the default SQLite if "Database URL" has not been specified. If you use a different database recorder (eg MariaDB or others), you will have to specify the "Database URL" manually during integration setup.
+The SQL integration will connect to the Home Assistant Recorder database if "Database URL" has not been specified.
There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes.
@@ -109,7 +132,23 @@ sensor:
The query will look like this:
```sql
-SELECT * FROM states WHERE entity_id = 'sensor.temperature_in' ORDER BY state_id DESC LIMIT 1;
+SELECT
+ states.state
+FROM
+ states
+WHERE
+ metadata_id = (
+ SELECT
+ metadata_id
+ FROM
+ states_meta
+ WHERE
+ entity_id = 'sensor.temperature_in'
+ )
+ORDER BY
+ state_id DESC
+LIMIT
+ 1;
```
Use `state` as column for value.
@@ -118,7 +157,31 @@ Use `state` as column for value.
Based on previous example with temperature, the query to get the former state is :
```sql
-SELECT * FROM (SELECT * FROM states WHERE entity_id = 'sensor.temperature_in' ORDER BY state_id DESC LIMIT 2) two_entity ORDER BY state_id ASC LIMIT 1;
+SELECT
+ states.state
+FROM
+ states
+WHERE
+ state_id = (
+ SELECT
+ states.old_state_id
+ FROM
+ states
+ WHERE
+ metadata_id = (
+ SELECT
+ metadata_id
+ FROM
+ states_meta
+ WHERE
+ entity_id = 'sensor.temperature_in'
+ )
+ AND old_state_id IS NOT NULL
+ ORDER BY
+ last_updated_ts DESC
+ LIMIT
+ 1
+ );
```
Use `state` as column for value.
diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown
index eb9165f08b6a..79d927ae29af 100644
--- a/source/_integrations/sun.markdown
+++ b/source/_integrations/sun.markdown
@@ -73,14 +73,18 @@ which event (sunset or sunrise) and the offset.
| `above_horizon` | When the sun is above the horizon.
| `below_horizon` | When the sun is below the horizon.
-| State Attributes | Description |
+## Sensors
+
+The sensors are also available as attributes on the `sun.sun` entity for backwards compatibility reasons.
+
+| Sensors | Description |
| --------- | ----------- |
-| `next_rising` | Date and time of the next sun rising (in UTC).
-| `next_setting` | Date and time of the next sun setting (in UTC).
-| `next_dawn` | Date and time of the next dawn (in UTC).
-| `next_dusk` | Date and time of the next dusk (in UTC).
-| `next_noon` | Date and time of the next solar noon (in UTC).
-| `next_midnight` | Date and time of the next solar midnight (in UTC).
-| `elevation` | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon.
-| `azimuth` | Solar azimuth. The angle is shown clockwise from north.
+| Next rising | Date and time of the next sun rising (in UTC).
+| Next setting | Date and time of the next sun setting (in UTC).
+| Next dawn | Date and time of the next dawn (in UTC).
+| Next dusk | Date and time of the next dusk (in UTC).
+| Next noon | Date and time of the next solar noon (in UTC).
+| Next midnight | Date and time of the next solar midnight (in UTC).
+| Elevation | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon.
+| Azimuth | Solar azimuth. The angle is shown clockwise from north.
| `rising` | True if the Sun is currently rising, after solar midnight and before solar noon.
diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown
index a354cdcca23d..97a478b98dec 100644
--- a/source/_integrations/supla.markdown
+++ b/source/_integrations/supla.markdown
@@ -17,7 +17,7 @@ ha_integration_type: integration
The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, its own firmware and commercially available devices (produced for example by [Zamel](https://zamel.pl/pl-PL/produkty/supla-sterowanie-wi-fi))
-Currently only covers (shutters in Supla's lingo), gates and switches are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more.
+Currently only covers (shutters in Supla's lingo), gates, garage doors and switches are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more.
Right now it's impossible to add a device -- all of them are discovered from Supla Cloud's servers or yours.
Devices disabled on Supla Cloud will not be loaded into Home Assistant.
diff --git a/source/_integrations/tplink_omada.markdown b/source/_integrations/tplink_omada.markdown
index 0b3c0b74af8c..73d5ddb0db91 100644
--- a/source/_integrations/tplink_omada.markdown
+++ b/source/_integrations/tplink_omada.markdown
@@ -25,6 +25,7 @@ The integration provides basic configuration and status of Omada devices control
- Username/Password: A user account with permissions to view & configure the site is required.
### Multiple Sites
+
If you have multiple sites managed by your controller, you will be prompted to choose which site to manage.
## Supported Controllers
@@ -42,14 +43,15 @@ Controller versions 5.0.0 and later are supported.
### Network Switches
- Support for enabling/disabling Power over Ethernet on a per-port basis.
+- Firmware Update entities.
### Access Points
-- Not currently supported.
+- Firmware Update entities.
### Internet Gateways
-- Not currently supported.
+- Firmware Update entities.
## Device Trackers
diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown
index fcc49c782568..bd94b17e060f 100644
--- a/source/_integrations/universal.markdown
+++ b/source/_integrations/universal.markdown
@@ -57,6 +57,7 @@ media_player:
attributes:
is_volume_muted: ENTITY_ID|ATTRIBUTE
state: ENTITY_ID|ATTRIBUTE
+ browse_media_entity: media_player.CHILD_2_ID
device_class: tv
unique_id: a_unique_string
```
@@ -82,6 +83,10 @@ attributes:
description: "Attributes that can be overridden. Most, if not all, media player attributes can be overridden. Example entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id needs to be provided."
required: false
type: string
+browse_media_entity:
+ description: Allows override the browse media entity to desired media player.
+ required: false
+ type: string
device_class:
description: The device class that this entity represents. Can be `tv`, `speaker`, or `receiver`.
required: false
@@ -102,6 +107,8 @@ When providing `select_source` as a command, it is recommended to also provide t
When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/docs/configuration/templating/#time) section in the template documentation.
+The `browse_media_entity` parameter allows you to specify which media player will be used in media browser.
+
## Usage examples
### Chromecast & Kodi control with switches
diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown
index c92afb6d6f44..8588ae9d39d9 100644
--- a/source/_integrations/utility_meter.markdown
+++ b/source/_integrations/utility_meter.markdown
@@ -55,6 +55,10 @@ Net consumption:
Delta values:
description: >
Enable this if the source values are delta values since the last reading instead of absolute values. When this option is enabled, each new value received will be added as-is to the utility meter instead of adding the _difference_ between the new value and previous value.
+Periodically resetting:
+ description: >
+ Enable this if the source sensor state is expected to reset to 0, for example, a smart plug that resets on boot.
+ When this option is disabled (for example, if the source sensor is a domestic utility meter that never resets during the device's lifetime), the _difference_ between the new value and the last valid value is added to the utility meter, which avoids the loss of a meter reading after the source sensor becomes available after being unavailable.
{% endconfiguration_basic %}
If the meter reset cycle and reset offsets are to limited for your use case,
@@ -117,6 +121,11 @@ tariffs:
required: false
default: []
type: list
+periodically_resetting:
+ description: Enable this if the source sensor state is expected to reset to 0, for example, a smart plug that resets on boot. When this option is disabled (for example, if the source sensor is a domestic utility meter that never resets during the device's lifetime), the _difference_ between the new value and the last valid value is added to the utility meter, which avoids the loss of a meter reading after the source sensor becomes available after being unavailable.
+ required: false
+ default: true
+ type: boolean
{% endconfiguration %}
diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown
index f2fdfb70ca6c..f101e0a4ebd9 100644
--- a/source/_integrations/velbus.markdown
+++ b/source/_integrations/velbus.markdown
@@ -23,6 +23,7 @@ ha_platforms:
- cover
- diagnostics
- light
+ - select
- sensor
- switch
ha_integration_type: hub
@@ -30,15 +31,6 @@ 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.
-There is currently support for the following device types within Home Assistant:
-
-- Binary Sensor
-- Climate
-- Sensor
-- Switch
-- Cover
-- Light
-
The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown
index 562639cb969c..d3fa2ed9664e 100644
--- a/source/_integrations/verisure.markdown
+++ b/source/_integrations/verisure.markdown
@@ -34,7 +34,7 @@ There is currently support for the following device types within Home Assistant:
- Alarm
- Camera
- Switch (Smartplug)
-- Sensor (Thermometers, Hygrometers and Mouse detectors)
+- Sensor (Thermometers and Hygrometers)
- Lock
- Binary Sensor (Door & Window)
diff --git a/source/_integrations/vermont_castings.markdown b/source/_integrations/vermont_castings.markdown
new file mode 100644
index 000000000000..4b92e9d6471d
--- /dev/null
+++ b/source/_integrations/vermont_castings.markdown
@@ -0,0 +1,30 @@
+---
+title: "Vermont Castings"
+description: Connect and control your Vermont Casings fireplace using the IntelliFire integration
+ha_category:
+ - Binary Sensor
+ - Climate
+ - Fan
+ - Light
+ - Number
+ - Sensor
+ - Switch
+ha_domain: vermont_castings
+ha_integration_type: virtual
+ha_supporting_domain: intellifire
+ha_supporting_integration: IntelliFire
+ha_release: 2022.3
+ha_codeowners:
+ - '@jeeftor'
+ha_platforms:
+ - binary_sensor
+ - climate
+ - fan
+ - light
+ - number
+ - sensor
+ - switch
+ha_iot_class: Local Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/voice_assistant.markdown b/source/_integrations/voice_assistant.markdown
new file mode 100644
index 000000000000..9e895a982f67
--- /dev/null
+++ b/source/_integrations/voice_assistant.markdown
@@ -0,0 +1,16 @@
+---
+title: Voice Assistant
+description: Voice Assistant Integration.
+ha_category:
+ - Voice
+ha_iot_class: Local Push
+ha_release: '2023.4'
+ha_config_flow: false
+ha_codeowners:
+ - '@balloob'
+ - '@synesthesiam'
+ha_domain: voice_assistant
+ha_integration_type: integration
+---
+
+The Voice Assistant integration contains logic for running *pipelines*, which perform the common steps of a voice assistant like [Assist](/docs/assist/).
diff --git a/source/_integrations/weather.darksky.markdown b/source/_integrations/weather.darksky.markdown
deleted file mode 100644
index 9fe40c223ec8..000000000000
--- a/source/_integrations/weather.darksky.markdown
+++ /dev/null
@@ -1,78 +0,0 @@
----
-title: "Dark Sky"
-description: "Instructions on how to integrate Dark Sky within Home Assistant."
-featured: false
-logo: dark_sky.png
-ha_category:
- - Weather
-ha_release: 0.61
-ha_iot_class: Cloud Polling
-ha_domain: darksky
----
-
-The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location.
-
-## Configuration
-
-
-
-On March 31, 2020 Dark Sky was [acquired by Apple](https://blog.darksky.net/dark-sky-has-a-new-home/) and is no longer allowing new API registrations. The Dark Sky API will continue to function for existing users [until March 31st, 2023](https://blog.darksky.net/), but it is no longer possible to obtain an API key for new users. Home Assistant supports many alternative [weather integrations](/integrations/#weather).
-
-
-
-The free tier allows up to 1000 calls per day, this platform updates at most every 3 minutes, using up to 480 of those calls.
-
-
-
-[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day.
-
-
-
-To add Dark Sky to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-weather:
- - platform: darksky
- api_key: YOUR_API_KEY
-```
-
-{% configuration %}
-api_key:
- description: "Your API key for [Dark Sky](https://darksky.net/dev/)."
- required: true
- type: string
-latitude:
- description: Manually specify latitude. By default the value will be taken from the Home Assistant configuration.
- required: false
- type: float
- default: Provided by Home Assistant configuration
-longitude:
- description: Manually specify longitude. By default the value will be taken from the Home Assistant configuration.
- required: false
- type: float
- default: Provided by Home Assistant configuration
-units:
- description: "Manually specify unit system. Valid values are: `auto`, `us`, `si`, `ca`, `uk` and `uk2`."
- required: false
- type: string
- default: "`si` if Home Assistant unit system is metric, `us` if imperial."
-name:
- description: Name to use in the frontend.
- required: false
- type: string
- default: Dark Sky
-mode:
- description: "The forecast type. Can be `hourly` or `daily`."
- required: false
- type: string
- default: hourly
-{% endconfiguration %}
-
-
-
-This platform is an alternative to the [`darksky`](/integrations/darksky) sensor.
-
-
-
-Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs).
diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown
index 3543b6648c63..4100974eb3d5 100644
--- a/source/_integrations/wled.markdown
+++ b/source/_integrations/wled.markdown
@@ -88,6 +88,7 @@ This integration provides sensors for the following information from WLED:
- Wi-Fi Signal Strength (RSSI in dBm, disabled by default).
- Wi-Fi Channel (disabled by default).
- Wi-Fi BSSID (disabled by default).
+- IP.
## Switches
diff --git a/source/_integrations/xbox_live.markdown b/source/_integrations/xbox_live.markdown
deleted file mode 100644
index 2125fdbbe9d4..000000000000
--- a/source/_integrations/xbox_live.markdown
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Xbox Live
-description: Instructions on how to set up Xbox Live sensors in Home Assistant.
-ha_category:
- - Social
-ha_iot_class: Cloud Polling
-ha_release: 0.28
-ha_codeowners:
- - '@MartinHjelmare'
-ha_domain: xbox_live
-ha_platforms:
- - sensor
-ha_integration_type: integration
----
-
-
- This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2023.2.
-
-
-The Xbox Live integration is able to track [Xbox](https://xbox.com/) profiles.
-
-To use this sensor you need a free API key from
-[xapi.us](https://xapi.us/).
-Please also make sure to connect your Xbox account on that site.
-
-The configuration requires you to specify XUIDs which are the unique identifiers
-for profiles. These can be determined on [xapi.us](https://xapi.us/) by
-either looking at your own profile page or using their interactive documentation
-to search for gamertags. Sensor names default to the gamertag associated with an XUID.
-
-To use the Xbox Live sensor in your installation,
-add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: xbox_live
- api_key: YOUR_API_KEY
- xuid:
- - account1
- - account2
-```
-
-{% configuration %}
-api_key:
- description: Your API key from [xapi.us](https://xapi.us/).
- required: true
- type: string
-xuid:
- description: Array of profile XUIDs to be tracked.
- required: true
- type: list
-{% endconfiguration %}
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index 8efa95fe3d49..2f3a4b484229 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -372,6 +372,51 @@ Child Lock | Turn on/off the child lock
Learn Mode | Turn on/off the learn mode
LED | Turn on/off the LED
+
+### Air Purifier MA2 (zhimi.airpurifier.ma2)
+
+- Power (on, off)
+- Operation modes (Auto, Silent, Favorite)
+- Attributes (fan platform)
+ - `extra_features`
+ - `turbo_mode_supported`
+ - `button_pressed`
+ - `preset_modes`
+ - `preset_mode`
+ - `sleep_time`
+ - `sleep_mode_learn_count`
+ - `use_time`
+ - `sleep_mode`
+ - `friendly_name`
+ - `supported_features`
+
+Number | Description
+----------------------- | -----------------------
+Favorite Level | Set the favorite level
+
+- Sensor entities
+
+Sensor | Description | Enabled by default
+----------------------- | ----------------------- | -----------------------
+Filter Life Remaining | The remaining life of the filter | True
+Filter Use | Filter usage time in hours | True
+Humidity | The current humidity measured | True
+Motor Speed | The current motor speed measured in rpm | True
+PM2.5 | The current particulate matter 2.5 measured | True
+Temperature | The current temperature measured | True
+Illuminance | The current illuminance meassured on top of the device 0-200lux| True
+Use Time | The accumulative number of seconds the device has been in use | False
+
+- Switch entities
+
+Switch | Description
+----------------------- | -----------------------
+Buzzer | Turn on/off the buzzer
+Child Lock | Turn on/off the child lock
+Learn Mode | Turn on/off the learn mode
+LED | Turn on/off the LED
+
+
### Air Purifier 2S (zhimi.airpurifier.mc1)
- Power (on, off)
diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown
index fd6f8328f670..754a86a1445e 100644
--- a/source/_integrations/yolink.markdown
+++ b/source/_integrations/yolink.markdown
@@ -55,3 +55,4 @@ The integration is tested and verified for the following devices from YoLink:
* YS4906/8 (Garage Door Sensor/ Garage Door Controller)
* YS5707 (Dimmer)
* YS6801/2 (MultiOutlet)
+* YS3604 (FlexFob)
diff --git a/source/_redirects b/source/_redirects
index e7ae853d78cf..2ac524a1a63f 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -263,6 +263,7 @@
/integrations/trace /docs/automation/troubleshooting
/integrations/hassio /hassio
/integrations/cloud.alexa /cloud/alexa
+/integrations/imap_email_content /integrations/imap/#using-events
/getting-started/automation-create-first /getting-started/automation
/getting-started/automation-2 /getting-started/automation
/getting-started/automation-action /docs/automation/action
@@ -434,6 +435,7 @@
/integrations/ciscospark /more-info/removed-integration 301
/integrations/coinmarketcap /more-info/removed-integration 301
/integrations/crimereports /more-info/removed-integration 301
+/integrations/darksky /more-info/removed-integration 301
/integrations/deutsche_bahn /more-info/removed-integration 301
/integrations/device_tracker.trackr /more-info/removed-integration 301
/integrations/dht /more-info/removed-integration 301
@@ -467,6 +469,7 @@
/integrations/loop_energy /more-info/removed-integration 301
/integrations/loopenergy /more-info/removed-integration 301
/integrations/lyft /more-info/removed-integration 301
+/integrations/magicseaweed /more-info/removed-integration 301
/integrations/mcp23017 /more-info/removed-integration 301
/integrations/mhz19 /more-info/removed-integration 301
/integrations/miflora /integrations/xiaomi_ble
@@ -518,10 +521,12 @@
/integrations/ups /more-info/removed-integration 301
/integrations/uscis /more-info/removed-integration 301
/integrations/usps /more-info/removed-integration 301
+/integrations/weather.darksky /more-info/removed-integration 301
/integrations/weblink /more-info/removed-integration 301
/integrations/wink /more-info/removed-integration 301
/integrations/wunderground /more-info/removed-integration 301
/integrations/xbee /more-info/removed-integration 301
+/integrations/xbox_live /more-info/removed-integration 301
/integrations/xfinity /more-info/removed-integration 301
/integrations/yessssms /more-info/removed-integration 301
/integrations/yweather /more-info/removed-integration 301
diff --git a/source/images/blueprints/selector-constant.png b/source/images/blueprints/selector-constant.png
new file mode 100644
index 000000000000..261dfb061f20
Binary files /dev/null and b/source/images/blueprints/selector-constant.png differ