diff --git a/custom_components/xiaomi_home/miot/specs/specv2entity.py b/custom_components/xiaomi_home/miot/specs/specv2entity.py index 5c64083..6eb3811 100644 --- a/custom_components/xiaomi_home/miot/specs/specv2entity.py +++ b/custom_components/xiaomi_home/miot/specs/specv2entity.py @@ -46,8 +46,16 @@ off Xiaomi or its affiliates' products. Conversion rules of MIoT-Spec-V2 instance to Home Assistant entity. """ from homeassistant.components.sensor import SensorDeviceClass +from homeassistant.components.sensor import SensorStateClass from homeassistant.components.event import EventDeviceClass +from homeassistant.const import ( + UnitOfEnergy, + UnitOfPower, + UnitOfElectricCurrent, + UnitOfElectricPotential, +) + # pylint: disable=pointless-string-statement """SPEC_DEVICE_TRANS_MAP { @@ -302,7 +310,11 @@ SPEC_SERVICE_TRANS_MAP: dict[str, dict | str] = { 'properties': { '':{ 'device_class': str, - 'entity': str + 'entity': str, + 'optional':{ + 'state_class': str, + 'unit_of_measurement': str + } } } } @@ -358,7 +370,11 @@ SPEC_PROP_TRANS_MAP: dict[str, dict | str] = { }, 'voltage': { 'device_class': SensorDeviceClass.VOLTAGE, - 'entity': 'sensor' + 'entity': 'sensor', + 'optional': { + 'state_class': SensorStateClass.MEASUREMENT, + 'unit_of_measurement': UnitOfElectricPotential.VOLT + } }, 'illumination': { 'device_class': SensorDeviceClass.ILLUMINANCE, @@ -368,6 +384,38 @@ SPEC_PROP_TRANS_MAP: dict[str, dict | str] = { 'device_class': SensorDeviceClass.DURATION, 'entity': 'sensor' }, + 'electric-power': { + 'device_class': SensorDeviceClass.POWER, + 'entity': 'sensor', + 'optional': { + 'state_class': SensorStateClass.MEASUREMENT, + 'unit_of_measurement': UnitOfPower.WATT + } + }, + 'electric-current': { + 'device_class': SensorDeviceClass.CURRENT, + 'entity': 'sensor', + 'optional': { + 'state_class': SensorStateClass.MEASUREMENT, + 'unit_of_measurement': UnitOfElectricCurrent.AMPERE + } + }, + 'power-consumption': { + 'device_class': SensorDeviceClass.ENERGY, + 'entity': 'sensor', + 'optional': { + 'state_class': SensorStateClass.TOTAL_INCREASING, + 'unit_of_measurement': UnitOfEnergy.KILO_WATT_HOUR + } + }, + 'total-battery': { + 'device_class': SensorDeviceClass.ENERGY, + 'entity': 'sensor', + 'optional': { + 'state_class': SensorStateClass.TOTAL_INCREASING, + 'unit_of_measurement': UnitOfEnergy.KILO_WATT_HOUR + } + }, 'has-someone-duration': 'no-one-determine-time', 'no-one-duration': 'no-one-determine-time' }