From 890c672f8c83dc2a65714fb54b6fe7aad6e12258 Mon Sep 17 00:00:00 2001 From: StaleLoafOfBread <45444205+StaleLoafOfBread@users.noreply.github.com> Date: Mon, 3 Mar 2025 14:21:05 -0500 Subject: [PATCH] Add charging binary_sensor so front end can render battery icon properly (#139684) * Add charging binary sensor * Add charging binary sensor test --- homeassistant/components/roborock/binary_sensor.py | 10 +++++++++- tests/components/roborock/test_binary_sensor.py | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/roborock/binary_sensor.py b/homeassistant/components/roborock/binary_sensor.py index db557f055dc..f2b1564c7b5 100644 --- a/homeassistant/components/roborock/binary_sensor.py +++ b/homeassistant/components/roborock/binary_sensor.py @@ -5,6 +5,7 @@ from __future__ import annotations from collections.abc import Callable from dataclasses import dataclass +from roborock.containers import RoborockStateCode from roborock.roborock_typing import DeviceProp from homeassistant.components.binary_sensor import ( @@ -12,7 +13,7 @@ from homeassistant.components.binary_sensor import ( BinarySensorEntity, BinarySensorEntityDescription, ) -from homeassistant.const import EntityCategory +from homeassistant.const import ATTR_BATTERY_CHARGING, EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback @@ -63,6 +64,13 @@ BINARY_SENSOR_DESCRIPTIONS = [ entity_category=EntityCategory.DIAGNOSTIC, value_fn=lambda data: data.status.in_cleaning, ), + RoborockBinarySensorDescription( + key=ATTR_BATTERY_CHARGING, + device_class=BinarySensorDeviceClass.BATTERY_CHARGING, + entity_category=EntityCategory.DIAGNOSTIC, + value_fn=lambda data: data.status.state + in (RoborockStateCode.charging, RoborockStateCode.charging_complete), + ), ] diff --git a/tests/components/roborock/test_binary_sensor.py b/tests/components/roborock/test_binary_sensor.py index 0e4b338f469..6a234d735e5 100644 --- a/tests/components/roborock/test_binary_sensor.py +++ b/tests/components/roborock/test_binary_sensor.py @@ -18,7 +18,7 @@ async def test_binary_sensors( hass: HomeAssistant, setup_entry: MockConfigEntry ) -> None: """Test binary sensors and check test values are correctly set.""" - assert len(hass.states.async_all("binary_sensor")) == 8 + assert len(hass.states.async_all("binary_sensor")) == 10 assert hass.states.get("binary_sensor.roborock_s7_maxv_mop_attached").state == "on" assert ( hass.states.get("binary_sensor.roborock_s7_maxv_water_box_attached").state @@ -28,3 +28,4 @@ async def test_binary_sensors( hass.states.get("binary_sensor.roborock_s7_maxv_water_shortage").state == "off" ) assert hass.states.get("binary_sensor.roborock_s7_maxv_cleaning").state == "off" + assert hass.states.get("binary_sensor.roborock_s7_maxv_charging").state == "on"