From 4894e3549d787e06bfd75e7d32d240e51684a005 Mon Sep 17 00:00:00 2001 From: Nathan Spencer Date: Fri, 10 Jan 2025 22:15:53 +0000 Subject: [PATCH] Switch busy and wifi_connected sensors to binary sensors --- custom_components/oasis_mini/__init__.py | 1 + custom_components/oasis_mini/binary_sensor.py | 55 +++++++++++++++++++ custom_components/oasis_mini/sensor.py | 8 +-- 3 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 custom_components/oasis_mini/binary_sensor.py diff --git a/custom_components/oasis_mini/__init__.py b/custom_components/oasis_mini/__init__.py index abc62ba..c2d818e 100755 --- a/custom_components/oasis_mini/__init__.py +++ b/custom_components/oasis_mini/__init__.py @@ -19,6 +19,7 @@ type OasisMiniConfigEntry = ConfigEntry[OasisMiniCoordinator] _LOGGER = logging.getLogger(__name__) PLATFORMS = [ + Platform.BINARY_SENSOR, Platform.BUTTON, Platform.IMAGE, Platform.LIGHT, diff --git a/custom_components/oasis_mini/binary_sensor.py b/custom_components/oasis_mini/binary_sensor.py new file mode 100644 index 0000000..742a868 --- /dev/null +++ b/custom_components/oasis_mini/binary_sensor.py @@ -0,0 +1,55 @@ +"""Oasis Mini binary sensor entity.""" + +from __future__ import annotations + +from homeassistant.components.binary_sensor import ( + BinarySensorDeviceClass, + BinarySensorEntity, + BinarySensorEntityDescription, +) +from homeassistant.const import EntityCategory +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from . import OasisMiniConfigEntry +from .coordinator import OasisMiniCoordinator +from .entity import OasisMiniEntity + + +async def async_setup_entry( + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up Oasis Mini sensors using config entry.""" + coordinator: OasisMiniCoordinator = entry.runtime_data + async_add_entities( + OasisMiniBinarySensorEntity(coordinator, descriptor) + for descriptor in DESCRIPTORS + ) + + +DESCRIPTORS = { + BinarySensorEntityDescription( + key="busy", + translation_key="busy", + entity_category=EntityCategory.DIAGNOSTIC, + entity_registry_enabled_default=False, + ), + BinarySensorEntityDescription( + key="wifi_connected", + translation_key="wifi_status", + device_class=BinarySensorDeviceClass.CONNECTIVITY, + entity_category=EntityCategory.DIAGNOSTIC, + entity_registry_enabled_default=False, + ), +} + + +class OasisMiniBinarySensorEntity(OasisMiniEntity, BinarySensorEntity): + """Oasis Mini binary sensor entity.""" + + @property + def is_on(self) -> bool: + """Return true if the binary sensor is on.""" + return getattr(self.device, self.entity_description.key) diff --git a/custom_components/oasis_mini/sensor.py b/custom_components/oasis_mini/sensor.py index 62f3183..a265e7a 100644 --- a/custom_components/oasis_mini/sensor.py +++ b/custom_components/oasis_mini/sensor.py @@ -52,13 +52,7 @@ DESCRIPTORS = { entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ) - for key in ( - "busy", - "error", - "led_color_id", - "status", - "wifi_connected", - ) + for key in ("error", "led_color_id", "status") } CLOUD_DESCRIPTORS = (