diff --git a/CODEOWNERS b/CODEOWNERS index fa4fb686b0d5..a0e19853f5cf 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -775,7 +775,6 @@ source/_integrations/workday.markdown @fabaff source/_integrations/worldclock.markdown @fabaff source/_integrations/ws66i.markdown @ssaenger source/_integrations/xbox.markdown @hunterjm -source/_integrations/xbox_live.markdown @MartinHjelmare source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79 source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index e4f0b6a9c124..a5de950c420b 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -22,6 +22,7 @@ The following selectors are currently available: - [Boolean selector](#boolean-selector) - [Color temperature selector](#color-temperature-selector) - [Config entry selector](#config-entry-selector) +- [Constant selector](#constant-selector) - [Date selector](#date-selector) - [Date & time selector](#date--time-selector) - [Device selector](#device-selector) @@ -115,8 +116,9 @@ area: device: description: > When device options are provided, the list of areas is filtered by areas - that at least provide one device that matches the given conditions. - type: map + that at least provide one device that matches the given conditions. Can be + either a object or a list of object. + type: list keys: integration: description: > @@ -140,8 +142,9 @@ device: entity: description: > When entity options are provided, the list of areas is filtered by areas - that at least provide one entity that matches the given conditions. - type: map + that at least provide one entity that matches the given conditions. Can be + either a object or a list of object. + type: list required: false keys: integration: @@ -162,8 +165,10 @@ entity: device_class: description: > Limits the list of areas to areas that have entities with a certain - device class, for example, `motion` or `window`. - type: device_class + device class(es), for example, `motion` or `window`. Can be either a string + with a single device_class, or a list of string device_class to limit + the selection to. + type: [device_class, list] required: false multiple: description: > @@ -208,10 +213,9 @@ integration. Multiple areas can be selected. area: multiple: true device: - multiple: true - integration: deconz - manufacturer: IKEA of Sweden - model: TRADFRI remote control + - integration: deconz + manufacturer: IKEA of Sweden + model: TRADFRI remote control ``` ## Attribute selector @@ -238,12 +242,11 @@ For example: `next_dawn`. ## Boolean selector The boolean selector shows a toggle that allows the user to turn on or off -the selected option. The input's value will contain the boolean value of that -toggle as a boolean value, being `true` or `false`. +the selected option. ![Screenshot of a boolean selector](/images/blueprints/selector-boolean.png) -The boolean selector can be incredibly useful for adding feature switches +The boolean selector is suitable for adding feature switches to, for example, blueprints. This selector does not have any other options; therefore, it only has its key. @@ -252,7 +255,7 @@ This selector does not have any other options; therefore, it only has its key. boolean: ``` -The output of this selector is `true` when the toggle was on, `false` otherwise. +The output of this selector is `true` when the toggle is on, `false` otherwise. ## Color temperature selector @@ -302,6 +305,24 @@ integration: The output of this selector is the entry ID of the config entry, for example, `6b68b250388cbe0d620c92dd3acc93ec`. +## Constant selector + +The constant selector shows a toggle that allows the user to enable the selected option. +This is similar to the [boolean selector](#boolean-selector), the difference +is that the constant selector has no value when it's not enabled. + +![Screenshot of a constant selector](/images/blueprints/selector-constant.png) + +The selector's value must be configured, and optionally, a label. + +```yaml +boolean: + value: true + label: Enabled +``` + +The output of this selector is the configured value when the toggle is on, it has not output otherwise. + ## Date selector The date selector shows a date input that allows the user to specify a date. @@ -354,28 +375,12 @@ device: ``` {% configuration device %} -integration: - description: > - Can be set to an integration domain. Limits the list of devices to devices - provided by the set integration domain. - type: string - required: false -manufacturer: - description: > - When set, it limits the list of devices to devices provided by the set - manufacturer name. - type: string - required: false -model: - description: > - When set, it limits the list of devices to devices that have the set model. - type: string - required: false entity: description: > When entity options are provided, the list of devices is filtered by devices - that at least provide one entity that matches the given conditions. - type: map + that at least provide one entity that matches the given conditions. Can be + either a object or a list of object. + type: list required: false keys: integration: @@ -397,8 +402,35 @@ entity: device_class: description: > Limits the list of entities to entities that have a certain device - class, for example, `motion` or `window`. - type: device_class + class(es), for example, `motion` or `window`. Can be either a string + with a single device_class, or a list of string device_class to limit + the selection to. + type: [device_class, list] + required: false +filter: + description: > + When filter options are provided, the list of devices is filtered by devices + that at least provide one entity that matches the given conditions. Can be either + a object or a list of object. + type: list + required: false + keys: + integration: + description: > + Can be set to an integration domain. Limits the list of devices to devices + provided by the set integration domain. + type: string + required: false + manufacturer: + description: > + When set, it limits the list of devices to devices provided by the set + manufacturer name. + type: string + required: false + model: + description: > + When set, it limits the list of devices to devices that have the set model. + type: string required: false multiple: description: > @@ -433,12 +465,13 @@ And this is what is looks like in YAML: ```yaml device: - integration: deconz - manufacturer: Philips - model: RWL021 + filter: + - integration: deconz + manufacturer: Philips + model: RWL021 entity: - domain: sensor - device_class: battery + - domain: sensor + device_class: battery ``` ## Duration selector @@ -499,28 +532,37 @@ include_entities: description: List of entity IDs to limit the selectable list to. type: list required: false -integration: - description: > - Can be set to an integration domain. Limits the list of entities to entities - provided by the set integration domain, for example, - [`zha`](/integrations/zha). - type: string - required: false -domain: - description: > - Limits the list of entities to entities of a certain domain(s), for example, - [`light`](/integrations/light) or - [`binary_sensor`](/integrations/binary_sensor). Can be either a string - with a single domain, or a list of string domains to limit the selection - to. - type: [string, list] - required: false -device_class: +filter: description: > - Limits the list of entities to entities that have a certain device class, - for example, `motion` or `window`. - type: device_class + When filter options are provided, the entities are limited by entities + that at least match the given conditions. Can be either a object or a list of object. + Can be either a object or a list of object. + type: list required: false + keys: + integration: + description: > + Can be set to an integration domain. Limits the list of entities to entities + provided by the set integration domain, for example, + [`zha`](/integrations/zha). + type: string + required: false + domain: + description: > + Limits the list of entities to entities of a certain domain(s), for example, + [`light`](/integrations/light) or + [`binary_sensor`](/integrations/binary_sensor). Can be either a string + with a single domain, or a list of string domains to limit the selection + to. + type: [string, list] + required: false + device_class: + description: > + Limits the list of entities to entities that have a certain device class(es), + for example, `motion` or `window`. Can be either a string with a single device_class, + or a list of string device_class to limit the selection to. + type: [device_class, list] + required: false multiple: description: > Allows selecting multiple entities. If set to `true`, the resulting value of @@ -556,9 +598,10 @@ And this is what it looks like in YAML: ```yaml entity: multiple: true - integration: zha - domain: binary_sensor - device_class: motion + filter: + - integration: zha + domain: binary_sensor + device_class: motion ``` ## Icon selector @@ -895,8 +938,9 @@ target: device: description: > When device options are provided, the targets are limited by devices - that at least match the given conditions. - type: map + that at least match the given conditions. Can be either a object or a list + of object. + type: list keys: integration: description: > @@ -918,8 +962,9 @@ device: entity: description: > When entity options are provided, the targets are limited by entities - that at least match the given conditions. - type: map + that at least match the given conditions. Can be either a object or a list + of object. + type: list required: false keys: integration: @@ -940,9 +985,10 @@ entity: required: false device_class: description: > - Limits the targets to entities with a certain - device class, for example, `motion` or `window`. - type: device_class + Limits the targets to entities with a certain device class(es), for example, + `motion` or `window`. Can be either a string with a single device_class, + or a list of string device_class to limit the selection to. + type: [device_class, list] required: false {% endconfiguration %} @@ -967,8 +1013,8 @@ or more lights, provided by the [ZHA](/integrations/zha) integration. ```yaml target: entity: - integration: zha - domain: light + - integration: zha + domain: light ``` Another example using the target selector, which only shows targets that @@ -978,9 +1024,9 @@ provide one or more remote controls, provided by the ```yaml target: device: - integration: deconz - manufacturer: IKEA of Sweden - model: TRADFRI remote control + - integration: deconz + manufacturer: IKEA of Sweden + model: TRADFRI remote control ``` ## Template selector diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 669fff9d2558..d3c6c3835ea5 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -57,6 +57,47 @@ There are a few very important rules to remember when adding templates to YAML: Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates. +### Enabled Jinja Extensions + +Jinja supports a set of language extensions that add new functionality to the language. +To improve the experience of writing Jinja templates, we have enabled the following +extensions: + +* [Loop Controls](https://jinja.palletsprojects.com/en/3.0.x/extensions/#loop-controls) (`break` and `continue`) + +### Reusing Templates + +You can write reusable Jinja templates by adding them to a `custom_jinja` folder under your +configuration directory. All template files must have the `.jinja` extension and be less than 5MiB. +Templates in this folder will be loaded at startup. To reload the templates without +restarting Home Assistant, invoke the `homeassistant.reload_custom_jinja` service. + +Once the templates are loaded, Jinja [includes](https://jinja.palletsprojects.com/en/3.0.x/templates/#include) and [imports](https://jinja.palletsprojects.com/en/3.0.x/templates/#import) will work +using `config/custom_jinja` as the base directory. + +For example, you might define a macro in a template in `config/custom_jinja/formatter.jinja`: + +{% raw %} + +```text +{% macro format_entity(entity_id) %} +{{ state_attr(entity_id, 'friendly_name') }} - {{ states(entity_id) }} +{% endmacro %} +``` + +{% endraw %} + +In your automations, you could then reuse this macro by importing it: + +{% raw %} + +```text +{% from 'formatter.jinja' import format_entity %} +{{ format_entity('sensor.temperature') }} +``` + +{% endraw %} + ## Home Assistant template extensions Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters. @@ -78,6 +119,7 @@ Not supported in [limited templates](#limited-templates). - `is_state` compares an entity's state with a specified state or list of states and returns `True` or `False`. `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. `is_state('device_tracker.paulus', ['home', 'work'])` will test if the given entity is any of the states in the list. - `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist. - `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions). +- `has_value('sensor.my_sensor')` will test if the given entity is not unknown or unavailable. Can be used as a filter or a test.
@@ -108,6 +150,16 @@ Print out a list of all the sensor states: {% endfor %} ``` +Print out a list of all the sensor states sorted by `entity_id`: + +{% raw %} + +```text +{% for state in states.sensor | sort(attribute='entity_id') %} + {{ state.entity_id }}={{ state.state }}, +{% endfor %} +``` + {% endraw %} Entities that are on: @@ -134,6 +186,10 @@ Other state examples: {% if states('sensor.train_departure_time') in ("unavailable", "unknown") %} {{ ... }} +{% if has_value('sensor.train_departure_time') %} + {{ ... }} + + {% set state = states('sensor.temperature') %}{{ state | float + 1 if is_number(state) else "invalid temperature" }} {% set state = states('sensor.temperature') %}{{ (state | float * 10) | round(2) if is_number(state)}} @@ -320,6 +376,21 @@ The same thing can also be expressed as a test: {% endraw %} + +### Entities + +- `is_hidden_entity(entity_id)` returns whether an entity has been hidden. Can also be used as a test. + +### Entities examples + +{% raw %} + +```text +{{ area_entities('kitchen') | reject('is_hidden_entity') }} # Gets a list of visible entities in the kitchen area +``` + +{% endraw %} + ### Devices - `device_entities(device_id)` returns a list of entities that are associated with a given device ID. Can also be used as a filter. @@ -361,6 +432,7 @@ The same thing can also be expressed as a test: ### Areas +- `areas()` returns the full list of area IDs - `area_id(lookup_value)` returns the area ID for a given device ID, entity ID, or area name. Can also be used as a filter. - `area_name(lookup_value)` returns the area name for a given device ID, entity ID, or area ID. Can also be used as a filter. - `area_entities(area_name_or_id)` returns the list of entity IDs tied to a given area ID or name. Can also be used as a filter. @@ -370,6 +442,10 @@ The same thing can also be expressed as a test: {% raw %} +```text +{{ areas() }} # ['area_id'] +``` + ```text {{ area_id('Living Room') }} # 'deadbeefdeadbeefdeadbeefdeadbeef' ``` diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 2e79570a0767..a24c394984de 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -1,6 +1,6 @@ --- -title: Android TV -description: Instructions on how to integrate Android TV and Fire TV devices into Home Assistant. +title: Android Debug Bridge +description: Instructions on how to integrate Android and Fire TV devices into Home Assistant. ha_category: - Media Player ha_release: 0.7.6 @@ -16,7 +16,7 @@ ha_platforms: ha_integration_type: device --- -The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device. +The Android Debug Bridge integration allows you to control an Android device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device.
@@ -26,7 +26,7 @@ When setting up this integration, it is recommended that you do NOT use an ADB s ## Device preparation -To set up your device, you will need to find its IP address and enable ADB debugging. For Android TV devices, please consult the documentation for your device. +To set up your device, you will need to find its IP address and enable ADB debugging. For Android devices, please consult the documentation for your device. For Fire TV devices, the instructions are as follows: @@ -62,11 +62,11 @@ Configure State Detection Rules: ## ADB Setup -This integration works by sending ADB commands to your Android TV / Fire TV device. There are two ways to accomplish this. +This integration works by sending ADB commands to your Android / Fire TV device. There are two ways to accomplish this.
-When connecting to your device for the first time, a dialog will appear on your Android TV / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK. +When connecting to your device for the first time, a dialog will appear on your Android / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK.
@@ -84,7 +84,7 @@ Prior to Home Assistant 0.101, this approach did not work well for newer devices ### 2. ADB Server -The second option is to use an ADB server to connect to your Android TV and Fire TV devices. +The second option is to use an ADB server to connect to your Android and Fire TV devices.
@@ -92,21 +92,21 @@ To configure ADB server on integration setup, you need to enable [advanced mode]
-Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. +Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. ## ADB Troubleshooting -If the setup for your Android TV or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes. +If the setup for your Android or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes. 1. You have the wrong IP address for the device. 2. ADB is not enabled on your device. -3. You are already connected to the Android TV / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android TV / Fire TV (for good measure), and then restart Home Assistant. +3. You are already connected to the Android / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android / Fire TV (for good measure), and then restart Home Assistant. 4. You need to approve the ADB connection; see the note in the [ADB Setup](#adb-setup) section above. -5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to Wi-Fi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. +5. Some Android devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to Wi-Fi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. 6. If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock](https://github.com/d4rken/wakelock-revamp)) to prevent this from happening. Some users have reported this problem with Xiaomi Mi Box devices. @@ -138,11 +138,11 @@ stop_netflix: ### `androidtv.adb_command` -The service `androidtv.adb_command` allows you to send either keys or ADB shell commands to your Android TV / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute (i.e., `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level. +The service `androidtv.adb_command` allows you to send either keys or ADB shell commands to your Android / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute (i.e., `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of Android TV / Fire TV entities. +| `entity_id` | no | Name(s) of Android / Fire TV entities. | `command` | no | Either a key command or an ADB shell command. In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this: @@ -177,14 +177,14 @@ A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e ### `androidtv.learn_sendevent` (for faster ADB commands) -When sending commands like UP, DOWN, HOME, etc. via ADB, the device can be slow to respond. The problem isn't ADB, but rather the Android command `input` that is used to perform those actions. A faster way to send these commands is using the Android `sendevent` command. The challenge is that these commands are device-specific. To assist users in learning commands for their device, the Android TV integration provides the `androidtv.learn_sendevent` service. Its usage is as follows: +When sending commands like UP, DOWN, HOME, etc. via ADB, the device can be slow to respond. The problem isn't ADB, but rather the Android command `input` that is used to perform those actions. A faster way to send these commands is using the Android `sendevent` command. The challenge is that these commands are device-specific. To assist users in learning commands for their device, the Android debug bridge integration provides the `androidtv.learn_sendevent` service. Its usage is as follows: | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of Android TV / Fire TV entities. +| `entity_id` | no | Name(s) of Android / Fire TV entities. 1. Call the `androidtv.learn_sendevent` service. -2. Within 8 seconds, hit a single button on your Android TV / Fire TV remote. +2. Within 8 seconds, hit a single button on your Android / Fire TV remote. 3. After 8 seconds, a persistent notification will appear that contains the equivalent command that can be sent via the `androidtv.adb_command` service. This command can also be found in the `adb_response` attribute of the media player in Home Assistant, and it will be logged at the INFO level. As an example, a service call in a [script](/docs/scripts) could be changed from this: @@ -211,25 +211,25 @@ to this: ### `androidtv.download` and `androidtv.upload` -You can use the `androidtv.download` service to download a file from your Android TV / Fire TV device to your Home Assistant instance. +You can use the `androidtv.download` service to download a file from your Android / Fire TV device to your Home Assistant instance. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name of Android TV / Fire TV entity. -| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `entity_id` | no | Name of Android / Fire TV entity. +| `device_path` | no | The filepath on the Android / Fire TV device. | `local_path` | no | The filepath on your Home Assistant instance. -Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android TV / Fire TV devices. +Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android / Fire TV devices. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of Android TV / Fire TV entities. -| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `entity_id` | no | Name(s) of Android / Fire TV entities. +| `device_path` | no | The filepath on the Android / Fire TV device. | `local_path` | no | The filepath on your Home Assistant instance. ## Custom State Detection -The Android TV integration works by polling the Android TV / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations. +The Android Debug Bridge integration works by polling the Android / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations. The solution to this problem is the `state_detection_rules` configuration parameter, which allows you to provide your own rules for state detection. The keys are app IDs, and the values are lists of rules that are evaluated in order. Valid rules are: diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index 5662e0d65990..2c2299e57dff 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -40,7 +40,7 @@ Currently, this includes support for the following product classes: - BleBox rollerGate - BleBox gateBox -For now, only a minimum set of features are supported (e.g., no tilt support for shutterBox). +Set of features includes tilt support for shutterBox. ## Binary sensors This integration adds BleBox device as a binary_sensor in Home Assistant. diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index fe98688f1918..6bbbbdbead98 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -156,10 +156,11 @@ Add a new calendar event. A calendar `target` is selected with a [Target Selecto | `summary` | no | Acts as the title of the event. | Bowling | `description` | yes | The description of the event. | Birthday bowling | `start_date_time` | yes | The date and time the event should start. | 2019-03-10 20:00:00 -| `end_date_time` | yes | The date and time the event should end. | 2019-03-10 23:00:00 +| `end_date_time` | yes | The date and time the event should end (exclusive). | 2019-03-10 23:00:00 | `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 +| `end_date` | yes | The date the whole day event should end (exclusive). | 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/darksky.markdown b/source/_integrations/darksky.markdown deleted file mode 100644 index 563129422c62..000000000000 --- a/source/_integrations/darksky.markdown +++ /dev/null @@ -1,250 +0,0 @@ ---- -title: Dark Sky -description: How to integrate Dark Sky within Home Assistant. -ha_category: - - Weather -ha_release: '0.30' -ha_iot_class: Cloud Polling -ha_codeowners: - - '@fabaff' -ha_domain: darksky -ha_platforms: - - sensor - - weather -ha_integration_type: integration ---- - -The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](https://www.openstreetmap.org/). - -## Setup - -
- -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). - -
- -You can make up to 1000 calls per day for free which means that you could make one approximately every 86 seconds. - -
- -[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. - -
- -## Configuration - -To add Dark Sky to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: darksky - api_key: YOUR_API_KEY - forecast: - - 0 - hourly_forecast: - - 0 - - 1 - monitored_conditions: - - summary - - icon - - temperature -``` - -{% configuration %} -api_key: - description: Your API key. - required: true - type: string -name: - description: Additional name for the sensors. - required: false - default: Dark Sky - type: string -forecast: - description: List of days in the 7-day forecast you would like to receive data on, starting with today as day 0 and ending with day 7. Any condition from `monitored_conditions` with a daily forecast by Dark Sky will generate a sensor with entity_id `_d`. - required: false - type: list -hourly_forecast: - description: List of hours in the 48-hour forecast you would like to receive data on, starting with this hour as hour 0 and ending with hour 48. Any condition from `monitored_conditions` with an hourly forecast by Dark Sky will generate a sensor with entity_id `_h`. - required: false - type: list -language: - description: The desired language of the summary properties. The valid options are further down in a table. - required: false - default: "`en`" - type: string -latitude: - description: Latitude coordinate to monitor weather of (required if **longitude** is specified). - required: false - default: coordinates from the Home Assistant configuration - type: float -longitude: - description: Longitude coordinate to monitor weather of (required if **latitude** is specified). - required: false - default: coordinates from the Home Assistant configuration - type: float -monitored_conditions: - description: Conditions to display in the frontend. - required: true - type: list - keys: - summary: - description: A human-readable text summary. - icon: - description: A machine-readable text summary, suitable for selecting an icon for display. See [Dark Sky API documentation](https://darksky.net/dev/docs) for the list of possible values. - precip_type: - description: The type of precipitation occurring at the given time. If `precip_intensity` is zero, then this property will be `unknown`. See [Dark Sky API documentation](https://darksky.net/dev/docs) for the list of possible values. - precip_intensity: - description: The intensity of precipitation occurring at the given time. This value is conditional on probability (that is, assuming any precipitation occurs at all). - precip_probability: - description: The probability of precipitation occurring, in percents. - precip_accumulation: - description: The amount of snowfall accumulation expected to occur. If no snowfall is expected, this property will be `undefined`. - temperature: - description: The air temperature. - apparent_temperature: - description: The apparent (or "feels like") temperature. - dew_point: - description: The dew point. - wind_speed: - description: The wind speed. - wind_gust: - description: The wind gust speed. - wind_bearing: - description: The direction that the wind is coming **from** in degrees, with true north at 0° and progressing clockwise. If `wind_speed` is 0, then this value is `unknown`. - cloud_cover: - description: The percentage of sky occluded by clouds. - humidity: - description: The relative humidity. - pressure: - description: The sea-level air pressure in millibars. - visibility: - description: The average visibility. - ozone: - description: The columnar density of total atmospheric ozone at the given time in Dobson units. - minutely_summary: - description: A human-readable text summary for the next hour. - hourly_summary: - description: A human-readable text summary for the next two days. - daily_summary: - description: A human-readable text summary for the next week. - temperature_high: - description: The daytime high temperature. - temperature_low: - description: The overnight low temperature. - apparent_temperature_high: - description: The daytime high apparent temperature. - apparent_temperature_low: - description: The overnight low apparent temperature. - precip_intensity_max: - description: The maximum value of `precip_intensity` during a given day. - uv_index: - description: The UV index. - moon_phase: - description: "The fractional part of the lunation number during the given day: a value of 0 corresponds to a new moon, 0.25 to a first quarter moon, 0.5 to a full moon, and 0.75 to a last quarter moon." - sunrise_time: - description: The time of when the sun will rise during a given day. - sunset_time: - description: The time of when the sun will set during a given day. - nearest_storm_distance: - description: The approximate distance to the nearest storm in miles. - nearest_storm_bearing: - description: The approximate direction of the nearest storm in degrees, with true north at 0° and progressing clockwise. - alerts: - description: Current severe weather advisories. -units: - description: Specify the unit system. Valid options are `auto`, `us`, `si`, `ca` and `uk2`. `auto` will let Dark Sky decide the unit system based on location. - required: false - default: "`si` or `us`, based on the temperature preference in Home Assistant." - type: string -scan_interval: - description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." - required: false - default: 2 minutes - type: time -{% endconfiguration %} - -
- -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):

@@ -91,17 +71,13 @@ Overview of the info dialog:

-## Development - -Support is provided through the Python [fsapi] module. The Python module was developed by using the documentation provided by [flammy] and -is based on [tiwillam]'s fsapi project. Special thanks to both developers, this integration would have not been possible without their work. - ## Notes and Limitations
-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