diff --git a/homeassistant/components/yolink/manifest.json b/homeassistant/components/yolink/manifest.json index 2353afe5f69..088ddd114f8 100644 --- a/homeassistant/components/yolink/manifest.json +++ b/homeassistant/components/yolink/manifest.json @@ -6,5 +6,5 @@ "dependencies": ["auth", "application_credentials"], "documentation": "https://www.home-assistant.io/integrations/yolink", "iot_class": "cloud_push", - "requirements": ["yolink-api==0.2.8"] + "requirements": ["yolink-api==0.2.9"] } diff --git a/homeassistant/components/yolink/sensor.py b/homeassistant/components/yolink/sensor.py index 5f89f54ccbe..75c4949859c 100644 --- a/homeassistant/components/yolink/sensor.py +++ b/homeassistant/components/yolink/sensor.py @@ -14,6 +14,7 @@ from yolink.const import ( ATTR_DEVICE_MOTION_SENSOR, ATTR_DEVICE_MULTI_OUTLET, ATTR_DEVICE_OUTLET, + ATTR_DEVICE_POWER_FAILURE_ALARM, ATTR_DEVICE_SIREN, ATTR_DEVICE_SMART_REMOTER, ATTR_DEVICE_SWITCH, @@ -71,6 +72,7 @@ SENSOR_DEVICE_TYPE = [ ATTR_DEVICE_MULTI_OUTLET, ATTR_DEVICE_SMART_REMOTER, ATTR_DEVICE_OUTLET, + ATTR_DEVICE_POWER_FAILURE_ALARM, ATTR_DEVICE_SIREN, ATTR_DEVICE_SWITCH, ATTR_DEVICE_TH_SENSOR, @@ -86,6 +88,7 @@ BATTERY_POWER_SENSOR = [ ATTR_DEVICE_DOOR_SENSOR, ATTR_DEVICE_LEAK_SENSOR, ATTR_DEVICE_MOTION_SENSOR, + ATTR_DEVICE_POWER_FAILURE_ALARM, ATTR_DEVICE_SMART_REMOTER, ATTR_DEVICE_TH_SENSOR, ATTR_DEVICE_VIBRATION_SENSOR, @@ -110,6 +113,14 @@ def cvt_battery(val: int | None) -> int | None: return 0 +def cvt_volume(val: int | None) -> str | None: + """Convert volume to string.""" + if val is None: + return None + volume_level = {1: "low", 2: "medium", 3: "high"} + return volume_level.get(val, None) + + SENSOR_TYPES: tuple[YoLinkSensorEntityDescription, ...] = ( YoLinkSensorEntityDescription( key="battery", @@ -157,6 +168,41 @@ SENSOR_TYPES: tuple[YoLinkSensorEntityDescription, ...] = ( entity_registry_enabled_default=False, should_update_entity=lambda value: value is not None, ), + YoLinkSensorEntityDescription( + key="state", + device_class=SensorDeviceClass.ENUM, + name="Power failure alarm", + icon="mdi:flash", + options=["normal", "alert", "off"], + exists_fn=lambda device: device.device_type in ATTR_DEVICE_POWER_FAILURE_ALARM, + ), + YoLinkSensorEntityDescription( + key="mute", + device_class=SensorDeviceClass.ENUM, + name="Power failure alarm mute", + icon="mdi:volume-mute", + options=["muted", "unmuted"], + exists_fn=lambda device: device.device_type in ATTR_DEVICE_POWER_FAILURE_ALARM, + value=lambda value: "muted" if value is True else "unmuted", + ), + YoLinkSensorEntityDescription( + key="sound", + device_class=SensorDeviceClass.ENUM, + name="Power failure alarm volume", + icon="mdi:volume-high", + options=["low", "medium", "high"], + exists_fn=lambda device: device.device_type in ATTR_DEVICE_POWER_FAILURE_ALARM, + value=cvt_volume, + ), + YoLinkSensorEntityDescription( + key="beep", + device_class=SensorDeviceClass.ENUM, + name="Power failure alarm beep", + icon="mdi:bullhorn", + options=["enabled", "disabled"], + exists_fn=lambda device: device.device_type in ATTR_DEVICE_POWER_FAILURE_ALARM, + value=lambda value: "enabled" if value is True else "disabled", + ), ) diff --git a/requirements_all.txt b/requirements_all.txt index 3fa15da8b47..e3527fcf35f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2712,7 +2712,7 @@ yeelight==0.7.10 yeelightsunflower==0.0.10 # homeassistant.components.yolink -yolink-api==0.2.8 +yolink-api==0.2.9 # homeassistant.components.youless youless-api==1.0.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ef90db4f5d4..cd4f6be0b78 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1976,7 +1976,7 @@ yalexs==1.5.1 yeelight==0.7.10 # homeassistant.components.yolink -yolink-api==0.2.8 +yolink-api==0.2.9 # homeassistant.components.youless youless-api==1.0.1