From 4d32dcf7129a9389643b1ab5aacff9e041f003c9 Mon Sep 17 00:00:00 2001 From: Fabian Leutgeb Date: Fri, 1 Aug 2025 03:22:19 +0200 Subject: [PATCH 01/58] Linked entities for HomeKit valve duration characteristics (#40222) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/homekit.markdown | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 8338f889af69..27be6c3e4a6a 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -194,6 +194,14 @@ homekit: description: The `entity_id` of a `sensor` entity to use as the temperature sensor of the air purifier accessory. required: false type: string + linked_valve_duration: + description: The `entity_id` of an `input_number` entity to use as the default run time of a valve switch (switch type `faucet`, `shower`, `sprinkler`, or `valve`), or valve accessory. Minimum value `300` seconds. Maximum value `3600` seconds. Step size `300` seconds. Changes in HomeKit will change the sensor state (and vice versa). + required: false + type: string + linked_valve_end_time: + description: The `entity_id` of a `sensor` (timestamp) entity to use for calculating the remaining time of a valve switch (switch type `faucet`, `shower`, `sprinkler`, or `valve`), or valve accessory. The end time has to be maintained in Home Assistant. HomeKit will not update the state of this sensor. + required: false + type: string low_battery_threshold: description: Minimum battery level before the accessory starts reporting a low battery. required: false @@ -450,10 +458,10 @@ The following integrations are currently supported: | sensor | CarbonMonoxideSensor | All sensors that have `carbon_monoxide` as their `device_class` | | sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `carbon_dioxide` as their `device_class` | | sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | -| switch | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. | +| switch | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. Valve switches (type `faucet`, `shower`, `sprinkler`, or `valve`) can be linked with `linked_valve_duration` and `linked_valve_end_time`. | | water_heater | WaterHeater | All `water_heater` devices. | | device_automation | DeviceTriggerAccessory | All devices that support triggers. | -| valve | Valve | All `valve` devices. | +| valve | Valve | All `valve` devices can be linked with `linked_valve_duration` and `linked_valve_end_time`. | # Device triggers From ae3dfc9a3dcae76824a9693780c689caf0399f02 Mon Sep 17 00:00:00 2001 From: Thomas D <11554546+thomasddn@users.noreply.github.com> Date: Sat, 2 Aug 2025 20:02:08 +0200 Subject: [PATCH 02/58] Add sensor to Qbus integration (#40130) --- source/_integrations/qbus.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/qbus.markdown b/source/_integrations/qbus.markdown index e56314e01b14..63bbec40cc07 100644 --- a/source/_integrations/qbus.markdown +++ b/source/_integrations/qbus.markdown @@ -7,12 +7,14 @@ ha_category: - Hub - Light - Scene + - Sensor - Switch ha_platforms: - climate - cover - light - scene + - sensor - switch ha_iot_class: Local Push ha_codeowners: @@ -52,6 +54,7 @@ There is currently support for the following **Qbus** products within Home Assis - **Cover**: operate covers with support for actions like open, close, stop, position adjustment, and tilt — depending on your setup. - **Light**: control dimmer lights, allowing both on/off functionality and brightness adjustment. - **Scene**: activate predefined scenes. +- **Sensor**: display sensor values from devices like gauges, humidity sensors, thermostats, ventilation, and weather stations. - **Switch**: toggle on/off outputs. ## Removing the integration From f4816842e91a7878c620f200596de99d691e1670 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Sun, 3 Aug 2025 07:04:24 +0200 Subject: [PATCH 03/58] Add direct message notifier to PlayStation Network (#40249) --- source/_integrations/playstation_network.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/playstation_network.markdown b/source/_integrations/playstation_network.markdown index fe16a2ee43fe..c028a2769a0b 100644 --- a/source/_integrations/playstation_network.markdown +++ b/source/_integrations/playstation_network.markdown @@ -107,6 +107,10 @@ After adding a friend, a new device will be created with the following entities: - **Avatar**: Displays the friend's current avatar. - **Now playing**: Displays the current game title image if the friend is playing a game. +### Notifier + +- **Direct message**: Sends a private message to your friend through the PlayStation Network. + ## Data updates This integration retrieves data from the PlayStation Network every 30 seconds to ensure timely updates. From f808556f9d49142d193c776c705be4903239a8ff Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Mon, 4 Aug 2025 08:22:09 +0200 Subject: [PATCH 04/58] Add jitter sensor to Ping integration (#40259) --- source/_integrations/ping.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 2bbd6fb8e453..4057531e364b 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -59,6 +59,7 @@ The integration exposes the different round trip times milliseconds as entities: - `Round Trip Time Average` - the average round trip time - `Round Trip Time Minimum` - the shortest round trip time - `Round Trip Time Maximum` - the longest round trip time +- `Jitter` - the variation in round trip times **These entities are disabled by default and can be enabled in the UI if needed.** From 3f4c9773e20d04f5755a62218bc87b55a53587a2 Mon Sep 17 00:00:00 2001 From: hanwg Date: Mon, 4 Aug 2025 20:34:38 +0800 Subject: [PATCH 05/58] Update Telegram bot events (#39983) --- source/_integrations/telegram_bot.markdown | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown index be334db9ef3f..2024d362205c 100644 --- a/source/_integrations/telegram_bot.markdown +++ b/source/_integrations/telegram_bot.markdown @@ -468,10 +468,17 @@ args: "" from_first: "" from_last: "" user_id: "" +id: "" chat_id: "" chat: "" date: "" message_thread_id: "" +bot: + config_entry_id: "" + id: "" + first_name: "" + last_name: "" + username: "" ``` Any other message not starting with `/` will be processed as simple text, firing a `telegram_text` event on the event bus with the following `event_data`: @@ -481,10 +488,16 @@ text: "some text received" from_first: "" from_last: "" user_id: "" +id: "" chat_id: "" -chat: "" date: "" message_thread_id: "" +bot: + config_entry_id: "" + id: "" + first_name: "" + last_name: "" + username: "" ``` If the message is sent from a [press from an inline button](https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), for example, a callback query is received, and Home Assistant will fire a `telegram_callback` event with: @@ -498,6 +511,12 @@ user_id: "" id: "" chat_instance: "" chat_id: "" +bot: + config_entry_id: "" + id: "" + first_name: "" + last_name: "" + username: "" ``` ### Configuration samples From be12f7ed2f6dc852ad4c9ed78e6d3a41dd5bfb5e Mon Sep 17 00:00:00 2001 From: Markus Adrario Date: Mon, 4 Aug 2025 16:47:26 +0200 Subject: [PATCH 06/58] Add zeroconf to Homee (#40246) --- source/_integrations/homee.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/homee.markdown b/source/_integrations/homee.markdown index 2d882d8c378b..0e2ba87673e1 100644 --- a/source/_integrations/homee.markdown +++ b/source/_integrations/homee.markdown @@ -17,6 +17,7 @@ ha_category: - Switch - Valve ha_config_flow: true +ha_zeroconf: true ha_release: 2025.2 ha_iot_class: Local Push ha_codeowners: From afa5b1e2a0a4a06ff4f6a64fe1bfa2eac8adf80e Mon Sep 17 00:00:00 2001 From: Thomas55555 <59625598+Thomas55555@users.noreply.github.com> Date: Mon, 4 Aug 2025 22:28:45 +0200 Subject: [PATCH 07/58] Reset cutting blade usage time in Husqvarna Automower (#40260) --- source/_integrations/husqvarna_automower.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index 36f1c50ed1ac..e08f1a01bc6a 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -108,6 +108,7 @@ The integration will create the following binary sensors: The integration will create the following buttons: - **Confirm Error** (if available): For confirming minor mower errors. +- **Reset cutting blade usage time** (if available): Resets the cutting blade usage time. - **Sync clock**: Syncs the clock of the mower with the time set in Home Assistant. ### Calendar From 61eb9d83d920c96b502d63721241eb7d7c3beb81 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 6 Aug 2025 20:07:52 -1000 Subject: [PATCH 08/58] Add support for Inkbird IAM-T2 (#40314) --- source/_integrations/inkbird.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/inkbird.markdown b/source/_integrations/inkbird.markdown index 65b3a0d29014..dcf7c16cf11e 100644 --- a/source/_integrations/inkbird.markdown +++ b/source/_integrations/inkbird.markdown @@ -30,6 +30,7 @@ Integrates [INKBIRD](https://www.inkbird.com/) devices into Home Assistant. - [INKBIRD Bluetooth Hygrometer Thermometer ITH-13-B](https://inkbird.com/products/bluetooth-hygrometer-thermometer-ith-13-b) - [INKBIRD Bluetooth Hygrometer Thermometer ITH-21-B](https://inkbird.com/products/bluetooth-hygrometer-thermometer-ith-21-b) - [INKBIRD Bluetooth Wireless 4-in-1 Air Quality Monitor IAM-T1](https://inkbird.com/collections/air-quality-monitors/products/smart-indoor-air-quality-monitor-iam-t1) +- [INKBIRD Bluetooth 3-in-1 Indoor Air Quality Monitor IAM-T2](https://inkbird.com/products/bluetooth-3-in-1-indoor-air-quality-monitor-iam-t2) - [Nutrichef Smart Wireless Grill Thermometer](https://nutrichefkitchen.com/products/pwirbbq40) - [Nutrichef Smart Bluetooth BBQ Grill Thermometer](https://nutrichefkitchen.com/products/pwirbbq80-1) From 038cb59c2a7596f9fec55a72b564452e58e2f938 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Fri, 8 Aug 2025 13:09:17 +0200 Subject: [PATCH 09/58] Remove linear_garage_door integration docs (#40302) --- .../_integrations/linear_garage_door.markdown | 41 ------------------- source/_redirects | 1 + 2 files changed, 1 insertion(+), 41 deletions(-) delete mode 100644 source/_integrations/linear_garage_door.markdown diff --git a/source/_integrations/linear_garage_door.markdown b/source/_integrations/linear_garage_door.markdown deleted file mode 100644 index 224241c30e38..000000000000 --- a/source/_integrations/linear_garage_door.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Linear Garage Door -description: Control Linear garage doors -ha_release: '2023.12' -ha_category: - - Cover - - Light -ha_iot_class: Cloud Polling -ha_config_flow: true -ha_codeowners: - - '@IceBotYT' -ha_domain: linear_garage_door -ha_platforms: - - cover - - diagnostics - - light -ha_integration_type: integration ---- - -{% warning %} -This integration is now deprecated and will be removed in 2025.8.0. -Please use the new [Nice G.O.](/integrations/nice_go) integration instead to avoid disruption. - -For more information, refer to the [Nice G.O. migration documentation](https://na.niceforyou.com/features/nice-go-app/#migration). -{% endwarning %} - -The Linear integration lets you control Linear garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Linear mobile app. - -## Prerequisites - -This integration is for garage doors connected to the cloud by Wi-Fi using the Linear mobile app. - -{% include integrations/config_flow.md %} - -## Cover - -Garage doors linked to your Linear account will appear as covers. - -## Light - -Lights on your garage door will appear as lights. diff --git a/source/_redirects b/source/_redirects index 96b72be83663..fed3aebcec3e 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 From f02077aa7450860dbc9c9ddb45e77b6a215d9eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pelgr=C3=B6m?= Date: Fri, 8 Aug 2025 13:47:36 +0200 Subject: [PATCH 10/58] Document select platform for LetPot integration (#40323) --- source/_integrations/letpot.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_integrations/letpot.markdown b/source/_integrations/letpot.markdown index e8d40ed83556..ae130d278fda 100644 --- a/source/_integrations/letpot.markdown +++ b/source/_integrations/letpot.markdown @@ -3,6 +3,7 @@ title: LetPot description: Instructions on how to integrate LetPot hydroponic gardens into Home Assistant. ha_category: - Binary sensor + - Select - Sensor - Switch - Time @@ -15,6 +16,7 @@ ha_domain: letpot ha_integration_type: hub ha_platforms: - binary_sensor + - select - sensor - switch - time @@ -79,6 +81,17 @@ Additionally, binary sensors for possible issues are available: 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 %} +#### Selects + +- **Light mode**: Set the built-in light mode to fruits/flowers (red and white LEDs enabled) or veggies/herbs (red, white and blue LEDs enabled). + +Depending on device support, more selects are available: + +- **Light brightness**: Set the built-in light brightness to low or high. + - Available for LetPot Air devices, and some LetPot SE devices which support changing the brightness. +- **Temperature unit on display**: Set the temperature unit for the temperature shown on the device's display. + - Available for LetPot Max devices, excluding devices with a serial number starting with `LPH63`. + #### Sensors For LetPot Max devices, the following sensors are available: From e640f8af7c08fabab2c07e6a907964d031541875 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Fri, 8 Aug 2025 16:38:12 +0300 Subject: [PATCH 11/58] Document `layout: auto` for "energy-sankey" card (#40322) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_dashboards/energy.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_dashboards/energy.markdown b/source/_dashboards/energy.markdown index 0d9219c8a77f..3b4e698293b2 100644 --- a/source/_dashboards/energy.markdown +++ b/source/_dashboards/energy.markdown @@ -259,8 +259,9 @@ title: type: string layout: required: false - description: "`vertical` or `horizontal`. Determines the orientation (flow direction) of the card" + description: "`vertical`, `horizontal` or `auto`. Determines the orientation (flow direction) of the card. `auto` changes it based on the screen size." type: string + default: auto group_by_area: required: false description: Whether to group the devices by area From fdb4bd9cbb9f2c3d25b774a4e0ebfff10621043d Mon Sep 17 00:00:00 2001 From: mbo18 Date: Fri, 8 Aug 2025 22:55:34 +0200 Subject: [PATCH 12/58] Add absolute humidity to Awair documentation (#40304) --- source/_integrations/awair.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index 223748e202b7..74d86877ff5c 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -7,8 +7,8 @@ ha_config_flow: true ha_release: 0.84 ha_iot_class: Local Polling ha_codeowners: - - '@ahayworth' - - '@danielsjf' + - "@ahayworth" + - "@danielsjf" ha_domain: awair ha_platforms: - sensor @@ -39,6 +39,7 @@ The integration will fetch data from each device. The following sensors are supp - Temperature - Humidity - Dew point +- Absolute humidity - Carbon dioxide - Total volatile organic compounds - PM2.5 density From 6e8eeab93d7426c00635461e0ede3d5d2d4e51e9 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Sat, 9 Aug 2025 00:45:05 +0200 Subject: [PATCH 13/58] Add ToGrill documentation (#40291) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker --- source/_integrations/togrill.markdown | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 source/_integrations/togrill.markdown diff --git a/source/_integrations/togrill.markdown b/source/_integrations/togrill.markdown new file mode 100644 index 000000000000..95178fd98f9e --- /dev/null +++ b/source/_integrations/togrill.markdown @@ -0,0 +1,52 @@ +--- +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: + - Sensor +ha_domain: togrill +ha_bluetooth: true +ha_platforms: + - sensor +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 | + +## Sensors + +**Probe X**: The current temperature of the given temperature probe +**Battery**: The current battery level of the device. + +## Removing the integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} From d603675b44946f82084fe6ce917a7c43bad0aa72 Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 9 Aug 2025 07:14:10 +0200 Subject: [PATCH 14/58] Add binary_sensor to UISP airOS (#40242) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- source/_integrations/airos.markdown | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/source/_integrations/airos.markdown b/source/_integrations/airos.markdown index fadb2172a723..a0149088ef74 100644 --- a/source/_integrations/airos.markdown +++ b/source/_integrations/airos.markdown @@ -19,8 +19,9 @@ Ubiquiti UISP-range of [ A common use-case is establishing wireless PtP or PtMP links between buildings, remote sites, neighbours or even your shed. This is highly advantageous when traditional fiber-optic or copper network cabling is either impractical or the distance is too far for copper cabling. With LoS between airOS devices, a stable and high-bandwidth "beam" can be established, eliminating any need for additional infrastructure. This can be an improvement over extending your WiFi coverage using meshing of Access Points, as meshing potentially reduces the capacity and performance of your WiFi network. -There is currently support for the following plaforms within Home Assistant: +There is currently support for the following platforms within Home Assistant: +- [Binary sensor](#binary-sensor) - [Sensor](#sensor) This integration allows users to pull network metrics and statuses directly into their Home Assistant dashboards, enabling advanced automation, notifications, and comprehensive network oversight within their smart home ecosystem. @@ -65,9 +66,29 @@ For stations in particular, they can operate in either a 'Bridge' or 'Router' ro The choice between Bridge and Router mode depends on the network architecture and whether the device is intended to extend an existing network (Bridge) or create a new subnet (Router). -## Sensor +## Binary sensor + +### Port forwarding + +Active if any port forwarding is enabled when operating in 'router' mode. + +### DHCP client + +Active if the device configured to use DHCP for its network settings, inactive if IP address is statically assigned. + +### DHCP server -This integration exposes the following sensor entities for your airOS devices: +Active if the device itself is configured and acting as a DHCP server. + +### DHCPv6 server + +Active if the device itself is configured and acting as a DHCP server for IPv6. + +### PPPoE + +Active if the device is configured for PPPoE and the PPPoE link state is active. + +## Sensor ### Network Role From 352bb7f4c4287f4a03a6d7a2fbc04131f3471fa2 Mon Sep 17 00:00:00 2001 From: Thomas55555 <59625598+Thomas55555@users.noreply.github.com> Date: Sat, 9 Aug 2025 07:14:49 +0200 Subject: [PATCH 15/58] Add event platform to Husqvarna Automower (#39863) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- .../husqvarna_automower.markdown | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index e08f1a01bc6a..94d62a266843 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -6,6 +6,7 @@ ha_category: - Button - Calendar - Device tracker + - Event - Lawn Mower - Number - Select @@ -22,6 +23,7 @@ ha_platforms: - calendar - device_tracker - diagnostics + - event - lawn_mower - number - select @@ -119,6 +121,30 @@ The integration will create a calendar entity for all mowers. The calendar shows The integration will create a device tracker entity to show the position of the mower. +### Event (if available) + +- Shows the last error as event. +- Includes additional context: `severity`, `latitude`, `longitude`, and `date_time`. + +#### Example attributes + +| Attribute | Description | +|---------------|----------------------------------------| +| `event_type` | Error code (for example, `tilt_error`) | +| `severity` | Error severity (for example, `error`, `warning`) | +| `latitude` | Latitude where the error occurred | +| `longitude` | Longitude where the error occurred | +| `date_time` | Timestamp of the error | + +#### Use cases + +- Send a notification when the mower is lifted or stuck. +- Show last error location on a map + +{% note %} +The entity will only be created when a new message is received. If a mower hasn’t reported any errors yet, the entity won't show up. +{% endnote %} + ### Lawn mower The integration will create a lawn mower entity to control the mower. This entity can: From 0d2a3585b8c66cad703b27007818ae618832d81b Mon Sep 17 00:00:00 2001 From: tronikos Date: Sun, 10 Aug 2025 00:39:19 -0700 Subject: [PATCH 16/58] Remove Mercury NZ Limited from docs (#40348) --- source/_integrations/mercury_nz.markdown | 25 ------------------------ source/_integrations/opower.markdown | 3 +-- source/_redirects | 1 + 3 files changed, 2 insertions(+), 27 deletions(-) delete mode 100644 source/_integrations/mercury_nz.markdown diff --git a/source/_integrations/mercury_nz.markdown b/source/_integrations/mercury_nz.markdown deleted file mode 100644 index 8f02b24dba50..000000000000 --- a/source/_integrations/mercury_nz.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Mercury NZ Limited -description: Get energy usage from Mercury NZ Limited using the Opower integration -ha_category: - - Energy - - Sensor -ha_release: 2023.8 -ha_domain: mercury_nz -ha_integration_type: virtual -ha_supporting_domain: opower -ha_supporting_integration: Opower -ha_codeowners: - - '@tronikos' -ha_config_flow: true -ha_platforms: - - sensor -ha_iot_class: Cloud Polling ---- - -**Deprecation Notice** - -This is no longer working as Mercury NZ Limited [recently transitioned from using Opower to an in-house solution](https://www.geekzone.co.nz/forums.asp?forumid=73&topicid=319506&page_no=1#3396187). -This virtual integration will be removed in the **2025.9.0** release. - -{% include integrations/supported_brand.md %} diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown index e51e075ea2ea..85bde4180247 100644 --- a/source/_integrations/opower.markdown +++ b/source/_integrations/opower.markdown @@ -7,7 +7,7 @@ ha_category: ha_release: 2023.8 ha_iot_class: Cloud Polling ha_codeowners: - - '@tronikos' + - "@tronikos" ha_domain: opower ha_config_flow: true ha_platforms: @@ -43,7 +43,6 @@ More than 175 utilities use Opower. Currently only the following utilities are s - PECO Energy Company (PECO) - Potomac Electric Power Company (Pepco) - Glendale Water and Power (GWP) -- ~Mercury NZ Limited~ (no longer working as it [recently transitioned from using Opower to an in-house solution](https://www.geekzone.co.nz/forums.asp?forumid=73&topicid=319506&page_no=1#3396187), will be removed in 2025.9.0) - National Grid US subsidiaries - National Grid Massachusetts - National Grid NY Long Island diff --git a/source/_redirects b/source/_redirects index fed3aebcec3e..8c8f4f5a22a1 100644 --- a/source/_redirects +++ b/source/_redirects @@ -599,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 From 46cc580bebcb8ac0f9ce406d9d719044ae60b84f Mon Sep 17 00:00:00 2001 From: Vincent Wolsink Date: Sun, 10 Aug 2025 21:55:53 +0200 Subject: [PATCH 17/58] Add documentation for humidity control Huum (#40356) --- source/_integrations/huum.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_integrations/huum.markdown b/source/_integrations/huum.markdown index 6cea42b84635..4490f72f11b4 100644 --- a/source/_integrations/huum.markdown +++ b/source/_integrations/huum.markdown @@ -5,6 +5,7 @@ ha_category: - Binary sensor - Climate - Light + - Number ha_release: 2024.2 ha_iot_class: Cloud Polling ha_codeowners: @@ -16,6 +17,7 @@ ha_platforms: - binary_sensor - climate - light + - number ha_integration_type: integration --- @@ -50,3 +52,8 @@ The climate entity controls the sauna heater and offers the following capabiliti ### Light - **Light**: Sauna light control (on or off). + +### Number + +- **Humidity**: Control steamer duty cycle (0-10) to adjust sauna humidity. + From e961ac77d109a9f8dd524f53b1f8c1a5a355e599 Mon Sep 17 00:00:00 2001 From: dontinelli <73341522+dontinelli@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:30:29 +0200 Subject: [PATCH 18/58] Update solarlog documentation for new sensors (#40366) --- source/_integrations/solarlog.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index 7a32c8c3b5f8..b24b963d0858 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -100,8 +100,13 @@ The following additional sensor becomes available: | Name | Unit | Description | |-----------------------|--------|:-------------------------------------------| +| charge_level | % | Current charge level of battery.* | +| charging_power | W | Current power charging battery.* | +| discharging_power | W | Current power discharging battery.* | | self_consumption_year | kWh | Annual self-consumed solar power. | +*Only available, if battery connected to solarlog. + In addition, information from devices connected to the Solar-Log device becomes available. The following additional sensors become available (all values are per inverter/device): | Name | Unit | Description | From b6f1c274a6ccf3122e1d5f60e563c4ff090b1f52 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Mon, 11 Aug 2025 01:24:57 -0700 Subject: [PATCH 19/58] Support `multiple` for StateSelector (#39419) --- source/_docs/blueprint/selectors.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index d914b288ef28..691f7b5afc77 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -1414,7 +1414,7 @@ would return ["Green"] and in the last example it returns ["g"]. ## State selector The state selector shows a list of states for a provided entity of which -one can be selected. +one or more can be selected. ![Screenshot of an state selector](/images/blueprints/selector-state.png) @@ -1427,10 +1427,16 @@ hide_states: description: The states to exclude from the list of options type: list required: false +multiple: + description: > + Allows selecting multiple states. If set to `true`, the resulting value of + this selector will be a list instead of a single string value. + type: boolean + default: false {% endconfiguration %} The output of this selector is the select state (not the translated or -prettified name shown in the frontend). +prettified name shown in the frontend), or a list of states if `multiple` is true. For example: `heat_cool`. From f0e8c2b35ad0ccf582f293a2ff61382528de8f93 Mon Sep 17 00:00:00 2001 From: Robin Lintermann Date: Mon, 11 Aug 2025 17:08:16 +0200 Subject: [PATCH 20/58] Smarla integration doc sensor platform (#39276) --- source/_integrations/smarla.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/smarla.markdown b/source/_integrations/smarla.markdown index c38154d5e261..3c8122d02e0b 100644 --- a/source/_integrations/smarla.markdown +++ b/source/_integrations/smarla.markdown @@ -3,6 +3,7 @@ title: Swing2Sleep Smarla description: Instructions on connecting Swing2Sleep Smarla to Home Assistant. ha_category: - Number + - Sensor - Switch ha_iot_class: Cloud Push ha_release: 2025.6 @@ -14,6 +15,7 @@ ha_integration_type: device ha_config_flow: true ha_platforms: - number + - sensor - switch ha_quality_scale: bronze --- @@ -45,6 +47,10 @@ This component will set up the following entities: | `swing_active` | `switch` | Turns the cradle’s oscillation on or off. | | `smart_mode` | `switch` | Enables or disables automatic intensity control. | | `intensity` | `number` | Sets the intensity level (range: `0` to `100`). | +| `amplitude` | `sensor` | Displays the current measured amplitude of the oscillation. | +| `period` | `sensor` | Displays the current measured period of the oscillation. | +| `activity` | `sensor` | Displays the current measured activity level. | +| `swing_count` | `sensor` | Displays the total number of swings. | ## Removing the integration From 3cc76483b99fd966b63024d06e1daa0e93b1a272 Mon Sep 17 00:00:00 2001 From: pcan08 <155250376+pcan08@users.noreply.github.com> Date: Mon, 11 Aug 2025 17:29:20 +0200 Subject: [PATCH 21/58] Add fan-direction dashboard feature documentation (#40367) --- source/dashboards/features.markdown | 21 ++++++++++++++++++ .../dashboards/features/fan_direction.png | Bin 0 -> 5428 bytes 2 files changed, 21 insertions(+) create mode 100644 source/images/dashboards/features/fan_direction.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 592a7561eccb..41e442cb19fb 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -322,6 +322,27 @@ type: 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 + 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 preset modes Widget that displays buttons or icons to control the preset mode for a [fan](/integrations/fan). diff --git a/source/images/dashboards/features/fan_direction.png b/source/images/dashboards/features/fan_direction.png new file mode 100644 index 0000000000000000000000000000000000000000..8889c240a0de319cf474976b16f52a41275dc4e5 GIT binary patch literal 5428 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 literal 0 HcmV?d00001 From 5e837f89a46ec0d1cc17e27b38ee8a7202ebe828 Mon Sep 17 00:00:00 2001 From: Noah Husby <32528627+noahhusby@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:57:15 -0400 Subject: [PATCH 22/58] Add media browsing to Russound RIO (#39876) Co-authored-by: Joost Lekkerkerker --- source/_integrations/russound_rio.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown index 1041f6f6db0e..36e1acd1be76 100644 --- a/source/_integrations/russound_rio.markdown +++ b/source/_integrations/russound_rio.markdown @@ -107,6 +107,10 @@ data: media_content_id: "1,8" ``` +## Browsing media + +The Russound RIO integration allows you to browse saved presets from your dashboard. + ## Troubleshooting ### There is a delay on getting the current status From a3925c1472e642e94c5bfac7ce599c75ba5778d0 Mon Sep 17 00:00:00 2001 From: yufeng Date: Tue, 12 Aug 2025 17:34:48 +0800 Subject: [PATCH 23/58] add valve entity (#40387) --- source/_integrations/tuya.markdown | 2 ++ 1 file changed, 2 insertions(+) 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 --- From bd36e68afb5dacad4da5a2af678855c3375ce695 Mon Sep 17 00:00:00 2001 From: hanwg Date: Tue, 12 Aug 2025 21:24:29 +0800 Subject: [PATCH 24/58] Add notify entity for Telegram bot (#40284) --- source/_integrations/telegram_bot.markdown | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown index 2024d362205c..2012656affa1 100644 --- a/source/_integrations/telegram_bot.markdown +++ b/source/_integrations/telegram_bot.markdown @@ -144,6 +144,26 @@ Chat ID: description: ID representing the user or group chat to which messages can be sent. {% endconfiguration_basic %} +## Notifiers + +This integration will add a notify {% term entity %} for each configured chat ID. +You can use the `notify.send_message` action to publish notifications. + +{% details "Example YAML configuration" %} + +{% raw %} + +```yaml +action: notify.send_message +data: + message: "Reminder: Have you considered frogs?" + entity_id: notify.telegram_bot_chat +``` + +{% endraw %} + +{% enddetails %} + ## Notification actions Available actions: `send_message`, `send_photo`, `send_video`, `send_animation`, `send_voice`, `send_sticker`, `send_document`, `send_location`, `edit_message`, `edit_caption`, `edit_replymarkup`, `answer_callback_query`, `delete_message`, `leave_chat` and `set_message_reaction`. @@ -445,6 +465,13 @@ Sets the bot's reaction for a given message. ## Telegram notification platform +{% warning %} + +The notification platform has been marked as legacy and might be deprecated in the future. +Please use [notifiers](./#notifiers) instead. + +{% endwarning %} + The [`telegram` notification platform](/integrations/telegram) requires the `telegram_bot` integration to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents, and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. The data attributes `parse_mode`, `disable_notification`, `message_tag`, `disable_web_page_preview`, and `message_thread_id` are also supported. The required YAML configuration now reduces to: From 4cf008c5053a326cd0b8d05e78213b7a6e3de53f Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Tue, 12 Aug 2025 14:29:58 +0100 Subject: [PATCH 25/58] Add valve open/close card feature (#40372) --- source/dashboards/features.markdown | 21 ++++++++++++++++++ .../dashboards/features/valve_open_close.png | Bin 0 -> 8112 bytes 2 files changed, 21 insertions(+) create mode 100644 source/images/dashboards/features/valve_open_close.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 41e442cb19fb..55d238108a16 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -736,6 +736,27 @@ 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 open/close feature + 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 %} + ## 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/valve_open_close.png b/source/images/dashboards/features/valve_open_close.png new file mode 100644 index 0000000000000000000000000000000000000000..45df500b1c9aa2bb03a9024d2edafb1203966103 GIT binary patch literal 8112 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 e%KrnCj?|#sb Date: Tue, 12 Aug 2025 17:25:23 +0200 Subject: [PATCH 26/58] Add a note on new `number` platform for `airq` integration (#40390) Co-authored-by: Joost Lekkerkerker --- source/_integrations/airq.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/airq.markdown b/source/_integrations/airq.markdown index ffd77f9a3d54..399d12190844 100644 --- a/source/_integrations/airq.markdown +++ b/source/_integrations/airq.markdown @@ -14,6 +14,7 @@ ha_domain: airq ha_config_flow: true ha_platforms: - sensor + - number ha_integration_type: hub --- @@ -96,6 +97,10 @@ After the integration has been initialized, the user can configure any of the fo - **Clip negative values**. Default: `on`. For baseline calibration purposes, certain sensor values may briefly become negative. The default behavior is to clip such values to 0. +## LED Control + +In addition to sensor readings, this integration exposes the brightness of the device’s LED strips as a `number` entity named `number._led_brightness`. You can set the brightness (0–100) manually from the Overview panel or in automations. Setting it to 0 will turn the LEDs off. + ## Troubleshooting For troubleshooting or when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics) and restart the integration. As soon as the issue reoccurs stop the debug logging, which will trigger the download of the debug log file. From ee7a78f03447cf39f8778f7a06ce4622266b6b58 Mon Sep 17 00:00:00 2001 From: Tucker Kern Date: Tue, 12 Aug 2025 10:07:51 -0600 Subject: [PATCH 27/58] Update Snapcast to remove references to old join/unjoin actions (#39568) --- source/_integrations/snapcast.markdown | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index 252e4d52b0f4..998306275cff 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -38,23 +38,6 @@ Restore a previously taken snapshot of one or more speakers. | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of `entity_id`s that should have their snapshot restored. -### Action `snapcast.join` - -Group players together under a single group. - -| Data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `master` | no | Entity ID of the player to synchronize to. -| `entity_id` | yes | String or list of `entity_id`s to join to the master. - -### Action `snapcast.unjoin` - -Remove one or more speakers from their group of speakers. - -| Data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s to separate from their coordinator speaker. - ### Action `snapcast.set_latency` Set the latency of a speaker. From 905637742307497fab404f696e76a8eee6666234 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Tue, 12 Aug 2025 19:47:15 -0700 Subject: [PATCH 28/58] Document `not` and `location` conditions. (#40396) --- source/_dashboards/conditional.markdown | 47 ++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/source/_dashboards/conditional.markdown b/source/_dashboards/conditional.markdown index c3db5117a0f2..b808f271eaac 100644 --- a/source/_dashboards/conditional.markdown +++ b/source/_dashboards/conditional.markdown @@ -198,9 +198,31 @@ users: type: list {% endconfiguration %} +### Location + +Specify the visibility of the card based on the current user's current location. The location is based on the state of the `person` entity associated with the current user. If the current user does not have a `person` entity, this condition will always resolve to false. + +```yaml +condition: location +locations: + - home + - Home Neigborhood +``` + +{% configuration %} +condition: + required: true + description: "`location`" + type: string +locations: + required: true + description: A list of zones, which if any match the current state of the `person`, will cause this condition to be true. + type: list +{% endconfiguration %} + ### And -Specify that both conditions must be met. +Specify that all conditions must be met. ```yaml condition: and @@ -248,4 +270,27 @@ conditions: type: list {% endconfiguration %} +### Not + +Specify that at least one of the conditions must not be met. + +```yaml +condition: not +conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` +{% configuration %} +condition: + required: true + description: "`not`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} From 3647de83be9776429a127fb6106d6d014c9c5c69 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Wed, 13 Aug 2025 05:24:33 +0200 Subject: [PATCH 29/58] Add party-related entities to Habitica integration (#40203) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/habitica.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 9b636037460e..cad6b0c8adfc 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -161,6 +161,24 @@ If you've unlocked the class system, button controls for casting player and part - **Rest in the Inn**: When enabled, allows your character to rest in the inn in Habitica, pausing damage dealt from dailies and quest bosses. +## Party + +If you’re part of a party, the integration creates a device with these entities. + +- **Boss health**: The total health of the quest boss. +- **Boss health remaining**: The remaining health of the quest boss. +- **Collected quest items**: Displays the total number of items collected. Attributes include a breakdown of each required item type, showing both collected and required amounts. +- **Group leader**: The username of your party's leader. +- **Member count**: The current number of members in your party. +- **Quest**: Shows the name of the current quest your party is engaged in. +- **Quest boss**: The name and image of the foe your party is currently battling. + +{% note %} + +Certain entities are only available depending on whether you are in a boss quest or a collect quest. + +{% endnote %} + ## Actions ### Action `habitica.cast_skill` From 5d1e5137caf0350b95c059ef7206d5e4645ad2af Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Wed, 13 Aug 2025 05:27:24 +0200 Subject: [PATCH 30/58] Add Sleep as Android integration (#38465) --- .../_integrations/sleep_as_android.markdown | 211 ++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 source/_integrations/sleep_as_android.markdown diff --git a/source/_integrations/sleep_as_android.markdown b/source/_integrations/sleep_as_android.markdown new file mode 100644 index 000000000000..59308aa72569 --- /dev/null +++ b/source/_integrations/sleep_as_android.markdown @@ -0,0 +1,211 @@ +--- +title: Sleep as Android +description: Instructions on how to integrate Sleep as Android with Home Assistant. +ha_category: + - Event + - Sensor +ha_iot_class: Local push +ha_release: 2025.9 +ha_config_flow: true +ha_codeowners: + - '@tr4nt0r' +ha_domain: sleep_as_android +ha_integration_type: integration +ha_platforms: + - event + - sensor +ha_quality_scale: silver +--- + +The **Sleep as Android** {% term integration %} connects the Sleep as Android app to Home Assistant, allowing you to trigger automations based on alarm clock or sleep cycle events. + +## About Sleep as Android + +[**Sleep as Android**](https://sleep.urbandroid.org/) is a smart alarm clock with sleep cycle tracking capabilities and numerous other features to analyze and improve sleeping habits. It is available exclusively for Android devices and can be downloaded from [Google Play](https://play.google.com/store/apps/details?id=com.urbandroid.sleep). + +## How you can use this integration + +The Sleep as Android integration allows you to trigger sleep-related automations. You can trigger actions when sleep tracking starts or stops, such as dimming the lights or adjusting thermostat settings. Alarm events allow you to respond to snoozing or dismissing alarms — like starting a morning routine or sending a notification if the alarm was skipped. Additionally, you can react to specific sleep phases or sound detections (for example, snoring or baby crying), or monitor critical conditions such as sleep apnea. + +## Prerequisites + +This integration uses webhooks to receive events from Sleep as Android. By default, webhook triggers can only be accessed from devices on the same network as Home Assistant. If you want to receive events while away from your home network, remote access must be enabled, either by adding a [remote URL](/docs/configuration/remote/) or via [Nabu Casa Cloud](https://www.nabucasa.com/config/webhooks/). + +Steps to set up the integration: + +1. Preferably, open Home Assistant on the device you want to connect to the Sleep as Android integration and initiate the setup. +2. You will be presented a URL during the setup process. Mark the URL and copy it to the clipboard. +3. Open the Sleep as Android app and go to {% icon "mdi:cog" %} **Settings** > **Services** > **Automation** > **Webhooks**. +4. Turn on the switch to enable webhooks and paste the webhook URL from your clipboard into the URL field. + +{% note %} + +To receive updates from Sleep as Android while away from home, your Home Assistant instance must be remotely accessible. +You can enable this by configuring a remote URL for Home Assistant or by using Home Assistant Cloud. + +When setting up the Sleep as Android integration, the webhook is created using your external or cloud URL if remote access is available at that time. +If your instance is not remotely accessible during setup, the webhook will use your internal URL instead. +In this case, you will need to manually update the webhook to use your remote URL once remote access is configured. + +{% endnote %} + +{% tip %} + +If you scroll to the top and select **Events**, you can individually select and deselect the events the Sleep as Android app should trigger. + +{% endtip %} + +{% include integrations/config_flow.md %} + +## Sensors + +- **Next alarm**: The scheduled time of your upcoming alarm. +- **Alarm label**: The label or description assigned to the next alarm. + +## Events + +The integration offers various event entities that will display the most recent events from Sleep as Android. + +### Alarm clock + +Events related to the alarm clock feature. + +| Event type | Description | +| ------------------- | -------------------------- | +| `alert_dismiss` | Alarm dismissed | +| `alert_start` | Alarm started | +| `rescheduled` | Alarm rescheduled | +| `skip_next` | Alarm skipped | +| `snooze_clicked` | Snoozing | +| `snooze_canceled` | Snoozing canceled | + +### Smart wake-up + +Events related to the smart wake-up feature. + +| Event type | Description | +| ------------------------- | -------------------------- | +| `before_smart_period` | 45min before smart wake-up | +| `smart_period` | Smart wake-up started | + +### User notifications + +Events related to user notifications. + +| Event type | Description | +| ------------------------- | --------------- | +| `wake_up_check` | Wake-up check | +| `show_skip_next_alarm` | Skip next alarm | +| `time_to_bed_alarm_alert` | Time to bed | + +### Sleep health + +Events related to sleep health. + +| Event type | Description | +| ------------- | ---------------------- | +| `antisnoring` | Anti-snoring triggered | +| `apnea_alarm` | Sleep apnea detected | + +### Lullaby + +Events related to the Lullaby feature. + +| Event type | Description | +| ------------- | ------------------------------- | +| `start` | Lullaby started playing | +| `stop` | Lullaby stopped playing | +| `volume_down` | Lullaby started lowering volume | + +### Sleep phase + +Events when entering a new sleep phase. + +| Event type | Description | +| ------------- | ----------- | +| `awake` | Woke up | +| `deep_sleep` | Deep sleep | +| `light_sleep` | Light sleep | +| `not_awake` | Fell asleep | +| `rem` | REM sleep | + +{% warning %} + +Be cautious when automating based on sleep phase events, especially deep and light sleep, as these can trigger lots of events throughout the night, and they may not precisely correlate with the resulting sleep graph as Sleep as Android can only detect phases reliably using whole-night data. + +{% endwarning %} + +### Sleep tracking + +Events related to the sleep tracking feature. + +| Event type | Description | +| ---------- | ---------------- | +| `paused` | Tracking paused | +| `resumed` | Tracking resumed | +| `started` | Tracking started | +| `stopped` | Tracking stopped | + +### Sound recognition + +Events triggered when a specific sound is detected during sleep tracking. + +| Event type | Description | +| ---------- | -------------------- | +| `baby` | Baby crying | +| `cough` | Coughing or sneezing | +| `laugh` | Laughter | +| `snore` | Snoring | +| `talk` | Talking | + +## Automation + +Here’s an example automation: when your Sleep as Android alarm starts ringing, your bedroom blinds will automatically open. + +{% raw %} + +```yaml +alias: Open window blinds on Alarm +triggers: + - trigger: state + entity_id: + - event.sleep_as_android_alarm_clock + attribute: event_type + to: alert_start + not_from: unavailable +conditions: + - condition: state + entity_id: person.user1 + state: home +actions: + - action: cover.open_cover + target: + entity_id: cover.bedroom_blinds +mode: single +``` + +{% endraw %} + +## Data updates + +This integration receives push updates from the Sleep as Android app whenever an event is triggered. If no events occur, the displayed data may become outdated. + +## Known limitations + +- If Home Assistant is unreachable when an event is pushed, for example when you are away from your home network without remote access, the Sleep as Android integration will miss the update. The app does not retry sending it. + +- The integration does not support controlling the Sleep as Android app, such as setting alarm times or turning off alarms. + +## Troubleshooting + +The **Sleep as Android** integration receives updates via a push from your Sleep as Android app to a webhook. If you encounter issues, verify that your Home Assistant is reachable from your mobile phone. + +In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs, stop the debug logging again (*download of debug log file will start automatically*). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report. + +## Removing the integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} + +4. Open the Sleep as Android app and go to {% icon "mdi:cog" %} **Settings** > **Services** > **Automation** > **Webhooks**. Turn off webhooks and remove the URL. From 321cf14a2bf1f7fb96c4d20f286283f0a903b051 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 13 Aug 2025 13:13:21 +0100 Subject: [PATCH 31/58] Add valve postion card feature (#40393) --- source/dashboards/features.markdown | 21 ++++++++++++++++++ .../dashboards/features/valve_position.png | Bin 0 -> 9279 bytes 2 files changed, 21 insertions(+) create mode 100644 source/images/dashboards/features/valve_position.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 55d238108a16..12fb0426c0fc 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -757,6 +757,27 @@ type: 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 + 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/valve_position.png b/source/images/dashboards/features/valve_position.png new file mode 100644 index 0000000000000000000000000000000000000000..f107c44cec01a9a93d40449e66f9bb8f7a96cee6 GIT binary patch literal 9279 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 gDoaq@`FcZyEM~0ROFHga7~l literal 0 HcmV?d00001 From 70dd5d4f5d1353c029028da5477f934aa63e3d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Wed, 13 Aug 2025 15:57:18 +0200 Subject: [PATCH 32/58] Extend UnitOfApparentPower with 'mVA' (#40381) --- source/_integrations/number.markdown | 2 +- source/_integrations/sensor.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index 4450b475058a..151567000490 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -40,7 +40,7 @@ The following device classes are supported for numbers: - **None**: Generic number. This is the default and doesn't need to be set. - **absolute_humidity**: Absolute humidity in g/m³, mg/m³. -- **apparent_power**: Apparent power in VA. +- **apparent_power**: Apparent power in mVA or VA. - **aqi**: Air Quality Index (unitless). - **area**: Area in m², cm², km², mm², in², ft², yd², mi², ac, ha - **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, mmHg, inHg, kPa, mbar, Pa or psi diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 45c414951696..7872acccee9a 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -49,7 +49,7 @@ The following device classes are supported for sensors: - **None**: Generic sensor. This is the default and doesn't need to be set. - **absolute_humidity**: Absolute humidity in g/m³, mg/m³. -- **apparent_power**: Apparent power in VA. +- **apparent_power**: Apparent power in mVA or VA. - **aqi**: Air Quality Index (unitless). - **area**: Area in m², cm², km², mm², in², ft², yd², mi², ac, ha - **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, mmHg, inHg, kPa, mbar, Pa or psi From 89cd21ef1af6cb577448c50b173f20c228ca0d8b Mon Sep 17 00:00:00 2001 From: Samuel Xiao <40679757+XiaoLing-git@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:13:48 +0800 Subject: [PATCH 33/58] Switchbot Cloud: Add cover entity description 0718 (#40060) --- source/_integrations/switchbot_cloud.markdown | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown index bb1b639a7d90..52ea4e6f276d 100644 --- a/source/_integrations/switchbot_cloud.markdown +++ b/source/_integrations/switchbot_cloud.markdown @@ -4,6 +4,7 @@ description: Instructions on how to set up SwitchBot Devices. ha_category: - Binary Sensor - Button + - Cover - Fan - Hub - Light @@ -23,6 +24,7 @@ ha_domain: switchbot_cloud ha_platforms: - binary_sensor - button + - cover - climate - light - fan @@ -56,6 +58,14 @@ Please note, device names configured in the SwitchBot app are transferred into H - [Plug Mini (HomeKit Enabled)](https://www.switch-bot.com/products/switchbot-plug-mini-homekit-enabled) - Plug (Wi-Fi only, only available in Japan) +### Cover + +- [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain) (version 1 & 2) +- [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3) +- [Blind Tilt (WoBlindTilt)](https://switch-bot.com/pages/switchbot-blind-tilt) +- [Roller Shade](https://www.switch-bot.com/products/switchbot-roller-shade) +- [Garage Door Opener](https://www.switch-bot.com/products/switchbot-garage-door-opener) + ### Lights - [LED Strip Light 3](https://www.switch-bot.com/products/switchbot-led-strip-light-3) @@ -134,6 +144,51 @@ Features: Features: - turn on or off +### Cover + +#### Curtain + +Features: +- open/close/pause +- set position +- get position +- get battery level +- get calibration state + +#### Curtain 3 + +Features: +- open/close/pause +- set position +- get position +- get battery level +- get calibration state + +#### Blind Tilt + +Features: +- close up/close down +- set position +- get position +- get battery level +- get calibration state + +#### Roller Shade + +Features: +- open/close +- set position +- get position +- get battery level +- get calibration state + +#### Garage Door Opener + +Features: +- open/close +- set position +- get position +- get calibration state ### Sensors From 24d4e7d1150e24409b211206ae9bc5256a881fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Thu, 14 Aug 2025 11:46:52 +0200 Subject: [PATCH 34/58] Extend UnitOfReactivePower with 'mvar' (#40377) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/number.markdown | 2 +- source/_integrations/sensor.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index 151567000490..0cb18cb533cc 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -77,7 +77,7 @@ The following device classes are supported for numbers: - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg or psi - **reactive_energy**: Reactive energy in varh or kvarh -- **reactive_power**: Reactive power in var or kvar +- **reactive_power**: Reactive power in mvar, var, or kvar - **signal_strength**: Signal strength in dB or dBm - **sound_pressure**: Sound pressure in dB or dBA - **speed**: Generic speed in ft/s, in/d, in/h, in/s, km/h, kn, m/s, mph, mm/d, or mm/s diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 7872acccee9a..01e491e56978 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -88,7 +88,7 @@ The following device classes are supported for sensors: - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg or psi - **reactive_energy**: Reactive energy in varh or kvarh -- **reactive_power**: Reactive power in var or kvar +- **reactive_power**: Reactive power in mvar, var, or kvar - **signal_strength**: Signal strength in dB or dBm - **sound_pressure**: Sound pressure in dB or dBA - **speed**: Generic speed in ft/s, in/d, in/h, in/s, km/h, kn, m/s, mph, mm/d, or mm/s From 062d98b3df66aa1c68d00d3b5607218e2b53f7f6 Mon Sep 17 00:00:00 2001 From: Arie Catsman <120491684+catsmanac@users.noreply.github.com> Date: Fri, 15 Aug 2025 07:14:40 +0200 Subject: [PATCH 35/58] Add enphase envoy collar and combiner descriptions (#40452) --- source/_integrations/enphase_envoy.markdown | 30 +++++++++++++++++- .../enphase_envoy_collar_and_ccc_data.png | Bin 0 -> 54965 bytes 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 source/images/integrations/enphase_envoy/enphase_envoy_collar_and_ccc_data.png diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index 211e3303145e..b643b6429614 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -91,7 +91,7 @@ This integration follows standard integration removal. No extra steps are requir ## Capabilities -This integration offers various entities depending on the configuration of your Enphase system. The Envoy can communicate with Enphase IQ micro-inverters, Enphase ACB and IQ batteries, Enphase Ensemble Enpower switch and load shedding relays and Enphase compatible generators. +This integration offers various entities depending on the configuration of your Enphase system. The Envoy can communicate with Enphase IQ micro-inverters, Enphase ACB and IQ batteries, Enphase Ensemble Enpower switch and load shedding relays, Enphase compatible generators and the IQ Meter Collar. {% note %} @@ -242,6 +242,8 @@ When the Envoy Metered is equipped with a [net-consumption CT](#current-transfor - **Envoy SN Lifetime net energy consumption**: Lifetime energy consumed / imported from the grid in Wh, default display in MWh. - **Envoy SN Lifetime net energy production**: Lifetime energy produced / exported to the grid in Wh, default display in MWh. +When using an IQ Metered Collar, the net-consumption CT's are integrated in the collar. + When used with [multiphase CT phase data](#ct-aggregate-and-phase-data), disabled phase entities are available as well. #### Grid Balanced import/export sensor entities @@ -408,6 +410,32 @@ The names of entities and devices are derived from the load_name configured in t
Envoy Enpower dry-contact entities.
+### IQ Meter Collar data + +The IQ Meter Collar has the net-consumption CT integrated. The CT data is reported in the [net-consumption data](#net-consumption-ct-sensor-entities) and [grid sensors](#grid-sensor-entities). In addition the status of the collar is available in entities. + +#### Collar status entities + +- **Collar SN Grid state**: Grid connection status, on_grid / off_grid / synchronizing / manual override active. +- **Collar SN MID State**: Status of enphase Microgrid Interconnection Device, open / close. +- **Collar SN Temperature**: Current temperature in degrees C or F, based on your localization. +- **Collar SN Last reported**: Time when Envoy received last update from the collar device. +- **Collar SN Communicating**: Communication status of the collar, Connected / Disconnected. This is a diagnostics entity. + +### C6 Combiner Controller data + +The Enphase C6 combiner controller (C6CC) provides some status information to the Envoy which are available in entities. + +#### C6CC status entities + +- **C6CC SN Last reported**: Time when Envoy received last update from the combiner device. +- **C6CC SN Communicating**: Communication status of C6 Combiner, Connected / Disconnected. This is a diagnostics entity. + +
+ envoy collar and c6cc +
Envoy IQ Metered Collar and C6 Combiner Controller entities.
+
+ ## Data polling interval All data is collected in one coordinated collection cycle and sourced from a limited set of endpoints on the Envoy. For example, three different values sourced from the same endpoint are not pulled in three different requests but provided from the same single request. This method minimizes the number of requests to the Envoy. The local REST API of the Envoy is used. Only when the 1-year valid token is to expire, 1 month before due data, a new token is requested from the Enphase Enlighten website. 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 0000000000000000000000000000000000000000..32d7f6371f83282fb219111e35931ad4d14dfd46 GIT binary patch literal 54965 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

_iUkXiBZ@dnn` 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 Date: Fri, 15 Aug 2025 15:37:50 +0200 Subject: [PATCH 36/58] Add binary sensor to 1-Wire DS2405 (#40455) --- source/_integrations/onewire.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index be33f9dfd27f..2705356ad9a8 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -34,6 +34,7 @@ Each 1-wire component data sheet describes the different properties the componen | Family | Device | Physical Quantity | | -------|:-----|:-----| +| 05 | [DS2405](https://datasheets.maximintegrated.com/en/ds/DS2405.pdf) | 1 sensed [4](#note_4) | | 12 | [DS2406](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) | 2 sensed (sensed.A/B) [4](#note_4) | | 29 | [DS2408](https://datasheets.maximintegrated.com/en/ds/DS2408.pdf) | 8 sensed (sensed.0-7) [4](#note_4) | | 3A | [DS2413](https://datasheets.maximintegrated.com/en/ds/DS2413.pdf) | 2 sensed (sensed.A/B) [4](#note_4) | From 0d76435a9e188ec081f23df19b71db0d970e6018 Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 16 Aug 2025 08:58:58 +0200 Subject: [PATCH 37/58] Add additional sensors for airOS (#40467) --- source/_integrations/airos.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/airos.markdown b/source/_integrations/airos.markdown index a0149088ef74..7d15d445d8ad 100644 --- a/source/_integrations/airos.markdown +++ b/source/_integrations/airos.markdown @@ -94,6 +94,18 @@ Active if the device is configured for PPPoE and the PPPoE link state is active. Indicates the role of the device in your network, either 'bridge' or 'router' (see [operating roles](#operating-roles) for more information. +### Wireless Role + +Indicates the role of the device in relation to your wireless network, either 'Access point' or 'Station'. + +### Wireless Mode + +Indicates the mode your device is in 'point-to-point' just two devices connecting to eachother or 'point-to-multipoint' for multiple devices connecting to this device. + +### Wireless Distance + +The reported distance between your devices. + ### Wireless Frequency The base frequency set for this device. @@ -114,6 +126,10 @@ These sensors show the actual data transfer rate (receive and transmit) for this Performance in dB for the device antenna. See [Gain](https://en.wikipedia.org/wiki/Gain_(antenna)) on Wikipedia. +### Uptime + +Time since the device was last started. + ## Data updates Data is polled from devices every 60 seconds. From 8eee34634ba16945b2be4c6692fc7b9e408b9c77 Mon Sep 17 00:00:00 2001 From: Thomas D <11554546+thomasddn@users.noreply.github.com> Date: Sat, 16 Aug 2025 09:02:49 +0200 Subject: [PATCH 38/58] Add binary sensor platform to qbus integration (#40273) --- source/_integrations/qbus.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/qbus.markdown b/source/_integrations/qbus.markdown index 63bbec40cc07..df3d57020956 100644 --- a/source/_integrations/qbus.markdown +++ b/source/_integrations/qbus.markdown @@ -2,6 +2,7 @@ title: Qbus description: Instructions on how to integrate your Qbus installation with Home Assistant. ha_category: + - Binary sensor - Climate - Cover - Hub @@ -10,6 +11,7 @@ ha_category: - Sensor - Switch ha_platforms: + - binary_sensor - climate - cover - light @@ -50,6 +52,7 @@ There is currently support for the following **Qbus** products within Home Assis ## Available entities +- **Binary sensor**: display values from weather stations and controller information. - **Climate**: manage thermostats by setting temperature and choosing presets. - **Cover**: operate covers with support for actions like open, close, stop, position adjustment, and tilt — depending on your setup. - **Light**: control dimmer lights, allowing both on/off functionality and brightness adjustment. From e18423f5245c4540d4ec29c2e5ee2fa182fc6267 Mon Sep 17 00:00:00 2001 From: Pete Sage <76050312+PeteRager@users.noreply.github.com> Date: Sun, 17 Aug 2025 11:16:32 -0400 Subject: [PATCH 39/58] Add Sonos speech enhancement select (#40453) --- source/_integrations/sonos.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 75385010b420..497731c28870 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -30,7 +30,7 @@ The `sonos` integration allows you to control your [Sonos](https://www.sonos.com ## Feature controls & sensors -Speaker-level controls are exposed as `number` or `switch` entities. Additionally, various `sensor` and `binary_sensor` entities are provided. +Speaker-level controls are exposed as `number`, `select` or `switch` entities. Additionally, various `sensor` and `binary_sensor` entities are provided. ### Controllable features @@ -45,6 +45,14 @@ Speaker-level controls are exposed as `number` or `switch` entities. Additionall - **Home theater devices**: Audio Input Format - **Voice-enabled devices**: Microphone Enabled +### Select + +The following select entities are created: + +- **Dialog Level** + Lets you set the dialog mode on your **Sonos Arc Ultra** soundbar. You can choose from None, Low, Medium, High, or Max. + + ### Battery support notes Battery sensors are fully supported for the `Sonos Roam` and `Sonos Move` devices on S2 firmware. `Sonos Move` speakers still on S1 firmware are supported but may update infrequently. From 32c7c4b05aa5fc805d2c596df699ce34f157cd9d Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Mon, 18 Aug 2025 07:59:11 +0200 Subject: [PATCH 40/58] Add mention of number entity (#40426) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/togrill.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_integrations/togrill.markdown b/source/_integrations/togrill.markdown index 95178fd98f9e..53d061f4a940 100644 --- a/source/_integrations/togrill.markdown +++ b/source/_integrations/togrill.markdown @@ -6,10 +6,12 @@ ha_config_flow: true ha_release: '2025.9' ha_category: - Sensor + - Number ha_domain: togrill ha_bluetooth: true ha_platforms: - sensor + - number ha_integration_type: device ha_codeowners: - '@elupus' @@ -45,6 +47,11 @@ Many ToGrill compatible devices exist from many different vendors. Only a subset **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. From 46190c5efed757d8864536cc61e46d2db96c6e4e Mon Sep 17 00:00:00 2001 From: dontinelli <73341522+dontinelli@users.noreply.github.com> Date: Mon, 18 Aug 2025 11:15:59 +0200 Subject: [PATCH 41/58] Add documentation for new extra attributes for fyta (#40410) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/fyta.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index a391e4f19263..5b233edcc509 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -101,6 +101,8 @@ For plant measurements, the following status scale is applied: - High - Too High +For the measurement sensors (light, moisture, salinity, and temperature), the maximal/minimal values that define the ranges of what is considered acceptable and good for the plant are saved as an extra attribute of the sensor. For example: Below 10 it's too cold, that could be the minimum acceptable. 15 could be the minimum of the good range. Between 15 and 30 is perfect. 30 would be maximum good and 35 would be the maximum acceptable. Above 35 it's too hot. These values can be used for automations or visualizations on the dashboard. + ## Data updates The integration fetches data from the device every 4 minutes. From 8e725960bd9b8129dc2ac07d61f3244bf10816c2 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Mon, 18 Aug 2025 13:59:10 +0100 Subject: [PATCH 42/58] Add date card feature docs (#40441) --- source/dashboards/features.markdown | 21 +++++++++++++++++++++ source/images/dashboards/features/date.png | Bin 0 -> 9925 bytes 2 files changed, 21 insertions(+) create mode 100644 source/images/dashboards/features/date.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 12fb0426c0fc..7405663ef210 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -322,6 +322,27 @@ 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 + 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). diff --git a/source/images/dashboards/features/date.png b/source/images/dashboards/features/date.png new file mode 100644 index 0000000000000000000000000000000000000000..8359ba146cbbdede1dfe87d7c2487d98fc21f248 GIT binary patch literal 9925 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 W+A+Pa(6BEJOHoc0RdCNF@c#jb{eyD= literal 0 HcmV?d00001 From 717bd969b3d397db1d02afa103635113820be015 Mon Sep 17 00:00:00 2001 From: Andrew Jackson Date: Mon, 18 Aug 2025 16:47:06 +0100 Subject: [PATCH 43/58] Add bronze quality scale to Mastodon (#40491) --- source/_integrations/mastodon.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index aeade9c4be23..2c147c595644 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -16,6 +16,7 @@ ha_platforms: - sensor ha_integration_type: service ha_config_flow: true +ha_quality_scale: bronze --- The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to post status updates and get account statistics. From a08b300552a8bfeaf0f6acda9ba3fb971211d71e Mon Sep 17 00:00:00 2001 From: Matrix Date: Tue, 19 Aug 2025 20:10:42 +0800 Subject: [PATCH 44/58] Updated the list of models supported by YoLink integration (#40510) --- source/_integrations/yolink.markdown | 3 +++ 1 file changed, 3 insertions(+) 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 From 40f89f1a65c5fb18332fe5d8773d0217687d0978 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Tue, 19 Aug 2025 15:02:45 +0200 Subject: [PATCH 45/58] Add mention of event entity (#40488) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/togrill.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/togrill.markdown b/source/_integrations/togrill.markdown index 53d061f4a940..1571e6de3a5c 100644 --- a/source/_integrations/togrill.markdown +++ b/source/_integrations/togrill.markdown @@ -5,11 +5,13 @@ 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 @@ -42,6 +44,10 @@ Many ToGrill compatible devices exist from many different vendors. Only a subset |----------------------------------|--------| | 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 From 0dea6db2865a8500840f951df60d32dcce1a0d2a Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:09:23 -0700 Subject: [PATCH 46/58] Update todo-list.markdown (#40473) --- source/_dashboards/todo-list.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_dashboards/todo-list.markdown b/source/_dashboards/todo-list.markdown index 0ba350db3f00..bae5752cd4a7 100644 --- a/source/_dashboards/todo-list.markdown +++ b/source/_dashboards/todo-list.markdown @@ -76,6 +76,11 @@ display_order: description: "Optionally sorts the items in the to-do list for display. Options are: `none`: Show the list in its original order. `alpha_asc`: Sort the list in alphabetical order. `alpha_desc`: Sort the list in reverse alphabetical order. `duedate_asc`: Sort the list by due date (soonest first). `duedate_desc`: Sort the list by reverse due date (soonest last)." type: string default: "none" +item_tap_action: + required: false + description: "Defines the behavior when an item's body is clicked. Options are: `edit` (opens the edit dialog), `toggle` (marks or unmarks the item as completed, hiding the edit dialog)." + type: string + default: "edit" {% endconfiguration %} ### Examples From 2aa28afada86b045c8190a20902df42c734a4d7b Mon Sep 17 00:00:00 2001 From: pcan08 <155250376+pcan08@users.noreply.github.com> Date: Wed, 20 Aug 2025 10:52:52 +0200 Subject: [PATCH 47/58] Add fan-oscillate dashboard feature documentation (#40403) --- source/dashboards/features.markdown | 21 ++++++++++++++++++ .../dashboards/features/fan_oscillate.png | Bin 0 -> 5094 bytes 2 files changed, 21 insertions(+) create mode 100644 source/images/dashboards/features/fan_oscillate.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 7405663ef210..963c98c215a7 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -364,6 +364,27 @@ type: 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 + 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). diff --git a/source/images/dashboards/features/fan_oscillate.png b/source/images/dashboards/features/fan_oscillate.png new file mode 100644 index 0000000000000000000000000000000000000000..e72300bfb11258b406ea3e8f506e317e58a2449e GIT binary patch literal 5094 zcmZ`-WmJ^i7M@Q(kZ$P~5ReAx9EOsTmd+ui2LWejkOs+-b_h{YgrPg68w8|5y1U`N z-gW=pcdhfDb=Ep-pL2FR&)z%owT2Qt4mA!41j1KQhG+xxJTUyQFo8eYwCyP{{p$%< z(ZvEj1eQ$%u%?13yn*Ss+QPgoJ)j^v7guK}x2LrS6zbw>?+QD3+#(HZV*k5I-UDh0 zb8vNG)OB!%f}EiqJdFH;jFzr9Fh&7BftQSYV&VdV;z9zl+(Ek_5Gh0jBB$$(Q2#%%ag5o4MrkHO1#`1@ntuksvVM*U^^jd z{xr2WT;wJCFWAN-RzjB%NMwE4>XFZg5Prtshe<~TJv}uxQp^x0XcsR3FG!vi%v5Py z=ur^JzlA|hueZ0CN*E#kVQAxIbbeml#f3*qOe{~kmT0DP^=M>fCbEC6-KB=mckVN4 zXKSl%=S*8yH?*iI&*&@B3}jr$$jHb|lvXrrNG_ggBw^*`YIAD~Ra^V!(Q`T8AB8Ft zhqMKDEHe^eox-Ka>n->q25nX0mS7vfj6p>{%H0d2mVVXBnauOt&>q{OA_6~ODuQq= zGO8#J2q#tS&wo1DZVJ@)H$s(5+XPtEGl(46P^8R*ihk27j3fodgsZWT!|=S&T&?!e zh2?C;kbf%M0tf9|QS7y9iX~AdD^a_`j;NiH_9`cFspX!J-Jy9}x1;R$Sea~ia`=T> zOy(~W3aOQfg_s05*HAkX9YPphw+X0@chXYJSW?SG+)QEG(UB%ep_(?xRQ~b;goW&L(zPgs8lQnSzR{K#jP?b?v2z#WXNSQCJ-VN2(UMQx*3A;Rs4^VS< z=5}^=<}#`M=(Y2!%cxD2r!MsBWJ5<+w==`FS;fJDgGTu6(r>47bq6};8&-to6j_Xn zTfqKl#h2!=mWzL}A-RZs+#{JisoR?b9ryWi*5jrdn74PO>tgeCH%dMn$aMCj}>TdQMo~X?dS&3q!VRS~KsGHiw z>}}f9Gab1sUIde^gyOrF^?1nUNISNatc=egW6h#JeD`FhtRZg73?Azma5Iaz+cCFm z3&sFdRaG5M=xB~kPb(W5Qh_`-hSnwx%oViAXbGMSOP=82N z724eKElSurzg#~?JG}>^8djoS_?(U^S?64EYw~+->k7Nf^;pMC{ao${#}0e%w70(> zN0*V4!;o=5QPY?{wG-Qb$=}>XS1-$w?zR!Bz(3+S6t&ArPTKOxER+Ndy^g*@o^>{z&4wvsIb#&j>tur%+*rhEouE*}MrWtMOeDHlz1&HrLvow)_2Zu=ipoHue)27IbIc*RK)t z4c?Xhckf}Q8+$d2m>&nVA$?tUGzWw^EyyDSd^(|jg+A9H-6s=l!RF^`3yB-M-c*JM zxWpI>GJ9*y^=vNJi>ru}C9QpFM4~CTsmc^d{6;oB4lu6&MZ;o+(-cqhS*hzkZY!OU z$$o@POC?Qs>FMd81fYH2T`!F_8HE{K_-gJ;gHm5V#HFf`r|2c|TA3r`7i-SU5rXC~ z$I9>*(o0?pZR>Kwc`9F z_05v7xk=x8G(4J;(+yOPen)tPPMBcs3}avGe;EU_iIfg*MeH-&5{D338_uBw3C7U@ z2c6jR{-qORv#y@zrlb$&TO1&Ljm*|BGpqysR6c2+%ClQ?>}ridYl*t(#83EIHbvCj z4sT0Hc)X0hb70y^aLwr@_7AB(Kf3Aft34=rosNf@n)2ru9~rx0m%?|IsegPd7fh+i z4K|5b@wc%Mq&_4Z*9l0O{i(Mf8RGApzE_;^{Jl^goK9*^|6_ zOwlm|)VJdobLSgU?@ijMv4)7(kLu5`c(WwO5707R*R`dez2R#wOoSJj-wF&eWku7a zTG~ZP*eE#iV*p6#l~Y;r5q#YF7i~r zD{!20akg<8t2kbW5Q~;&VedeQ6T39QP)Da@P-Jmncc#+1{0=}5S{PNhdWJB*Pk^Z@ zo%g&K#nY!x8!r~%*poazYeLJ0KkVp9P7#}94HJdr7yc%h>%LQ3<8ipuCKvCw97ge` z!m8`Dxp6Z>jJNrc8HjD`!St86w;M8cd%w|tPbm-G==zf$L-zFxae0!!xXXG=AqCs@ zo)ykSr@o(yqa!mVp2yjw!AWJ#U5xp|^;C&jQ+mto8t+}Tpt#!-NJ>gdzS^YHb}+ZT zUi@82F8e^1gh)j|3?(vg+mpAl$lbe$rNcp�-02=M0D|vi-&rjX4*QVuSMa&PdX# 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 Date: Wed, 20 Aug 2025 13:36:55 +0300 Subject: [PATCH 48/58] Add history chart card feature docs (#40461) --- source/dashboards/features.markdown | 22 ++++++++++++++++++ .../features/history-chart-line.png | Bin 0 -> 12376 bytes .../features/history-chart-timeline.png | Bin 0 -> 10327 bytes 3 files changed, 22 insertions(+) create mode 100644 source/images/dashboards/features/history-chart-line.png create mode 100644 source/images/dashboards/features/history-chart-timeline.png diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 963c98c215a7..5c1f141da604 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -42,6 +42,28 @@ Features can be enabled on the following cards: ![Screen recording showing how you can now reorder the HVAC modes on the thermostat shown in a tile card.](/images/blog/2024-05/tile-card-reorder-features.gif) +## History chart + +Widget that displays the history of a [sensor](/integrations/sensor) or [binary_sensor](/integrations/binary_sensor). + +

+ Screenshot of the tile card with the history chart feature for a numeric entity + Screenshot of the tile card with the history chart feature for a non-numeric entity + 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). 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 0000000000000000000000000000000000000000..5b19fc379e2144ae908ebc6ac7b5cf65a5021ee4 GIT binary patch literal 12376 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 Date: Wed, 20 Aug 2025 11:25:34 +0100 Subject: [PATCH 49/58] Add configuration for analog clock style --- source/_dashboards/clock.markdown | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index e46deac1691e..9bb786f4aad6 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -25,6 +25,8 @@ All options for this card can be configured via the user interface. {% configuration_basic %} Title: description: Adds a title to the top of the card +Clock Style: + description: Allows the clock to be displayed in a digital or analog style. Defaults to digital. Clock Size: description: Adjusts the size of the text allowing a wider range of use with different types of dashboards. Defaults to small. Display Seconds: @@ -33,6 +35,30 @@ Time Format: description: Allows the time format to be changed on a per-card level. Defaults to the user profile setting. Time Zone: description: Change the timezone used for the time on a per-card level. Defaults to the user profile setting. +Analog Options: + description: When using the analog clock style, this allows the user to configure the appearance of the clock. + type: object + required: false + options: + Border: + description: Shows a border around the clock face. Defaults to false. + type: boolean + required: false + default: false + Ticks: + description: Shows ticks (indices) on the clock face. Defaults to hour. + type: select + required: false + default: hour + options: + none: + description: No ticks are shown. + quarter: + description: Quarter hour ticks are shown. + hour: + description: Hour ticks are shown. + minute: + description: Minute ticks are shown. {% endconfiguration_basic %} ### Examples From 9ad532716e1a3671fa59d57526bd193f83524b08 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 11:35:19 +0100 Subject: [PATCH 50/58] Change to standard config --- source/_dashboards/clock.markdown | 37 ++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index 9bb786f4aad6..e21eeebddaab 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -22,30 +22,45 @@ All options for this card can be configured via the user interface. ## Card settings -{% configuration_basic %} -Title: +{% configuration %} +title: description: Adds a title to the top of the card -Clock Style: + type: string + required: false +clock_style: description: Allows the clock to be displayed in a digital or analog style. Defaults to digital. -Clock Size: + type: string + required: false + default: digital +clock_size: description: Adjusts the size of the text allowing a wider range of use with different types of dashboards. Defaults to small. -Display Seconds: + type: string + required: false + default: small +show_seconds: description: Shows seconds alongside the clock, providing the time format is in a 12-hour format. -Time Format: + type: boolean + required: false + default: false +time_format: description: Allows the time format to be changed on a per-card level. Defaults to the user profile setting. -Time Zone: + type: string + required: false +time_zone: description: Change the timezone used for the time on a per-card level. Defaults to the user profile setting. -Analog Options: + type: string + required: false +analog_options: description: When using the analog clock style, this allows the user to configure the appearance of the clock. type: object required: false options: - Border: + border: description: Shows a border around the clock face. Defaults to false. type: boolean required: false default: false - Ticks: + ticks: description: Shows ticks (indices) on the clock face. Defaults to hour. type: select required: false @@ -59,7 +74,7 @@ Analog Options: description: Hour ticks are shown. minute: description: Minute ticks are shown. -{% endconfiguration_basic %} +{% endconfiguration %} ### Examples From 5a36085d816bf8de2ebd92e86b0ebc1dc524b57a Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 11:38:17 +0100 Subject: [PATCH 51/58] Fix --- source/_dashboards/clock.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index e21eeebddaab..08facae4509e 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -52,9 +52,9 @@ time_zone: required: false analog_options: description: When using the analog clock style, this allows the user to configure the appearance of the clock. - type: object + type: map required: false - options: + keys: border: description: Shows a border around the clock face. Defaults to false. type: boolean From b9a115a2034bba8a4f18cdd308a52b69006a038c Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 11:46:15 +0100 Subject: [PATCH 52/58] Fix --- source/_dashboards/clock.markdown | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index 08facae4509e..9cf777018092 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -19,7 +19,6 @@ Screenshot of the clock card All options for this card can be configured via the user interface. - ## Card settings {% configuration %} @@ -62,10 +61,10 @@ analog_options: default: false ticks: description: Shows ticks (indices) on the clock face. Defaults to hour. - type: select + type: list required: false default: hour - options: + keys: none: description: No ticks are shown. quarter: @@ -89,7 +88,6 @@ type: clock Screenshot of the basic clock card

- Example of a larger clock card for tablet dashboards: ```yaml From c812bd69fdfce4c1518ecd53cac655190bca7613 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 11:46:55 +0100 Subject: [PATCH 53/58] Make lists --- source/_dashboards/clock.markdown | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index 9cf777018092..b876fffe6559 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -28,14 +28,26 @@ title: required: false clock_style: description: Allows the clock to be displayed in a digital or analog style. Defaults to digital. - type: string + type: list required: false default: digital + keys: + digital: + description: Digital clock style. + analog: + description: Analog clock style. clock_size: description: Adjusts the size of the text allowing a wider range of use with different types of dashboards. Defaults to small. - type: string + type: list required: false default: small + keys: + small: + description: Small clock size. + medium: + description: Medium clock size. + large: + description: Large clock size. show_seconds: description: Shows seconds alongside the clock, providing the time format is in a 12-hour format. type: boolean From 24d2f600b75a4c13e3e297c16b59ed8edb6061e1 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 11:59:35 +0100 Subject: [PATCH 54/58] Add examples --- source/_dashboards/clock.markdown | 32 ++++++++++++++++++ .../clock_card_analog_hour_ticks.png | Bin 0 -> 8564 bytes .../clock_card_analog_minute_ticks_border.png | Bin 0 -> 19225 bytes 3 files changed, 32 insertions(+) create mode 100644 source/images/dashboards/clock_card_analog_hour_ticks.png create mode 100644 source/images/dashboards/clock_card_analog_minute_ticks_border.png diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index b876fffe6559..8345f4d7fbdd 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -158,3 +158,35 @@ title: New York 🦅 Screenshot of a medium sized, 12 hour clock showing am/pm and seconds based in New York along with a title Screenshot of a medium sized, 12 hour clock showing am/pm and seconds based in New York along with a title

+ +Analog clock with border and hour ticks: + +```yaml +type: clock +clock_style: analog +clock_size: medium +analog_options: + border: false + ticks: hour +``` + +

+Screenshot of a medium sized, analog clock and hour ticks +Screenshot of a medium sized, analog clock and hour ticks +

+ +Analog clock with border and minute ticks: + +```yaml +type: clock +clock_style: analog +clock_size: medium +analog_options: + border: true + ticks: minute +``` + +

+Screenshot of a medium sized, analog clock and minute ticks +Screenshot of a medium sized, analog clock and minute ticks +

diff --git a/source/images/dashboards/clock_card_analog_hour_ticks.png b/source/images/dashboards/clock_card_analog_hour_ticks.png new file mode 100644 index 0000000000000000000000000000000000000000..f3654bfdfce329968c14e4ce85bbf1bcab177518 GIT binary patch literal 8564 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 literal 0 HcmV?d00001 diff --git a/source/images/dashboards/clock_card_analog_minute_ticks_border.png b/source/images/dashboards/clock_card_analog_minute_ticks_border.png new file mode 100644 index 0000000000000000000000000000000000000000..f19f269507394069e8b3d9b65d99b5fc52a8e6e8 GIT binary patch literal 19225 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 literal 0 HcmV?d00001 From 81a09fee2ffcf9149e732b29d389b64e74a96d2c Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 12:03:10 +0100 Subject: [PATCH 55/58] Add example with title --- source/_dashboards/clock.markdown | 25 +++++++++++++++--- ...og_no_ticks_border_title_mountain_time.png | Bin 0 -> 14301 bytes 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 source/images/dashboards/clock_card_analog_no_ticks_border_title_mountain_time.png diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index 8345f4d7fbdd..065513e01fcb 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -175,18 +175,37 @@ analog_options: Screenshot of a medium sized, analog clock and hour ticks

-Analog clock with border and minute ticks: +Analog clock with border and minute ticks showing seconds: ```yaml type: clock clock_style: analog clock_size: medium +show_seconds: true analog_options: border: true ticks: minute ```

-Screenshot of a medium sized, analog clock and minute ticks -Screenshot of a medium sized, analog clock and minute ticks +Screenshot of a medium sized, analog clock and minute ticks showing seconds +Screenshot of a medium sized, analog clock and minute ticks showing seconds +

+ +Analog clock with a title, no ticks and border with seconds: + +```yaml +type: clock +clock_style: analog +clock_size: medium +show_seconds: true +analog_options: + border: true + ticks: none +title: Mountain Time +``` + +

+Screenshot of a medium sized, analog clock with a title, no ticks and border showing seconds +Screenshot of a medium sized, analog clock with a title, no ticks and border showing seconds

diff --git a/source/images/dashboards/clock_card_analog_no_ticks_border_title_mountain_time.png b/source/images/dashboards/clock_card_analog_no_ticks_border_title_mountain_time.png new file mode 100644 index 0000000000000000000000000000000000000000..66e6f208def9315780b0d29aa521c6ea36e5dc7e GIT binary patch literal 14301 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 literal 0 HcmV?d00001 From f9bc84d124b43adf702212d298b082276bf2a6e6 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 12:05:09 +0100 Subject: [PATCH 56/58] Crop --- .../clock_card_analog_hour_ticks.png | Bin 8564 -> 8559 bytes .../clock_card_analog_minute_ticks_border.png | Bin 19225 -> 19409 bytes ...og_no_ticks_border_title_mountain_time.png | Bin 14301 -> 14323 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/dashboards/clock_card_analog_hour_ticks.png b/source/images/dashboards/clock_card_analog_hour_ticks.png index f3654bfdfce329968c14e4ce85bbf1bcab177518..1eeaa17106f06b55d1e7c1046c050c2598224623 100644 GIT binary patch literal 8559 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 literal 8564 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 diff --git a/source/images/dashboards/clock_card_analog_minute_ticks_border.png b/source/images/dashboards/clock_card_analog_minute_ticks_border.png index f19f269507394069e8b3d9b65d99b5fc52a8e6e8..4479ff5830d28e38c23f5bcd85ef6dd0a047290e 100644 GIT binary patch literal 19409 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

6ARh(adGO$YDgShEO^q-Jtl&7! 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 literal 19225 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 diff --git a/source/images/dashboards/clock_card_analog_no_ticks_border_title_mountain_time.png b/source/images/dashboards/clock_card_analog_no_ticks_border_title_mountain_time.png index 66e6f208def9315780b0d29aa521c6ea36e5dc7e..6148361bcbd60a6079d7dffff530ac360dafc5ec 100644 GIT binary patch literal 14323 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 SQw{FfLDZDBl*$yWUi~k@`LPH9 literal 14301 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 From e215da19f8e0af3d6295094db4c844b203fb2c26 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 12:07:41 +0100 Subject: [PATCH 57/58] Fix --- source/_dashboards/clock.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index 065513e01fcb..fbcfee99ea35 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -188,7 +188,7 @@ analog_options: ```

-Screenshot of a medium sized, analog clock and minute ticks showing seconds +Screenshot of a medium sized, analog clock and minute ticks showing seconds Screenshot of a medium sized, analog clock and minute ticks showing seconds

From 520eb78f3c142ded0a3ff6b23434a9038dc21909 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 20 Aug 2025 12:11:44 +0100 Subject: [PATCH 58/58] Typo --- source/_dashboards/clock.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_dashboards/clock.markdown b/source/_dashboards/clock.markdown index fbcfee99ea35..2e2ed65d4b87 100644 --- a/source/_dashboards/clock.markdown +++ b/source/_dashboards/clock.markdown @@ -159,7 +159,7 @@ title: New York 🦅 Screenshot of a medium sized, 12 hour clock showing am/pm and seconds based in New York along with a title

-Analog clock with border and hour ticks: +Analog clock with no border and hour ticks: ```yaml type: clock