"
```
### Configuration samples
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 43431e6d7ba7..8f1f4a006d92 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -308,6 +308,11 @@ alarm_control_panel:
description: Defines an action to run when the alarm is disarmed.
required: false
type: action
+ optimistic:
+ description: Flag that defines if the alarm control panel works in optimistic mode. When enabled, the alarm control panel's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the alarm control panel will only update when the `state` template returns a new value.
+ required: false
+ type: boolean
+ default: false
state:
description: "Defines a template to set the state of the alarm panel. Only the states `armed_away`, `armed_home`, `armed_night`, `armed_vacation`, `arming`, `disarmed`, `pending`, `triggered` and `unavailable` are used."
required: false
@@ -828,14 +833,19 @@ fan:
required: true
type: map
keys:
- oscillating:
- description: "Defines a template to get the osc state of the fan. Valid values: `true`, `false`."
- required: false
- type: template
direction:
description: "Defines a template to get the direction of the fan. Valid values: `forward`, `reverse`."
required: false
type: template
+ optimistic:
+ description: Flag that defines if the fan works in optimistic mode. When enabled, the fan's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the fan will only update when the `state` template returns a new value.
+ required: false
+ type: boolean
+ default: false
+ oscillating:
+ description: "Defines a template to get the oscillation state of the fan. Valid values: `true`, `false`."
+ required: false
+ type: template
percentage:
description: Defines a template to get the speed percentage of the fan.
required: false
@@ -1197,6 +1207,11 @@ light:
required: false
type: template
default: optimistic
+ optimistic:
+ description: Flag that defines if the light works in optimistic mode. When enabled, the light's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the light will only update when the `state` template returns a new value.
+ required: false
+ type: boolean
+ default: false
rgb:
description: Defines a template to get the RGB color of the light. Must render a tuple or a list (red, green, blue).
required: false
@@ -1441,13 +1456,14 @@ lock:
required: false
type: action
optimistic:
- description: Flag that defines if the lock works in optimistic mode.
+ description: Flag that defines if the lock works in optimistic mode. When enabled, the lock's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the lock will only update when the `state` template returns a new value.
required: false
type: boolean
default: false
state:
description: Defines a template to set the state of the lock. Valid output values from the template are `locked`, `unlocked`, `open`, `locking`, `unlocking`, `opening`, and `jammed`, which are directly mapped to the corresponding states. In addition, `true` and `on` are valid as synonyms to `locked` while `false` and `off` are valid as synonyms to `unlocked`.
- required: true
+ required: false
+ default: optimistic
type: template
unlock:
description: Defines an action to run when the lock is unlocked.
@@ -1626,7 +1642,7 @@ number:
type: template
default: 0.0
optimistic:
- description: Flag that defines if number works in optimistic mode. When enabled, the number's state will update immediately when changed through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the number will only update when the `state` template returns a new value.
+ description: Flag that defines if the number works in optimistic mode. When enabled, the number's state will update immediately when changed through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the number will only update when the `state` template returns a new value.
required: false
type: boolean
default: false
@@ -1726,7 +1742,7 @@ select:
type: map
keys:
optimistic:
- description: Flag that defines if select works in optimistic mode. When enabled, the select's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the select will only update when the `state` template returns a new value.
+ description: Flag that defines if the select works in optimistic mode. When enabled, the select's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the select will only update when the `state` template returns a new value.
required: false
type: boolean
default: false
@@ -1980,6 +1996,11 @@ switch:
required: true
type: map
keys:
+ optimistic:
+ description: Flag that defines if the switch works in optimistic mode. When enabled, the switch's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the switch will only update when the `state` template returns a new value.
+ required: false
+ type: boolean
+ default: false
state:
description: Defines a template to set the state of the switch. If not defined, the switch will optimistically assume all commands are successful.
required: false
@@ -2155,6 +2176,11 @@ vacuum:
description: Defines an action to run when the vacuum is given a locate command.
required: false
type: action
+ optimistic:
+ description: Flag that defines if the vacuum works in optimistic mode. When enabled, the vacuum's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the vacuum will only update when the `state` template returns a new value.
+ required: false
+ type: boolean
+ default: false
pause:
description: Defines an action to run when the vacuum is paused.
required: false
@@ -2174,6 +2200,7 @@ vacuum:
state:
description: "Defines a template to get the state of the vacuum. Valid value: `docked`/`cleaning`/`idle`/`paused`/`returning`/`error`"
required: false
+ default: optimistic
type: template
stop:
description: Defines an action to run when the vacuum is stopped.
diff --git a/source/_integrations/togrill.markdown b/source/_integrations/togrill.markdown
new file mode 100644
index 000000000000..1571e6de3a5c
--- /dev/null
+++ b/source/_integrations/togrill.markdown
@@ -0,0 +1,65 @@
+---
+title: ToGrill Bluetooth BBQ thermometers
+description: Control and monitor your ToGrill compatible BBQ thermometers.
+ha_iot_class: Local Push
+ha_config_flow: true
+ha_release: '2025.9'
+ha_category:
+ - Event
+ - Sensor
+ - Number
+ha_domain: togrill
+ha_bluetooth: true
+ha_platforms:
+ - event
+ - sensor
+ - number
+ha_integration_type: device
+ha_codeowners:
+ - '@elupus'
+ha_quality_scale: bronze
+---
+
+The ToGrill {% term integration %} allows you to connect your ToGrill compatible Bluetooth grill thermometer.
+
+{% tip %}
+
+The recommended way to connect the device to Home Assistant is by using an [ESPHome Bluetooth Proxy](https://esphome.io/projects/?type=bluetooth), as they provide the best experience.
+
+{% endtip %}
+
+{% include integrations/config_flow.md %}
+
+Home Assistant will display a list of addresses of the available desks, and you just need to select the one you want to add. Repeat the process to add more than one desk.
+
+{% note %}
+When the Home Assistant integration is active, it will take exclusive control over the device and block access by other controllers like the standard smart phone applications.
+{% endnote %}
+
+## Known working devices
+
+Many ToGrill compatible devices exist from many different vendors. Only a subset has been tested successfully. These are known to work. Other detected devices may work or may not work as expected.
+
+| Device | Model |
+|----------------------------------|--------|
+| Rubicson - BBQ probe thermometer | Pro-05 |
+
+## Events
+
+**Probe X**: The most recently triggered alarm or event on the probe. The following event types are expected: `alarm`, `acknowledge`, `disconnected`.
+
+## Sensors
+
+**Probe X**: The current temperature of the given temperature probe
+**Battery**: The current battery level of the device.
+
+## Numbers
+
+**Target X**: The target temperature of the given temperature probe. Set value to 0 to disable target alarm.
+**Alarm interval**: The interval in minutes between successive alarms.
+
+## 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/tuya.markdown b/source/_integrations/tuya.markdown
index 635a8276d1ba..a3485cfd400d 100644
--- a/source/_integrations/tuya.markdown
+++ b/source/_integrations/tuya.markdown
@@ -17,6 +17,7 @@ ha_category:
- Siren
- Switch
- Vacuum
+ - Valve
ha_iot_class: Cloud Push
ha_release: 0.74
ha_config_flow: true
@@ -43,6 +44,7 @@ ha_platforms:
- siren
- switch
- vacuum
+ - valve
ha_dhcp: true
ha_integration_type: hub
---
diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown
index 9356c1a03d2c..05130c5afc73 100644
--- a/source/_integrations/vacuum.mqtt.markdown
+++ b/source/_integrations/vacuum.mqtt.markdown
@@ -208,14 +208,14 @@ set_fan_speed_topic:
required: false
type: string
state_topic:
- description: "The MQTT topic subscribed to receive state messages from the vacuum. Messages received on the `state_topic` must be a valid JSON dictionary, with a mandatory `state` key and optionally `battery_level` and `fan_speed` keys as shown in the [example](#configuration-example)."
+ description: "The MQTT topic subscribed to receive state messages from the vacuum. Messages received on the `state_topic` must be a valid JSON dictionary, with a mandatory `state` key and optionally `fan_speed` keys as shown in the [example](#configuration-example)."
required: false
type: string
supported_features:
- description: "List of features that the vacuum supports (possible values are `start`, `stop`, `pause`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)."
+ description: "List of features that the vacuum supports (possible values are `start`, `stop`, `pause`, `return_home`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)."
required: false
type: [string, list]
- default: "`start`, `stop`, `return_home`, `status`, `battery`, `clean_spot`"
+ default: "`start`, `stop`, `return_home`, `status`, `clean_spot`"
unique_id:
description: An ID that uniquely identifies this vacuum. If two vacuums have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery.
required: false
@@ -234,7 +234,6 @@ mqtt:
- pause
- stop
- return_home
- - battery
- status
- locate
- clean_spot
@@ -312,7 +311,6 @@ MQTT payload:
```json
{
- "battery_level": 61,
"state": "docked",
"fan_speed": "off"
}
diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown
index 9d3888052c6f..b4c434131286 100644
--- a/source/_integrations/yolink.markdown
+++ b/source/_integrations/yolink.markdown
@@ -24,6 +24,7 @@ ha_platforms:
- light
- lock
- number
+ - select
- sensor
- siren
- switch
@@ -102,6 +103,8 @@ The integration is tested and verified for the following devices from YoLink:
- YS8015-UC (X3 Outdoor Temperature & Humidity Sensor)
- YS8017-UC (Thermometer)
- YS8023-UC (Hygrometer Thermometer)
+- YS4102-UC (Sprinkler)
+- YS4103-UC (Sprinkler Timer)
## Actions
diff --git a/source/_redirects b/source/_redirects
index 96b72be83663..8c8f4f5a22a1 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -586,6 +586,7 @@ layout: null
/integrations/lirc /more-info/removed-integration 301
/integrations/life360 /more-info/removed-integration 301
/integrations/lifx_legacy /more-info/removed-integration 301
+/integrations/linear_garage_door /more-info/removed-integration 301
/integrations/linksys_ap /more-info/removed-integration 301
/integrations/linky /more-info/removed-integration 301
/integrations/liveboxplaytv /more-info/removed-integration 301
@@ -598,6 +599,7 @@ layout: null
/integrations/mailbox /more-info/removed-integration 301
/integrations/mazda /more-info/removed-integration 301
/integrations/mcp23017 /more-info/removed-integration 301
+/integrations/mercury_nz /more-info/removed-integration 301
/integrations/mhz19 /more-info/removed-integration 301
/integrations/myq /blog/2023/11/06/removal-of-myq-integration/ 301
/integrations/miflora /integrations/xiaomi_ble
diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown
index 592a7561eccb..22cb4343ecbd 100644
--- a/source/dashboards/features.markdown
+++ b/source/dashboards/features.markdown
@@ -42,6 +42,28 @@ Features can be enabled on the following cards:

+## History chart
+
+Widget that displays the history of a [sensor](/integrations/sensor) or [binary_sensor](/integrations/binary_sensor).
+
+
+
+
+ Screenshots of the tile card with the history chart feature
+
+
+```yaml
+features:
+ - type: "history-chart"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`history-chart`"
+ type: string
+{% endconfiguration %}
+
## Alarm modes
Widget that displays buttons to arm and disarm an [alarm](/integrations/alarm_control_panel).
@@ -74,6 +96,27 @@ modes:
type: list
{% endconfiguration %}
+## Bar gauge
+
+Widget that displays the state of a numeric [sensor](/integrations/sensor), with unit of measurement %, as a horizontal bar.
+
+
+
+ Screenshots of the tile card with the bar gauge feature
+
+
+```yaml
+features:
+ - type: "bar-gauge"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`bar-gauge`"
+ type: string
+{% endconfiguration %}
+
## Button
Widget that displays buttons to control [button](/integrations/button) or [script](/integrations/script).
@@ -322,6 +365,69 @@ type:
type: string
{% endconfiguration %}
+## Date
+
+Widget that displays a button to select a date using the date picker dialog for the [date](/integrations/date), [datetime](/integrations/datetime), and [input datetime](/integrations/input_datetime) entities.
+
+
+
+ Screenshot of the tile card with the date feature
+
+
+```yaml
+features:
+ - type: "date"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`date`"
+ type: string
+{% endconfiguration %}
+
+## Fan direction
+
+Widget that displays controls to change direction for a [fan](/integrations/fan).
+
+
+
+ Screenshot of the tile card with the fan direction feature
+
+
+```yaml
+features:
+ - type: "fan-direction"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`fan-direction`"
+ type: string
+{% endconfiguration %}
+
+## Fan oscillate
+
+Widget that displays controls to change oscillation state for a [fan](/integrations/fan).
+
+
+
+ Screenshot of the tile card with the fan oscillate feature
+
+
+```yaml
+features:
+ - type: "fan-oscillate"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`fan-oscillate`"
+ type: string
+{% endconfiguration %}
+
## Fan preset modes
Widget that displays buttons or icons to control the preset mode for a [fan](/integrations/fan).
@@ -546,6 +652,27 @@ type:
type: string
{% endconfiguration %}
+## Media player playback controls
+
+Widget that displays playback controls for a [media player](/integrations/media_player).
+
+
+
+ Screenshot of the tile card with media player playback feature
+
+
+```yaml
+features:
+ - type: "media-player-playback"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`media-player-playback`"
+ type: string
+{% endconfiguration %}
+
## Media player volume slider
Widget that displays a slider to control the volume for a [media player](/integrations/media_player).
@@ -715,6 +842,48 @@ commands:
type: list
{% endconfiguration %}
+## Valve open/close
+
+Widget that displays buttons to open, close, or stop a [valve](/integrations/valve).
+
+
+
+ Screenshot of the tile card with valve open/close feature
+
+
+```yaml
+features:
+ - type: "valve-open-close"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`valve-open-close`"
+ type: string
+{% endconfiguration %}
+
+## Valve position
+
+Widget that displays a slider to control the position for a [valve](/integrations/valve).
+
+
+
+ Screenshot of the tile card with the valve position feature
+
+
+```yaml
+features:
+ - type: "valve-position"
+```
+
+{% configuration features %}
+type:
+ required: true
+ description: "`valve-position`"
+ type: string
+{% endconfiguration %}
+
## Water heater operation modes
Widget that displays buttons to control the operation mode of a [water heater](/integrations/water_heater).
diff --git a/source/images/dashboards/features/bar-gauge.png b/source/images/dashboards/features/bar-gauge.png
new file mode 100644
index 000000000000..7dad15d5f7d5
Binary files /dev/null and b/source/images/dashboards/features/bar-gauge.png differ
diff --git a/source/images/dashboards/features/date.png b/source/images/dashboards/features/date.png
new file mode 100644
index 000000000000..8359ba146cbb
Binary files /dev/null and b/source/images/dashboards/features/date.png differ
diff --git a/source/images/dashboards/features/fan_direction.png b/source/images/dashboards/features/fan_direction.png
new file mode 100644
index 000000000000..8889c240a0de
Binary files /dev/null and b/source/images/dashboards/features/fan_direction.png differ
diff --git a/source/images/dashboards/features/fan_oscillate.png b/source/images/dashboards/features/fan_oscillate.png
new file mode 100644
index 000000000000..e72300bfb112
Binary files /dev/null and b/source/images/dashboards/features/fan_oscillate.png differ
diff --git a/source/images/dashboards/features/history-chart-line.png b/source/images/dashboards/features/history-chart-line.png
new file mode 100644
index 000000000000..5b19fc379e21
Binary files /dev/null and b/source/images/dashboards/features/history-chart-line.png differ
diff --git a/source/images/dashboards/features/history-chart-timeline.png b/source/images/dashboards/features/history-chart-timeline.png
new file mode 100644
index 000000000000..1f56921e1842
Binary files /dev/null and b/source/images/dashboards/features/history-chart-timeline.png differ
diff --git a/source/images/dashboards/features/media_player_playback.png b/source/images/dashboards/features/media_player_playback.png
new file mode 100644
index 000000000000..ef5d4ecd5d3f
Binary files /dev/null and b/source/images/dashboards/features/media_player_playback.png differ
diff --git a/source/images/dashboards/features/valve_open_close.png b/source/images/dashboards/features/valve_open_close.png
new file mode 100644
index 000000000000..45df500b1c9a
Binary files /dev/null and b/source/images/dashboards/features/valve_open_close.png differ
diff --git a/source/images/dashboards/features/valve_position.png b/source/images/dashboards/features/valve_position.png
new file mode 100644
index 000000000000..f107c44cec01
Binary files /dev/null and b/source/images/dashboards/features/valve_position.png differ
diff --git a/source/images/integrations/enphase_envoy/enphase_envoy_collar_and_ccc_data.png b/source/images/integrations/enphase_envoy/enphase_envoy_collar_and_ccc_data.png
new file mode 100644
index 000000000000..32d7f6371f83
Binary files /dev/null and b/source/images/integrations/enphase_envoy/enphase_envoy_collar_and_ccc_data.png differ