YoLink Power Failure Alarm (#91934)

* add ys-7106

* expose mute property

* add volume entity description

* add beep entity description

* fix as suggest
This commit is contained in:
Matrix 2023-05-25 16:44:51 +08:00 committed by GitHub
parent 6df44ff5d5
commit e744632164
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 3 deletions

View File

@ -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"]
}

View File

@ -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",
),
)

View File

@ -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

View File

@ -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