From 3126762707f49775c78b9beb484dff17bf6941cb Mon Sep 17 00:00:00 2001 From: TheJulianJES Date: Sun, 9 Oct 2022 15:11:42 +0200 Subject: [PATCH] Add friendly name to ZHA config entities (#79926) * Add friendly name to ZHA config entities * Follow HA capitalization conventions * Change from "Start-up level" to "Start-up current level" * Remove siren select friendly names (temporarily) * Change tests to expect new entity ids * Re-add siren select friendly names * Change siren tests to expect new entity ids --- homeassistant/components/zha/button.py | 2 + homeassistant/components/zha/number.py | 9 ++++ homeassistant/components/zha/select.py | 9 ++++ homeassistant/components/zha/switch.py | 3 ++ tests/components/zha/test_device_action.py | 8 ++-- tests/components/zha/test_number.py | 2 +- tests/components/zha/test_select.py | 10 ++--- tests/components/zha/zha_devices_list.py | 48 +++++++++++----------- 8 files changed, 57 insertions(+), 34 deletions(-) diff --git a/homeassistant/components/zha/button.py b/homeassistant/components/zha/button.py index fcc040cbde2..cb0463a855f 100644 --- a/homeassistant/components/zha/button.py +++ b/homeassistant/components/zha/button.py @@ -159,6 +159,7 @@ class FrostLockResetButton(ZHAAttributeButton, id_suffix="reset_frost_lock"): """Defines a ZHA frost lock reset button.""" _attribute_name = "frost_lock_reset" + _attr_name = "Frost lock reset" _attribute_value = 0 _attr_device_class = ButtonDeviceClass.RESTART _attr_entity_category = EntityCategory.CONFIG @@ -171,6 +172,7 @@ class NoPresenceStatusResetButton( """Defines a ZHA no presence status reset button.""" _attribute_name = "reset_no_presence_status" + _attr_name = "Presence status reset" _attribute_value = 1 _attr_device_class = ButtonDeviceClass.RESTART _attr_entity_category = EntityCategory.CONFIG diff --git a/homeassistant/components/zha/number.py b/homeassistant/components/zha/number.py index 3bace412744..9203986057d 100644 --- a/homeassistant/components/zha/number.py +++ b/homeassistant/components/zha/number.py @@ -455,6 +455,7 @@ class AqaraMotionDetectionInterval( _attr_native_min_value: float = 2 _attr_native_max_value: float = 65535 _zcl_attribute: str = "detection_interval" + _attr_name = "Detection interval" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -466,6 +467,7 @@ class OnOffTransitionTimeConfigurationEntity( _attr_native_min_value: float = 0x0000 _attr_native_max_value: float = 0xFFFF _zcl_attribute: str = "on_off_transition_time" + _attr_name = "On/Off transition time" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -475,6 +477,7 @@ class OnLevelConfigurationEntity(ZHANumberConfigurationEntity, id_suffix="on_lev _attr_native_min_value: float = 0x00 _attr_native_max_value: float = 0xFF _zcl_attribute: str = "on_level" + _attr_name = "On level" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -486,6 +489,7 @@ class OnTransitionTimeConfigurationEntity( _attr_native_min_value: float = 0x0000 _attr_native_max_value: float = 0xFFFE _zcl_attribute: str = "on_transition_time" + _attr_name = "On transition time" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -497,6 +501,7 @@ class OffTransitionTimeConfigurationEntity( _attr_native_min_value: float = 0x0000 _attr_native_max_value: float = 0xFFFE _zcl_attribute: str = "off_transition_time" + _attr_name = "Off transition time" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -508,6 +513,7 @@ class DefaultMoveRateConfigurationEntity( _attr_native_min_value: float = 0x00 _attr_native_max_value: float = 0xFE _zcl_attribute: str = "default_move_rate" + _attr_name = "Default move rate" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_LEVEL) @@ -519,6 +525,7 @@ class StartUpCurrentLevelConfigurationEntity( _attr_native_min_value: float = 0x00 _attr_native_max_value: float = 0xFF _zcl_attribute: str = "start_up_current_level" + _attr_name = "Start-up current level" @CONFIG_DIAGNOSTIC_MATCH( @@ -536,6 +543,7 @@ class TimerDurationMinutes(ZHANumberConfigurationEntity, id_suffix="timer_durati _attr_native_max_value: float = 0x257 _attr_native_unit_of_measurement: str | None = UNITS[72] _zcl_attribute: str = "timer_duration" + _attr_name = "Timer duration" @CONFIG_DIAGNOSTIC_MATCH(channel_names="ikea_airpurifier") @@ -548,6 +556,7 @@ class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time") _attr_native_max_value: float = 0xFFFFFFFF _attr_native_unit_of_measurement: str | None = UNITS[72] _zcl_attribute: str = "filter_life_time" + _attr_name = "Filter life time" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_INOVELLI) diff --git a/homeassistant/components/zha/select.py b/homeassistant/components/zha/select.py index 8b2623b4de1..c2f315cd217 100644 --- a/homeassistant/components/zha/select.py +++ b/homeassistant/components/zha/select.py @@ -123,6 +123,7 @@ class ZHADefaultToneSelectEntity( """Representation of a ZHA default siren tone select entity.""" _enum = IasWd.Warning.WarningMode + _attr_name = "Default siren tone" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_IAS_WD) @@ -132,6 +133,7 @@ class ZHADefaultSirenLevelSelectEntity( """Representation of a ZHA default siren level select entity.""" _enum = IasWd.Warning.SirenLevel + _attr_name = "Default siren level" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_IAS_WD) @@ -141,6 +143,7 @@ class ZHADefaultStrobeLevelSelectEntity( """Representation of a ZHA default siren strobe level select entity.""" _enum = IasWd.StrobeLevel + _attr_name = "Default strobe level" @CONFIG_DIAGNOSTIC_MATCH(channel_names=CHANNEL_IAS_WD) @@ -148,6 +151,7 @@ class ZHADefaultStrobeSelectEntity(ZHANonZCLSelectEntity, id_suffix=Strobe.__nam """Representation of a ZHA default siren strobe select entity.""" _enum = Strobe + _attr_name = "Default strobe" class ZCLEnumSelectEntity(ZhaEntity, SelectEntity): @@ -220,6 +224,7 @@ class ZHAStartupOnOffSelectEntity( _select_attr = "start_up_on_off" _enum = OnOff.StartUpOnOff + _attr_name = "Start-up behavior" class AqaraMotionSensitivities(types.enum8): @@ -238,6 +243,7 @@ class AqaraMotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity" _select_attr = "motion_sensitivity" _enum = AqaraMotionSensitivities + _attr_name = "Motion sensitivity" class AqaraMonitoringModess(types.enum8): @@ -253,6 +259,7 @@ class AqaraMonitoringMode(ZCLEnumSelectEntity, id_suffix="monitoring_mode"): _select_attr = "monitoring_mode" _enum = AqaraMonitoringModess + _attr_name = "Monitoring mode" class AqaraApproachDistances(types.enum8): @@ -269,6 +276,7 @@ class AqaraApproachDistance(ZCLEnumSelectEntity, id_suffix="approach_distance"): _select_attr = "approach_distance" _enum = AqaraApproachDistances + _attr_name = "Approach distance" class AqaraE1ReverseDirection(types.enum8): @@ -286,6 +294,7 @@ class AqaraCurtainMode(ZCLEnumSelectEntity, id_suffix="window_covering_mode"): _select_attr = "window_covering_mode" _enum = AqaraE1ReverseDirection + _attr_name = "Curtain mode" class InovelliOutputMode(types.enum1): diff --git a/homeassistant/components/zha/switch.py b/homeassistant/components/zha/switch.py index 47568648f2b..3db142694fb 100644 --- a/homeassistant/components/zha/switch.py +++ b/homeassistant/components/zha/switch.py @@ -290,6 +290,7 @@ class P1MotionTriggerIndicatorSwitch( """Representation of a ZHA motion triggering configuration entity.""" _zcl_attribute: str = "trigger_indicator" + _attr_name = "LED trigger indicator" @CONFIG_DIAGNOSTIC_MATCH( @@ -300,6 +301,7 @@ class ChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"): """ZHA BinarySensor.""" _zcl_attribute: str = "child_lock" + _attr_name = "Child lock" @CONFIG_DIAGNOSTIC_MATCH( @@ -310,6 +312,7 @@ class DisableLed(ZHASwitchConfigurationEntity, id_suffix="disable_led"): """ZHA BinarySensor.""" _zcl_attribute: str = "disable_led" + _attr_name = "Disable LED" @CONFIG_DIAGNOSTIC_MATCH( diff --git a/tests/components/zha/test_device_action.py b/tests/components/zha/test_device_action.py index e745856c342..a5e23d420d9 100644 --- a/tests/components/zha/test_device_action.py +++ b/tests/components/zha/test_device_action.py @@ -125,28 +125,28 @@ async def test_get_actions(hass, device_ias): "domain": Platform.SELECT, "type": "select_option", "device_id": reg_device.id, - "entity_id": "select.fakemanufacturer_fakemodel_defaulttoneselect", + "entity_id": "select.fakemanufacturer_fakemodel_default_siren_tone", "metadata": {"secondary": True}, }, { "domain": Platform.SELECT, "type": "select_option", "device_id": reg_device.id, - "entity_id": "select.fakemanufacturer_fakemodel_defaultsirenlevelselect", + "entity_id": "select.fakemanufacturer_fakemodel_default_siren_level", "metadata": {"secondary": True}, }, { "domain": Platform.SELECT, "type": "select_option", "device_id": reg_device.id, - "entity_id": "select.fakemanufacturer_fakemodel_defaultstrobelevelselect", + "entity_id": "select.fakemanufacturer_fakemodel_default_strobe_level", "metadata": {"secondary": True}, }, { "domain": Platform.SELECT, "type": "select_option", "device_id": reg_device.id, - "entity_id": "select.fakemanufacturer_fakemodel_defaultstrobeselect", + "entity_id": "select.fakemanufacturer_fakemodel_default_strobe", "metadata": {"secondary": True}, }, ] diff --git a/tests/components/zha/test_number.py b/tests/components/zha/test_number.py index 0bb620e98f4..6af98b35e09 100644 --- a/tests/components/zha/test_number.py +++ b/tests/components/zha/test_number.py @@ -211,7 +211,7 @@ async def test_level_control_number( Platform.NUMBER, zha_device, hass, - qualifier=attr.replace("_", ""), + qualifier=attr, ) assert entity_id is not None diff --git a/tests/components/zha/test_select.py b/tests/components/zha/test_select.py index b9c72975823..e9a7f476efb 100644 --- a/tests/components/zha/test_select.py +++ b/tests/components/zha/test_select.py @@ -163,7 +163,7 @@ async def test_select_restore_state( ): """Test zha select entity restore state.""" - entity_id = "select.fakemanufacturer_fakemodel_defaulttoneselect" + entity_id = "select.fakemanufacturer_fakemodel_default_siren_tone" core_rs(entity_id, state="Burglar") zigpy_device = zigpy_device_mock( @@ -202,12 +202,12 @@ async def test_on_off_select_new_join(hass, light, zha_device_joined): "start_up_on_off": general.OnOff.StartUpOnOff.On } zha_device = await zha_device_joined(light) - select_name = general.OnOff.StartUpOnOff.__name__ + select_name = "start_up_behavior" entity_id = await find_entity_id( Platform.SELECT, zha_device, hass, - qualifier=select_name.lower(), + qualifier=select_name, ) assert entity_id is not None @@ -285,12 +285,12 @@ async def test_on_off_select_restored(hass, light, zha_device_restored): in on_off_cluster.read_attributes.call_args_list ) - select_name = general.OnOff.StartUpOnOff.__name__ + select_name = "start_up_behavior" entity_id = await find_entity_id( Platform.SELECT, zha_device, hass, - qualifier=select_name.lower(), + qualifier=select_name, ) assert entity_id is not None diff --git a/tests/components/zha/zha_devices_list.py b/tests/components/zha/zha_devices_list.py index 2d15f9335db..f79ba06f721 100644 --- a/tests/components/zha/zha_devices_list.py +++ b/tests/components/zha/zha_devices_list.py @@ -649,10 +649,10 @@ DEVICES = [ "binary_sensor.climaxtechnology_sd8sc_00_00_03_12tc_iaszone", "sensor.climaxtechnology_sd8sc_00_00_03_12tc_rssi", "sensor.climaxtechnology_sd8sc_00_00_03_12tc_lqi", - "select.climaxtechnology_sd8sc_00_00_03_12tc_defaulttoneselect", - "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultsirenlevelselect", - "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultstrobelevelselect", - "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultstrobeselect", + "select.climaxtechnology_sd8sc_00_00_03_12tc_default_siren_tone", + "select.climaxtechnology_sd8sc_00_00_03_12tc_default_siren_level", + "select.climaxtechnology_sd8sc_00_00_03_12tc_default_strobe_level", + "select.climaxtechnology_sd8sc_00_00_03_12tc_default_strobe", "siren.climaxtechnology_sd8sc_00_00_03_12tc_siren", ], DEV_SIG_ENT_MAP: { @@ -679,22 +679,22 @@ DEVICES = [ ("select", "00:11:22:33:44:55:66:77-1-1282-WarningMode"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultToneSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_defaulttoneselect", + DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_default_siren_tone", }, ("select", "00:11:22:33:44:55:66:77-1-1282-SirenLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultSirenLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultsirenlevelselect", + DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_default_siren_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-StrobeLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultstrobelevelselect", + DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_default_strobe_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-Strobe"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_defaultstrobeselect", + DEV_SIG_ENT_MAP_ID: "select.climaxtechnology_sd8sc_00_00_03_12tc_default_strobe", }, ("siren", "00:11:22:33:44:55:66:77-1-1282"): { DEV_SIG_CHANNELS: ["ias_wd"], @@ -819,10 +819,10 @@ DEVICES = [ "binary_sensor.heiman_smokesensor_em_iaszone", "sensor.heiman_smokesensor_em_rssi", "sensor.heiman_smokesensor_em_lqi", - "select.heiman_smokesensor_em_defaulttoneselect", - "select.heiman_smokesensor_em_defaultsirenlevelselect", - "select.heiman_smokesensor_em_defaultstrobelevelselect", - "select.heiman_smokesensor_em_defaultstrobeselect", + "select.heiman_smokesensor_em_default_siren_tone", + "select.heiman_smokesensor_em_default_siren_level", + "select.heiman_smokesensor_em_default_strobe_level", + "select.heiman_smokesensor_em_default_strobe", "siren.heiman_smokesensor_em_siren", ], DEV_SIG_ENT_MAP: { @@ -854,22 +854,22 @@ DEVICES = [ ("select", "00:11:22:33:44:55:66:77-1-1282-WarningMode"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultToneSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_defaulttoneselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_default_siren_tone", }, ("select", "00:11:22:33:44:55:66:77-1-1282-SirenLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultSirenLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_defaultsirenlevelselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_default_siren_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-StrobeLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_defaultstrobelevelselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_default_strobe_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-Strobe"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_defaultstrobeselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_smokesensor_em_default_strobe", }, ("siren", "00:11:22:33:44:55:66:77-1-1282"): { DEV_SIG_CHANNELS: ["ias_wd"], @@ -942,32 +942,32 @@ DEVICES = [ "binary_sensor.heiman_warningdevice_iaszone", "sensor.heiman_warningdevice_rssi", "sensor.heiman_warningdevice_lqi", - "select.heiman_warningdevice_defaulttoneselect", - "select.heiman_warningdevice_defaultsirenlevelselect", - "select.heiman_warningdevice_defaultstrobelevelselect", - "select.heiman_warningdevice_defaultstrobeselect", + "select.heiman_warningdevice_default_siren_tone", + "select.heiman_warningdevice_default_siren_level", + "select.heiman_warningdevice_default_strobe_level", + "select.heiman_warningdevice_default_strobe", "siren.heiman_warningdevice_siren", ], DEV_SIG_ENT_MAP: { ("select", "00:11:22:33:44:55:66:77-1-1282-WarningMode"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultToneSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_defaulttoneselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_default_siren_tone", }, ("select", "00:11:22:33:44:55:66:77-1-1282-SirenLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultSirenLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_defaultsirenlevelselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_default_siren_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-StrobeLevel"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeLevelSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_defaultstrobelevelselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_default_strobe_level", }, ("select", "00:11:22:33:44:55:66:77-1-1282-Strobe"): { DEV_SIG_CHANNELS: ["ias_wd"], DEV_SIG_ENT_MAP_CLASS: "ZHADefaultStrobeSelectEntity", - DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_defaultstrobeselect", + DEV_SIG_ENT_MAP_ID: "select.heiman_warningdevice_default_strobe", }, ("siren", "00:11:22:33:44:55:66:77-1"): { DEV_SIG_CHANNELS: ["ias_wd"],