From 07cb4ed193c56a1be5b4bc6ac9dda8490c75d836 Mon Sep 17 00:00:00 2001 From: Necroneco Date: Wed, 12 Mar 2025 15:17:02 +0800 Subject: [PATCH] feat: avoid setting icon when device_class is defined (#855) --- custom_components/xiaomi_home/miot/miot_device.py | 9 ++------- custom_components/xiaomi_home/number.py | 2 +- custom_components/xiaomi_home/sensor.py | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/custom_components/xiaomi_home/miot/miot_device.py b/custom_components/xiaomi_home/miot/miot_device.py index b91be48..13bc68b 100644 --- a/custom_components/xiaomi_home/miot/miot_device.py +++ b/custom_components/xiaomi_home/miot/miot_device.py @@ -591,13 +591,8 @@ class MIoTDevice: # Priority: spec_modify.unit > unit_convert > specv2entity.unit miot_prop.external_unit = SPEC_PROP_TRANS_MAP['properties'][ prop_name]['unit_of_measurement'] - if ( - not miot_prop.icon - and 'icon' in SPEC_PROP_TRANS_MAP['properties'][prop_name] - ): - # Priority: spec_modify.icon > icon_convert > specv2entity.icon - miot_prop.icon = SPEC_PROP_TRANS_MAP['properties'][prop_name][ - 'icon'] + # Priority: default.icon when device_class is set > spec_modify.icon + # > icon_convert miot_prop.platform = platform return True diff --git a/custom_components/xiaomi_home/number.py b/custom_components/xiaomi_home/number.py index 29bd6b7..1a38592 100644 --- a/custom_components/xiaomi_home/number.py +++ b/custom_components/xiaomi_home/number.py @@ -88,7 +88,7 @@ class Number(MIoTPropertyEntity, NumberEntity): if self.spec.external_unit: self._attr_native_unit_of_measurement = self.spec.external_unit # Set icon - if self.spec.icon: + if self.spec.icon and not self.device_class: self._attr_icon = self.spec.icon # Set value range if self._value_range: diff --git a/custom_components/xiaomi_home/sensor.py b/custom_components/xiaomi_home/sensor.py index 68e2d2d..fb9f30b 100644 --- a/custom_components/xiaomi_home/sensor.py +++ b/custom_components/xiaomi_home/sensor.py @@ -116,7 +116,7 @@ class Sensor(MIoTPropertyEntity, SensorEntity): if spec.state_class: self._attr_state_class = spec.state_class # Set icon - if spec.icon: + if spec.icon and not self.device_class: self._attr_icon = spec.icon @property