diff --git a/CODEOWNERS b/CODEOWNERS index e588a7e6614..5e07d46def0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -482,6 +482,7 @@ source/_integrations/lidarr.markdown @tkdrob source/_integrations/lifx.markdown @Djelibeybi source/_integrations/light.markdown @home-assistant/core source/_integrations/light.template.markdown @home-assistant/core +source/_integrations/linak.markdown @abmantis source/_integrations/linear_garage_door.markdown @IceBotYT source/_integrations/linux_battery.markdown @fabaff source/_integrations/litejet.markdown @joncar @@ -763,6 +764,7 @@ source/_integrations/sensor.markdown @home-assistant/core source/_integrations/sensorblue.markdown @bdraco source/_integrations/sensorpro.markdown @bdraco source/_integrations/sensorpush.markdown @bdraco +source/_integrations/sensorpush_cloud.markdown @sstallion source/_integrations/sensoterra.markdown @markruys source/_integrations/sentry.markdown @dcramer @frenck source/_integrations/senz.markdown @milanmeu diff --git a/source/_dashboards/markdown.markdown b/source/_dashboards/markdown.markdown index 1809bdd3066..1a71fe38209 100644 --- a/source/_dashboards/markdown.markdown +++ b/source/_dashboards/markdown.markdown @@ -58,6 +58,11 @@ show_empty: description: By default, an empty card will still be shown (resulting in a small empty box). Setting this to `false` hides that empty card instead. default: true type: boolean +text_only: + required: false + description: Display the card without border, background, padding and title. + default: false + type: boolean {% endconfiguration %} ### Example diff --git a/source/_dashboards/tile.markdown b/source/_dashboards/tile.markdown index 719c6cc247e..0ccdb9c8f85 100644 --- a/source/_dashboards/tile.markdown +++ b/source/_dashboards/tile.markdown @@ -91,6 +91,12 @@ features: required: false description: Additional widgets to control your entity. See [available features](/dashboards/features). type: list +features_position: + required: false + description: Position of the features on the tile card. Can be `bottom` or `inline`. Only the first feature will be displayed when the option is set to `inline`. `inline` is not compatible with the `vertical` option. + type: string + default: bottom + {% endconfiguration %} ## Examples diff --git a/source/_integrations/balboa.markdown b/source/_integrations/balboa.markdown index 72e7dd5984c..584eaf61077 100644 --- a/source/_integrations/balboa.markdown +++ b/source/_integrations/balboa.markdown @@ -16,6 +16,8 @@ ha_platforms: - fan - light - select + - switch + - time ha_codeowners: - '@garbled1' - '@natekspencer' @@ -33,6 +35,8 @@ There is currently support for the following device types within Home Assistant: - Fan (Pumps/Jets) - Light - Select (Low/high temperature range) +- Switch (Enable/disable filter cycle 2) +- Time (Set filter cycle start/end times) ## Compatible hardware diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index bd450f2e51e..906692d07e8 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -132,9 +132,46 @@ template: {% endraw %} +The configuration snippet below adds a template sensor containing the current forecast information as attributes and the text summary of the forecast for the current day. + +{% raw %} + +```yaml +- trigger: + - platform: time_pattern + hours: "/4" + - platform: homeassistant + event: start + - platform: event + event_type: event_template_reloaded + action: + - service: environment_canada.get_forecasts + target: + entity_id: weather.ottawa_kanata_orleans_forecast + response_variable: forecasts + sensor: + - name: Weather Forecast Daily + unique_id: weather_forecast_daily + state: "{{ states('weather.ottawa_kanata_orleans_forecast') }}" + attributes: + daily: "{{ forecasts['weather.ottawa_kanata_orleans_forecast']['daily_forecast'] }}" + hourly: "{{ forecasts['weather.ottawa_kanata_orleans_forecast']['hourly_forecast'] }}" + summary: "{{ forecasts['weather.ottawa_kanata_orleans_forecast']['daily_forecast'][0]['text_summary'] }}" + temperature_unit: "{{ state_attr('weather.ottawa_kanata_orleans_forecast', 'temperature_unit') }}" +``` + +{% endraw %} ## Actions +### Action `environment_canada.get_forecasts` + +Get the raw forecast data from Environment Canada. Returns both the `daily_forecast` and the `hourly_forecast` data. + +| Data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Weather entity to get forecast for. + ### Action `environment_canada.set_radar_type` Sets the type of radar to retrieve for the camera. diff --git a/source/_integrations/flexit_bacnet.markdown b/source/_integrations/flexit_bacnet.markdown index 91a54bd22ae..6646e46cdb4 100644 --- a/source/_integrations/flexit_bacnet.markdown +++ b/source/_integrations/flexit_bacnet.markdown @@ -17,6 +17,7 @@ ha_codeowners: - '@lellky' - '@piotrbulinski' ha_config_flow: true +ha_quality_scale: silver --- Integrates [Flexit](https://www.flexit.no/en/) Nordic series air handling unit into Home Assistant. diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index c880b79257b..a21a9fe3825 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -26,6 +26,9 @@ ha_platforms: - update ha_ssdp: true ha_integration_type: integration +related: + - docs: /common-tasks/general/#enabling-or-disabling-entities + title: Enabling or disabling entities --- The AVM FRITZ!Box Tools integration allows you to control your [AVM FRITZ!Box](https://en.avm.de/products/fritzbox/) router and have presence detection for connected network devices. @@ -99,6 +102,14 @@ Due to security reasons, AVM implemented the ability to enable/disable a port fo **Note 2**: Only works if you have a dedicated IPv4 address (_it won't work with DS-Lite_) +### WiFi switches + +WiFi {% term switches %} are created for each SSID the FRITZ!Box is serving. With these switches, one can activate and deactivate each single SSID. + +**Note 1**: In a mesh setup, the WiFi settings are adopted by each mesh repeater (_**Home Network > Mesh > Mesh Settings > Automatically Adopting Settings from the Mesh**_) + +**Note 2**: For mesh repeaters, these switches are disabled by default, but can be enabled. When your mesh is based on a WiFi connection between the mesh master and the mesh repeater, the WiFi switches won't be created for the mesh repeater either. + ## Example Automations and Scripts ### Script: Reconnect / get new IP diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown index 8429aa2517c..665c055c580 100644 --- a/source/_integrations/google_generative_ai_conversation.markdown +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -85,15 +85,16 @@ The tutorial is using OpenAI, but this could also be done with the Google Genera This action isn't tied to any integration entry, so it won't use the model, prompt, or any of the other settings in your options. If you only want to pass text, you should use the `conversation.process` action. {% endtip %} -Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images. +Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally attachments (images, PDFs, etc.). This action populates [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data) with the generated content. | Data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------------------------------------------- | ------------------- | | `prompt` | no | The prompt for generating the content. | Describe this image | -| `image_filename` | yes | File names for images to include in the prompt. | /tmp/image.jpg | +| `filenames` | yes | File names for attachments to include in the prompt. | /tmp/image.jpg | {% raw %} + ```yaml action: google_generative_ai_conversation.generate_content data: @@ -101,9 +102,10 @@ data: Very briefly describe what you see in this image from my doorbell camera. Your message needs to be short to fit in a phone notification. Don't describe stationary objects or buildings. - image_filename: /tmp/doorbell_snapshot.jpg + filenames: /tmp/doorbell_snapshot.jpg response_variable: generated_content ``` + {% endraw %} The response data field `text` will contain the generated content. @@ -111,19 +113,21 @@ The response data field `text` will contain the generated content. Another example with multiple images: {% raw %} + ```yaml action: google_generative_ai_conversation.generate_content data: prompt: >- Briefly describe what happened in the following sequence of images from my driveway camera. - image_filename: + filenames: - /tmp/driveway_snapshot1.jpg - /tmp/driveway_snapshot2.jpg - /tmp/driveway_snapshot3.jpg - /tmp/driveway_snapshot4.jpg response_variable: generated_content ``` + {% endraw %} ### Video tutorial diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index f65dadcb4af..609fb8325a6 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -14,7 +14,7 @@ ha_platforms: - diagnostics - media_player ha_integration_type: hub -ha_quality_scale: silver +ha_quality_scale: platinum --- The HEOS {% term integration %} is used to connect a [HEOS](https://www.denon.com/en-gb/category/heos/) System to Home Assistant. HEOS is a wireless audio ecosystem @@ -80,9 +80,26 @@ This integration follows standard integration removal. No extra steps are requir 1. Go to **{% my integrations icon title="Settings > Devices & Services" %}**. 2. Select **Denon HEOS**. Click the three-dot {% icon "mdi:dots-vertical" %} menu and then select **Delete**. -## Playing media +## Actions -### Play a favorite +In addition to the standard [Media Player actions](/integrations/media_player#actions), the HEOS integration provides the following {% term actions %}: + +Group volume actions: `media_player.group_volume_set`, `media_player.group_volume_down`, and `media_player.group_volume_up` for entities joined to a group. + +### Action `media_player.group_volume_set` + +Sets the group's volume while preserving member volume ratios. This action can be called on any entity in a group. + +| Data attribute | Optional | Description | +|------------------------|----------|------------------------------------------------------------------| +| `entity_id` | yes | A media player entity that is joined to a group. | +| `volume_level` | no | The volume level, where 0 is inaudible, 1 is the maximum volume. | + +## Examples + +### Playing media + +#### Play a favorite You can play a HEOS favorite by number or name with the `media_player.play_media` action. Example action data payload: @@ -100,7 +117,7 @@ data: | `media_content_type` | no | Set to the value `favorite` | | `media_content_id` | no | (e.g., `1`) or name (e.g., `Thumbprint Radio`) of the HEOS favorite | -### Play a playlist +#### Play a playlist You can play a HEOS playlist with the `media_player.play_media` action. Example action data payload: @@ -118,7 +135,7 @@ data: | `media_content_type` | no | Set to the value `playlist` | | `media_content_id` | no | The name of the HEOS playlist | -### Play a Quick Select +#### Play a Quick Select You can play a HEOS Quick Select by number or name with the `media_player.play_media` action. Example action data payload: @@ -136,7 +153,7 @@ data: | `media_content_type` | no | Set to the value `quick_select` | | `media_content_id` | no | The quick select number (e.g., `1`) or name (e.g., `Quick Select 1`) | -### Play a URL +#### Play a URL You can play a URL through a HEOS media player using the `media_player.play_media` action. The HEOS player must be able to reach the URL. @@ -160,9 +177,9 @@ data: | `media_content_type` | no | Set to the value `url` | | `media_content_id` | no | The full URL to the stream (max 255 characters) | -## Grouping players +### Grouping players -### Join +#### Join To group HEOS media players together for synchronous playback, use the `media_player.join` action. @@ -186,7 +203,7 @@ data: | `entity_id` | yes | The media player entity whose playback will be expanded to the players specified in `group_members`. | | `group_members` | no | The player entities which will be synced with the playback from `entity_id`. | -### Unjoin +#### Unjoin For removing a HEOS player from a group, use the `media_player.unjoin` action. @@ -200,9 +217,6 @@ data: | ---------------------- | -------- | ------------------------------------------------ | | `entity_id` | yes | Remove this media player from any player groups. | -## Actions - -The HEOS integration makes available the standard [Media Player actions](/integrations/media_player#actions). ## Supported devices diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index 13a8eae3bc4..3ae49964deb 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -3,6 +3,7 @@ title: Home Connect description: Instructions on how to set up the Home Connect integration within Home Assistant. ha_category: - Binary sensor + - Button - Hub - Light - Number @@ -19,6 +20,7 @@ ha_codeowners: ha_config_flow: true ha_platforms: - binary_sensor + - button - diagnostics - light - number @@ -47,6 +49,7 @@ The integration will add one Home Assistant device for each connected home appli - Time for alarm clock for cooktops and ovens. - Multiple sensors that report the different states and events reported by the appliance. - Binary sensors that show binary states of the appliance. +- Buttons to pause, resume, and stop the running program, as well as to open the door either completely or partially. {% note %} Some appliances don't report data while they are turned off so corresponding entities will not appear in the Home Connect integration after loading until the appliances are turned on. @@ -103,69 +106,50 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c ## Actions The Home Connect integration makes various actions available. -Available actions: `set_option_active`, `set_option_selected`, `pause_program`, `resume_program`, `select_program`, `start_program` and `change_setting` +Available actions: `set_program_and_options`, and `change_setting` -### Action `home_connect.set_option_active` +### Action `home_connect.set_program_and_options` -Sets an option for the active program. +Starts or selects a program. If the `program` attribute is not set, this action sets the options for the active or the selected program. | Data attribute | Optional | Description | |---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | -| `key` | no | Key of the option. | -| `value` | no | Value of the option. | -| `unit` | yes | Unit for the option. | - -### Action `home_connect.set_option_selected` - -Sets an option for the selected program. - -| Data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | -| `key` | no | Key of the option. | -| `value` | no | Value of the option. | -| `unit` | yes | Unit for the option. | - -### Action `home_connect.pause_program` - -Pauses the current running program. - -| Data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | - -### Action `home_connect.resume_program` - -Resumes a paused program. - -| Data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | - -### Action `home_connect.select_program` - -Selects a program without starting it. - -| Data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | -| `program` | no | Program to select. | -| `key` | yes | Key of the option. | -| `value` | yes | Value of the option. | -| `unit` | yes | Unit for the option. | - -### Action `home_connect.start_program` - -Selects a program and starts it. - -| Data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `device_id` | no | Id of a device associated with the home appliance. | -| `program` | no | Program to select. | -| `key` | yes | Key of the option. | -| `value` | yes | Value of the option. | -| `unit` | yes | Unit for the option. | +| `device_id` | no | ID of the device. | +| `affects_to` | no | Selects if the program affected by the action should be the active or the selected program. | +| `program` | yes | Program to select. If set, it will start or select a program depending on `affects_to`. | +| `consumer_products_cleaning_robot_option_reference_map_id` | yes | Defines which reference map is to be used. | +| `consumer_products_cleaning_robot_option_cleaning_mode` | yes | Defines the favoured cleaning mode. | +| `consumer_products_coffee_maker_option_bean_amount` | yes | Describes the amount of coffee beans used in a coffee machine program. | +| `consumer_products_coffee_maker_option_fill_quantity` | yes | Describes the amount of water (in ml) used in a coffee machine program. | +| `consumer_products_coffee_maker_option_coffee_temperature` | yes | Describes the coffee temperature used in a coffee machine program. | +| `consumer_products_coffee_maker_option_bean_container` | yes | Defines the preferred bean container. | +| `consumer_products_coffee_maker_option_flow_rate` | yes | Defines the water-coffee contact time. The duration extends to coffee intensity. | +| `consumer_products_coffee_maker_option_multiple_beverages` | yes | Defines if double dispensing is enabled. | +| `consumer_products_coffee_maker_option_coffee_milk_ratio` | yes | Defines the amount of milk. | +| `consumer_products_coffee_maker_option_hot_water_temperature` | yes | Defines the temperature suitable for the type of tea. | +| `b_s_h_common_option_start_in_relative` | yes | Defines when the program should start, in seconds from now. For example: a value of 9000 means in 2 h 30 min. | +| `dishcare_dishwasher_option_intensiv_zone` | yes | Defines if the cleaning is done with higher spray pressure on the lower basket for very dirty pots and pans. | +| `dishcare_dishwasher_option_brilliance_dry` | yes | Defines if the program sequence is optimized with a special drying cycle to ensure more shine on glasses and plastic items. | +| `dishcare_dishwasher_option_vario_speed_plus` | yes | Defines if the program duration is shortened dynamically (up to 66% less run time) with the usual optimum cleaning and drying. | +| `dishcare_dishwasher_option_silence_on_demand` | yes | Defines if the extra silent mode is activated for a selected period of time. | +| `dishcare_dishwasher_option_half_load` | yes | Defines if economical cleaning is enabled for smaller loads. This reduces energy and water consumption and also saves time. The utensils can be placed in the upper and lower baskets. | +| `dishcare_dishwasher_option_extra_dry` | yes | Defines if improved drying for glasses and plasticware is enabled. | +| `dishcare_dishwasher_option_hygiene_plus` | yes | Defines if the cleaning is done with increased temperatures. This ensures maximum hygienic cleanliness for regular use. | +| `dishcare_dishwasher_option_eco_dry` | yes | Defines if the door is opened automatically for extra energy efficient and effective drying. | +| `dishcare_dishwasher_option_zeolite_dry` | yes | Defines if the program sequence is optimized with special drying cycle ensures improved drying for glasses, plates and plasticware. | +| `laundry_care_dryer_option_drying_target` | yes | Describes the drying target for a dryer program. For example: Iron Dry, Cupboard Dry, Extra Dry. | +| `cooking_hood_option_venting_level` | yes | Defines the required fan setting. | +| `cooking_hood_option_intensive_level` | yes | Defines the intensive setting. | +| `cooking_oven_option_setpoint_temperature` | yes | Defines the target cavity temperature, which will be hold by the oven. | +| `b_s_h_common_option_duration` | yes | Defines the run-time of the program. Afterwards, the appliance is stopped. | +| `cooking_oven_option_fast_pre_heat` | yes | Defines if the cooking compartment is heated up quickly. Please note that the setpoint temperature has to be equal to or higher than 100 °C or 212 °F. Otherwise, the fast pre-heat option is not activated. | +| `cooking_oven_option_warming_level` | yes | Defines the level of the warming drawer. | +| `laundry_care_washer_option_temperature` | yes | Defines the temperature of the washing program. | +| `laundry_care_washer_option_spin_speed` | yes | Defines the spin speed of a washer program. | +| `b_s_h_common_option_finish_in_relative` | yes | Defines when the program should end, in seconds from now. For example: a value of 9000 means in 2 h 30 min. | +| `laundry_care_washer_option_i_dos1_active` | yes | Defines if the detergent feed is activated / deactivated. (i-Dos content 1) | +| `laundry_care_washer_option_i_dos2_active` | yes | Defines if the detergent feed is activated / deactivated. (i-Dos content 2) | +| `laundry_care_washer_option_vario_perfect` | yes | Defines if a cycle saves energy (Eco Perfect) or time (Speed Perfect). | ### Action `home_connect.change_setting` diff --git a/source/_integrations/homee.markdown b/source/_integrations/homee.markdown index 1a68929510a..364aa00859a 100644 --- a/source/_integrations/homee.markdown +++ b/source/_integrations/homee.markdown @@ -10,8 +10,11 @@ ha_codeowners: - '@Taraman17' ha_domain: homee ha_platforms: + - button - cover + - light - sensor + - switch ha_integration_type: hub ha_quality_scale: bronze --- @@ -20,9 +23,11 @@ ha_quality_scale: bronze There is currently support for the following device types in Home Assistant: +- button - cover +- light - sensor - +- switch ## Prerequisites diff --git a/source/_integrations/letpot.markdown b/source/_integrations/letpot.markdown index 80f565e98b5..138886b3ee2 100644 --- a/source/_integrations/letpot.markdown +++ b/source/_integrations/letpot.markdown @@ -2,6 +2,8 @@ title: LetPot description: Instructions on how to integrate LetPot hydroponic gardens into Home Assistant. ha_category: + - Binary sensor + - Sensor - Switch - Time ha_release: 2025.2 @@ -12,6 +14,8 @@ ha_codeowners: ha_domain: letpot ha_integration_type: hub ha_platforms: + - binary_sensor + - sensor - switch - time ha_quality_scale: bronze @@ -54,10 +58,38 @@ Password: The LetPot integration provides the following entities. +#### Binary sensors + +- **Pump**: Indicates if the water pump is running (on) or idle (off). Updates may be delayed by the device until another entity updates. + - Available for LetPot Air devices, and other device models which report this value. + - Not available for LetPot Pro devices. + +Additionally, binary sensors for possible issues are available: + +- **Low nutrients**: Indicates if the nutrient solution tank used for auto mode is (almost) empty and should be refilled. + - Available for LetPot Max devices. +- **Low water**: Indicates if the water tank is (almost) empty and should be refilled. + - Available for all devices except LetPot Pro. +- **Pump error**: Indicates if the water pump detected a flow issue and should be cleaned. + - Available for some LetPot Mini and LetPot SE devices which report this value. +- **Refill error**: Indicates that the external water tank/input used for refilling in auto mode is not filling up the main water tank. If you see a refill error, check the external water tank/input and the connection to the main water tank. + - Available for LetPot Max devices. + +{% important %} +Binary sensors for issues are disabled by default. If you want to use them, you need to enable them first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities) documentation for information on how to do this. +{% endimportant %} + +#### Sensors + +For LetPot Max devices, the following sensors are available: + +- **Temperature**: Ambient temperature measured by the device. +- **Water level**: Percentage of the water tank filled with water. The official app will display 0-30% as "Low", 30-90% as "Medium", and 90% or more as "High". + #### Switches - **Power**: Main switch to turn on/off the device. Device features (like the built-in light and pump) will only operate when the power is on. -- **Pump cycling**: Turn on/off cycling of the water pump. When on, the pump will run intermittently (controlled by the device). +- **Pump cycling**: Turn on/off cycling of the water pump. When on, the pump will run intermittently (controlled by the device), which can be tracked using the **Pump** binary sensor. For devices with an alarm that allows muting the sound, the following switch is also available: diff --git a/source/_integrations/linak.markdown b/source/_integrations/linak.markdown new file mode 100644 index 00000000000..fbf77cbb16d --- /dev/null +++ b/source/_integrations/linak.markdown @@ -0,0 +1,22 @@ +--- +title: LINAK +description: Connect and control your LINAK motorized desks the IKEA Idåsen Desk integration +ha_category: + - Cover +ha_domain: linak +ha_iot_class: Local Push +ha_integration_type: virtual +ha_supporting_domain: idasen_desk +ha_supporting_integration: IKEA Idåsen Desk +ha_release: '2025.03' +ha_codeowners: + - '@abmantis' +ha_config_flow: true +ha_quality_scale: bronze +ha_platforms: + - button + - cover + - sensor +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index 2a9759608d2..2663dd0a68a 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -87,6 +87,7 @@ The following device classes are supported for numbers: - **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_direction**: Wind direction in ° - **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph ## Actions diff --git a/source/_integrations/ohme.markdown b/source/_integrations/ohme.markdown index 19270644284..bae0c70fa3e 100644 --- a/source/_integrations/ohme.markdown +++ b/source/_integrations/ohme.markdown @@ -64,6 +64,9 @@ The Ohme integration provides the following entities. - **Target percentage** - **Description**: Sets the charge target for your vehicle. - **Available for devices**: all +- **Preconditioning duration** + - **Description**: Defines how long to precondition your vehicle before the target time. `0` means preconditioning is disabled. + - **Available for devices**: all #### Selects diff --git a/source/_integrations/onedrive.markdown b/source/_integrations/onedrive.markdown index b8faac2151f..9cdd5f4f6d0 100644 --- a/source/_integrations/onedrive.markdown +++ b/source/_integrations/onedrive.markdown @@ -18,7 +18,7 @@ ha_quality_scale: bronze This integration allows you to use [OneDrive](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage) for [Home Assistant Backups](/common-tasks/general/#backups). -Backups will be created in a folder called `Home Assistant\backups_` in the `App Folder` of your OneDrive. +Backups will be created in a folder called `Home Assistant\backups_` in the `App Folder` of your OneDrive by default. `id` is part of your Home Assistant instance's unique id to allow backups from multiple instances to the same OneDrive account. The integration only has access to an application specific `Home Assistant` folder in the `App Folder` and cannot access any other parts of your OneDrive. @@ -32,9 +32,24 @@ Client ID: description: "Application ID of the app registration to be used with the integration. Uses Home Assistant provided by default." Client secret: description: "Application secret for the app registration. Uses Home Assistant provided by default." +Folder name: + description: "The name of the instance specific [backup folder](#backup-folder)." {% endconfiguration_basic %} +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Delete files permanently: + description: By default, files are put into the Recycle Bin when deleted, where they remain available for another 30 days. If you enable this option, files will be deleted immediately when they are cleaned up by the backup system. +{% endconfiguration_basic %} + +## Backup folder + +The backup folder is `root:\Apps\[Home Assistant | Graph]\backups_{id}`. This is not configurable because otherwise the integration would need permissions to write into your entire drive. You can, however, rename the application folder which is called `Home Assistant` or `Graph` in your OneDrive. + +The last folder in the hierarchy (`backups_{id}`) is always a unique folder per Home Assistant instance to ensure that backups from different instances are not mixed. The name of this folder can be set during integration setup and can be changed later through reconfiguring the integration or by renaming the folder OneDrive. + ## Requested permissions by the integration The integration will request the following permissions on your OneDrive for the integration to work: @@ -46,7 +61,6 @@ The integration will request the following permissions on your OneDrive for the Lists of permissions that the application will request. - ## Getting application credentials This integration comes with a predefined set of [application credentials](https://www.home-assistant.io/integrations/application_credentials/) through Home Assistant account linking. diff --git a/source/_integrations/pglab.markdown b/source/_integrations/pglab.markdown new file mode 100644 index 00000000000..c0c989eaa7c --- /dev/null +++ b/source/_integrations/pglab.markdown @@ -0,0 +1,61 @@ +--- +title: PG LAB Electronics +description: Instructions on how to integrate PG LAB Electronics with Home Assistant. +ha_category: + - Switch +ha_release: "2025.3" +ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - "@pglab-electronics" +ha_domain: pglab +ha_platforms: + - switch +ha_integration_type: integration +--- + +The **PG LAB Electronics** {% term integrations %} allows you to control [PG LAB Electronics](https://www.pglab.dev/) devices in Home Assistant. + +## Supported devices + +- [E-BOARD](https://www.pglab.dev/shop/p/e-board): Controller board to interface I2C devices by a local LAN connection. +- [E-RELAY](https://www.pglab.dev/shop/p/e-relay): 8 Channels relay board controlled by I2C connection. +- [E-SWITCH]: Coming soon + +Each E-BOARD device can be connected to a maximum of 8 E-RELAY boards. E-BOARD can control +up to 64 relays or 32 shutters or a mixed configuration. + +## Prerequisites + +- MQTT broker and the [MQTT integration](/integrations/mqtt/) set up in Home Assistant. +- PG LAB Electronics devices MQTT setting configured to communicate with the MQTT broker. + +Once the device is connected to your MQTT broker, it should be discovered by Home Assistant. +Add PG LAB Electronics integration. + +### Device configuration + +Configure each PG LAB Electronics devices following these steps: + +1. Power the device and connect it to your local network. +2. From your router, get the IP address of your device (for example: 192.168.1.7). +3. Connect to the internal device web server with a web browser (**don't** use 'https://...', instead, connect to 'http://192.168.1.7'). +4. Change the default device name. Use a unique, meaningful name such as E_Board_Office, or E_Board_Garden. + - **Note:** Every device **MUST** have a unique name. +5. Set up the MQTT broker address, port number, username, and password. +6. Save the configuration and restart the device. + +{% include integrations/config_flow.md %} + +## Supported features + +PG LAB Electronics relays, shutters, and switches are supported. + +- PG LAB Relays will be added as Home Assistant `switch` entities. +- The integration will also create diagnostic status sensors, with device different information. + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index edaedea530d..2809778b683 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -29,9 +29,15 @@ This sensor requires the qBittorrent Web UI enabled. The [official reference](ht The qBittorrent integration will add the following sensors: -- `sensor.qbittorrent_status`: The status of qBittorrent - `up_down`, `seeding`, `downloading` or `idle`. +- `sensor.qbittorrent_status`: The status of qBittorrent - `up_down`, `seeding`, `downloading`, or `idle`. +- `sensor.qbittorrent_connection_status`: The connection status of qBittorrent - `connected`, `firewalled`, or `disconnected`. - `sensor.qbittorrent_upload_speed`: The current total upload speed in kB/s. - `sensor.qbittorrent_download_speed`: The current total download speed in kB/s. +- `sensor.qbittorrent_upload_speed_limit`: The active qBittorrent upload speed limit (disabled by default). +- `sensor.qbittorrent_download_speed_limit`: The active qBittorrent download speed limit (disabled by default). +- `sensor.qbittorrent_alltime_upload`: The total amount of uploaded data. +- `sensor.qbittorrent_alltime_download`: The total amount of downloaded data. +- `sensor.qbittorrent_global_ratio`: The global share ratio (disabled by default). - `sensor.qbittorrent_all_torrents`: The current total torrents in qBittorrent. - `sensor.qbittorrent_active_torrents`: The current active torrents in qBittorrent. - `sensor.qbittorrent_inactive_torrents`: The current inactive torrents in qBittorrent. diff --git a/source/_integrations/qbus.markdown b/source/_integrations/qbus.markdown index d59928d6b34..90ba5881d07 100644 --- a/source/_integrations/qbus.markdown +++ b/source/_integrations/qbus.markdown @@ -41,6 +41,7 @@ There is currently support for the following **Qbus** products within Home Assis ## Available entities - **Switch**: toggles on/off outputs. +- **Light**: controls dimmer lights, allowing both on/off functionality and brightness adjustment. ## Removing the integration diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index e140d7556a8..b298f29a718 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -736,6 +736,10 @@ Prerequisites: - Reolink cameras can support a limited amount of simultaneous connections. Therefore using third-party software like Frigate, Blue Iris, or Scrypted, or using the ONVIF integration at the same time can cause the camera to drop connections. This results in short unavailabilities of the Reolink entities in Home Assistant. Especially when the connections are coming from the same device (IP) where Home Assistant is running, the Reolink cameras can get confused, dropping one connection in favor of the other originating from the same host IP. If you experience disconnections/unavailabilities of the entities, please first temporarily shut down the other connections (like Frigate) to diagnose if that is the problem. If that is indeed the problem, you could try moving the third-party software to a different host (IP address) since that is known to solve the problem most of the time. You could also try switching the protocol to FLV on Home Assistant and/or the third-party software, as that is known to be less resource-intensive on the camera. - If the Reolink entities go to unavailable for short periods, the camera may be overloaded with requests resulting in short connection drops. To resolve this, first, check if the integration is using `ONVIF push` instead of `ONVIF long polling` (resource intensive) or `Fast polling` (very resource intensive), see the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. Moreover, try switching to the FLV streaming protocol which is the least resource-intensive for the camera, see the [options](#options) section. +### Streams or recordings not playing + +- Most Reolink cameras use h265 encoding for the high resolution recording and clear stream to save storage space and bandwidth. Playback of this h265 encoding is not supported by all browsers or apps. Therefore, the high-resolution recording and/or clear stream may not function on all your devices from which you acces Home Assistant. To see if a Reolink camera is using h264 or h265 encoding, [download the diagnostics text file](/docs/configuration/troubleshooting/#download-diagnostics) and find the `"encoding main": "h265"\"h264"` in the txt file. The low-resolution recording and fluent stream always use h264 encoding and, therefore, do not suffer from this issue. + ### Reducing latency of motion events TCP push and ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling. diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown index 6824535e384..7b9ba7bec03 100644 --- a/source/_integrations/rest_command.markdown +++ b/source/_integrations/rest_command.markdown @@ -71,6 +71,11 @@ service_name: required: false type: boolean default: true + insecure_cipher: + description: Allow insecure ciphers for the request. This is useful for older servers/devices that do not support modern ciphers. + required: false + type: boolean + default: false {% endconfiguration %} ## Examples diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 3696afe4da1..5c94339fbf2 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -101,4 +101,5 @@ The following device classes are supported for sensors: - **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_direction**: Wind direction in ° - **wind_speed**: Wind speed in Beaufort, ft/s, km/h, kn, m/s, or mph diff --git a/source/_integrations/sensorpush_cloud.markdown b/source/_integrations/sensorpush_cloud.markdown new file mode 100644 index 00000000000..8fa471d9fde --- /dev/null +++ b/source/_integrations/sensorpush_cloud.markdown @@ -0,0 +1,57 @@ +--- +title: SensorPush Cloud +description: Instructions on how to integrate SensorPush Cloud devices into Home Assistant. +ha_category: + - Sensor +ha_release: 2025.3 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@sstallion' +ha_domain: sensorpush_cloud +ha_config_flow: true +ha_platforms: + - sensor +ha_integration_type: integration +ha_quality_scale: bronze +--- + +Integrates [SensorPush Cloud](https://www.sensorpush.com/) devices into Home Assistant. + +## Prerequisites + +A [G1 WiFi Gateway](https://www.sensorpush.com/products/p/g1-gateway) is required to make use of the Cloud API. To activate API access, log in to the [Gateway Cloud Dashboard](https://dashboard.sensorpush.com/) and agree to the terms of service. + +Sensor entities (temperature, humidity, barometric pressure) will not be available to Home Assistant until you have activated the device with the SensorPush app on iOS or Android. + +## Supported devices + +- [HT1 Temperature and Humidity Smart Sensor](https://www.sensorpush.com/products/p/ht1) +- [HT.w Water-Resistant Temperature / Humidity Smart Sensor](https://www.sensorpush.com/products/p/ht-w) +- [HTP.xw Extreme Accuracy Water-Resistant Temperature / Humidity / Barometric Pressure Smart Sensor](https://www.sensorpush.com/products/p/htp-xw) + +{% include integrations/config_flow.md %} + +## Sensors + +For each device, the following *sensors* are created: + +| Sensor | Description | +| :--------------------- | :------------------------------------------------------------ | +| `altitude` | Measures the altitude. (disabled by default) | +| `atmospheric_pressure` | Measures the barometric pressure. (disabled by default) | +| `battery_voltage` | Measures the battery voltage. (disabled by default) | +| `dewpoint` | Measures the dew point. (disabled by default) | +| `humidity` | Measures the relative humidity. | +| `signal_strength` | Measures the Bluetooth signal strength. (disabled by default) | +| `temperature` | Measures the temperature. | +| `vapor_pressure` | Measures the vapor-pressure deficit. (disabled by default) | + +## Known limitations + +- `atmospheric_pressure` is not available on HT1 and HT.w series devices. + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index 7be7a9d6ed8..da7f6ff3721 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -19,7 +19,7 @@ ha_platforms: ha_integration_type: integration --- -The Squeezebox integration allows you to control music players from the [Lyrion Music Server](https://lyrion.org/) (LMS) ecosystem. Lyrion Music Server was formerly known as [Logitech Media Server](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29). +The Squeezebox integration allows you to control music players from the [Lyrion Music Server](https://lyrion.org/) (LMS) ecosystem. Lyrion Music Server was formerly known as [Logitech Media Server](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29). This integration connects to an existing LMS server and provides both media players and sensors for monitoring server status. @@ -48,16 +48,104 @@ transporter_toslink: target: entity_id: media_player.transporter data: - media_content_id: "source:toslink" - media_content_type: "music" + media_content_id: 'source:toslink' + media_content_type: 'music' +``` + +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Browse limit: + description: Maximum number of items to include when browsing media or in a playlist. +Volume step: + description: Amount to adjust the volume when turning volume up or down. +{% endconfiguration_basic %} + +## Announce + +The Squeezebox media player entity supports the "announce" parameter in the `media_player.play_media` action. When media is played with announce:true, the current state of the media player is saved, the media is then played, and when playing is finished, the original state is restored. For example, if the media player is on and playing a track, once the announcement is finished, the track will resume playing at the same point it was paused by the announcement. If the media player was off, it will be turned off again after playing the announcement. + +### Extra Keys + +The following extra keys are available to modify the announcement + +| Data attribute | Optional | Description | +| ------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `announce_volume` | yes | Specifies the volume at which the announcement should play. The value must be between 0 and 1, where 0.1 represents 10% of the player's volume, 0.2 represents 20%, etc. | +| `announce_timeout` | yes | Specify the maximum length of the announcement in seconds after which the original media will be resumed. | + +These extra keys are optional. If announce_volume is unspecified, the announcement will play at the current volume of the player. If announce_timeout is unspecified, the announcement will play until completion. + +### Examples + +Playing a local file as an announcement: + +```yaml +action: media_player.play_media +target: + entity_id: media_player.squeezebox +data: + media_content_type: music + media_content_id: media-source://media_source/local/doorbell.mp3 + announce: true +``` + +Playing a local file as an announcement with volume of 20 and timeout of 60 seconds: + +```yaml +action: media_player.play_media +target: + entity_id: media_player.squeezebox +data: + media_content_type: music + media_content_id: media-source://media_source/local/doorbell.mp3 + announce: true + extra: + announce_volume: 0.2 + announce_timeout: 60 +``` + +### Announcements and Text to Speech (TTS) + +When using the "Text-to-speech (TTS): Speak" action, Home Assistant automatically sets the announce parameter as true, and the announcement features, such as pausing current playback, will be used. + +However, the "Text-to-speech (TTS): Speak" action doesn't support the extra keys described above. If you wish to use announce_volume and/or announce_timeout with TTS, you need to use media-source://tts/(tts_provider) to construct media_content_id as shown below. + +#### Example + +Play announcement using Text-to-speech (TTS) action + +```yaml +action: tts.speak +data: + media_player_entity_id: media_player.squeezebox + message: There's someone at the door + cache: false +target: + entity_id: tts.google_translate_en_co_uk +``` + +Play announcement using TTS media-source with announce_volume and announce_timeout + +```yaml +action: media_player.play_media +target: + entity_id: media_player.squeezebox +data: + media_content_type: music + media_content_id: media-source://tts/tts.google_translate_en_co_uk?message="There's someone at the door" + announce: true + extra: + announce_volume: 0.2 + announce_timeout: 60 ``` ## Entities ### Binary sensors -- **Needs restart**: Server Service needs to be restarted (typically, this is needed to apply updates). -- **Library rescan**: The music library is currently being scanned by LMS (depending on the type of scan, some content may be unavailable). +- **Needs restart**: Server Service needs to be restarted (typically, this is needed to apply updates). +- **Library rescan**: The music library is currently being scanned by LMS (depending on the type of scan, some content may be unavailable). ### Sensors @@ -78,11 +166,11 @@ Call a custom Squeezebox JSON-RPC API. See documentation for this interface on `http://HOST:PORT/html/docs/cli-api.html?player=` where HOST and PORT are the host name and port for your Lyrion Music Server. -| Data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Squeezebox entities where to run the API method. -| `command` | no | Command to pass to Lyrion Music Server (p0 in the CLI documentation). -| `parameters` | yes | Array of additional parameters to pass to Lyrion Music Server (p1, ..., pN in the CLI documentation). +| Data attribute | Optional | Description | +| -------------- | -------- | ----------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Name(s) of the Squeezebox entities where to run the API method. | +| `command` | no | Command to pass to Lyrion Music Server (p0 in the CLI documentation). | +| `parameters` | yes | Array of additional parameters to pass to Lyrion Music Server (p1, ..., pN in the CLI documentation). | This action can be used to integrate any Squeezebox action to an automation. @@ -92,7 +180,7 @@ For example, to play an album from your collection, create an IFTTT applet like - Trigger: Google Assistant, with sentence: `I want to listen to album $` - Action: JSON post query with such JSON body: -`{ "entity_id": "media_player.squeezebox_radio", "command": "playlist", "parameters": ["loadtracks", "album.titlesearch={{TextField}}"] }` + `{ "entity_id": "media_player.squeezebox_radio", "command": "playlist", "parameters": ["loadtracks", "album.titlesearch={{TextField}}"] }` This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTTT cannot escape the text field. @@ -102,11 +190,11 @@ Call a custom Squeezebox JSON-RPC API. The result of the query will be stored in See documentation for this interface on `http://HOST:PORT/html/docs/cli-api.html?player=` where HOST and PORT are the host name and port for your Lyrion Music Server. -| Data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Squeezebox entities where to run the API method. -| `command` | no | Command to pass to Lyrion Music Server (p0 in the CLI documentation). -| `parameters` | yes | Array of additional parameters to pass to Lyrion Music Server (p1, ..., pN in the CLI documentation). +| Data attribute | Optional | Description | +| -------------- | -------- | ----------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Name(s) of the Squeezebox entities where to run the API method. | +| `command` | no | Command to pass to Lyrion Music Server (p0 in the CLI documentation). | +| `parameters` | yes | Array of additional parameters to pass to Lyrion Music Server (p1, ..., pN in the CLI documentation). | This action can be used to integrate a Squeezebox query into an automation. For example, in a Python script, you can get a list of albums available by an artist like this: `hass.services.call("squeezebox", "call_query", { "entity_id": "media_player.kitchen", "command": "albums", "parameters": ["0", "20", "search:beatles", "tags:al"] })` diff --git a/source/_integrations/synology_dsm.markdown b/source/_integrations/synology_dsm.markdown index 8ccbaac58af..4e39529f945 100644 --- a/source/_integrations/synology_dsm.markdown +++ b/source/_integrations/synology_dsm.markdown @@ -67,7 +67,7 @@ If you denied access to all locations and applications it is normal to receive a ## Backup location -The NAS can also be used as a {% term backup %} location, without the need to add the NAS as a network drive to Home Assistant. For this you need to setup the correct permissions for the user (_see [Separate User Configuration](#separate-user-configuration) above_), afterwards, you will be able to select the shared folder and define a relative path to be used as a backup location in the integration options ({% my integrations title="**Settings** > **Devices & services**" %} > **Synology DSM** > _select the instance_ > **Configure**) +The NAS can also be used as a {% term backup %} location, without the need to add the NAS as a network drive to Home Assistant (_this requires DSM 6.0 and higher_). For this you need to setup the correct permissions for the user (_see [Separate User Configuration](#separate-user-configuration) above_), afterwards, you will be able to select the shared folder and define a relative path to be used as a backup location in the integration options ({% my integrations title="**Settings** > **Devices & services**" %} > **Synology DSM** > _select the instance_ > **Configure**) {% important %} diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index bf39c7b5f5e..cbab7d2f921 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -9,6 +9,7 @@ ha_category: - Sensor - Water heater - Weather + - Switch ha_release: 0.41 ha_iot_class: Cloud Polling ha_codeowners: @@ -37,6 +38,7 @@ There is currently support for the following device types within Home Assistant: - [Presence detection](#presence-detection) - Sensor - for some additional information of the zones. - Weather - for information about the current weather at the location of your Tado home. +- Switch - for controlling child lock on supported devices ## Unsupported device types diff --git a/source/_integrations/thermopro.markdown b/source/_integrations/thermopro.markdown index 4a1131ed9cc..101095970ad 100644 --- a/source/_integrations/thermopro.markdown +++ b/source/_integrations/thermopro.markdown @@ -31,3 +31,31 @@ Integrates [ThermoPro](https://buythermopro.com/) devices into Home Assistant. The ThermoPro integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. {% include integrations/config_flow.md %} + +## Buttons + +These {% term actions %} allow one to set the time on supported devices (TP358, TP393) via Home Assistant. + +### Button `Set Date&Time` + +Sets the date & time on target devices to the system time in 24-hour notation. +The device is capable of showing 12-hour notation (AM/PM) but setting this is currently not implemented. + +For example, the following automation sets the datetime of the thermometer each day. + +{% raw %} + +```yaml +mode: single +triggers: + - trigger: time + at: "03:03:03" +conditions: [] +actions: + - action: button.press + target: + entity_id: button.tp_358_xxxx_your_device_set_date_time + data: {} +``` + +{% endraw %} diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 5102d01cb53..2d58eb1dd27 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -159,6 +159,10 @@ Entities appear for each Traffic Rule. The switches can be identified from icon Entities appear for each Policy-Based Routing Rule. The switches can be identified from icon {% icon "mdi:routes" %}. +### Control Zone-Based Firewall Policies + +Entities appear for each Zone-Based Firewall Policy. The switches can be identified from icon {% icon "mdi:security-network" %}. + ## Sensor ### Bandwidth sensor diff --git a/source/_integrations/voip.markdown b/source/_integrations/voip.markdown index 8dca402a195..aeb38fe6693 100644 --- a/source/_integrations/voip.markdown +++ b/source/_integrations/voip.markdown @@ -25,6 +25,8 @@ As an alternative, the [Grandstream HT802](https://www.amazon.com/Grandstream-GS Also, the Grandstream HT812 has been reported to work. Home Assistant supports using only one of the two phone ports. +If you are running Home Assistant on a machine with other VoIP software, you can configure the port the **VoIP** {%term integration %} listens on in the configuration. For outgoing calls, you can specify a **SIP user** value that will be sent to the phone in the **From** header, if required. +

Connecting a phone to Home Assistant requires an adapter. diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index d41fc5fbd80..4e0c327ea85 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -32,8 +32,8 @@ with route alternatives and travel times between two locations. | Data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------- | --------| -| `origin` | no | The origin of the route | "51.330436, 3.802043" | -| `destination` | no | The destination of the route | "51.330436, 3.802043" | +| `origin` | no | The origin of the route | "51.330436, 3.802043", "person.fred" | +| `destination` | no | The destination of the route | "51.330436, 3.802043", "zone.work", "Work" | | `region` | no | The region. Controls which waze server is used. | "us" | | `units` | yes | Which unit system to use | metric | | `vehicle_type` | yes | Which vehicle to use | "car" | diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index a94b16e5ca8..b784d1fadf1 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -162,6 +162,35 @@ preset_modes: type: list {% endconfiguration %} +## Counter actions + +Widget that displays buttons to increment, decrement and reset a [counter](/integrations/counter). + +

+ Screenshot of the tile card with counter actions feature + Screenshot of the tile card with counter actions feature +

+ +```yaml +features: + - type: "counter-actions" + actions: + - increment + - decrement + - reset +``` + +{% configuration features %} +type: + required: true + description: "`counter-actions`" + type: string +actions: + required: true + description: List of actions to show on the card. The list can contain `increment`, `decrement`, and `reset`. + type: list +{% endconfiguration %} + ## Cover open/close Widget that displays buttons to open, close, or stop a [cover](/integrations/cover). @@ -560,6 +589,27 @@ type: type: string {% endconfiguration %} +## Toggle + +Widget that displays a button to toggle a [switch](/integrations/switch) or [input boolean](/integrations/input_boolean) entity on or off. + +

+ Screenshot of the tile card with the toggle feature + Screenshot of the tile card with the toggle feature +

+ +```yaml +features: + - type: "toggle" +``` + +{% configuration features %} +type: + required: true + description: "`toggle`" + type: string +{% endconfiguration %} + ## Update actions Widget that displays actions to install or skip an [update](/integrations/update). diff --git a/source/images/dashboards/features/counter_actions.png b/source/images/dashboards/features/counter_actions.png new file mode 100644 index 00000000000..273adcdc641 Binary files /dev/null and b/source/images/dashboards/features/counter_actions.png differ diff --git a/source/images/dashboards/features/toggle.png b/source/images/dashboards/features/toggle.png new file mode 100644 index 00000000000..29a1f68fd63 Binary files /dev/null and b/source/images/dashboards/features/toggle.png differ