From f290ff17d89d1d642d8e1cec7e955280d7d51a41 Mon Sep 17 00:00:00 2001 From: skyboooox Date: Wed, 28 Jan 2026 15:31:27 +0800 Subject: [PATCH] Fix sensor state class and units (#1595) --- .../xiaomi_home/miot/miot_device.py | 12 ++++++++++++ .../xiaomi_home/miot/specs/spec_modify.yaml | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/custom_components/xiaomi_home/miot/miot_device.py b/custom_components/xiaomi_home/miot/miot_device.py index e2431c3..8ed6fca 100644 --- a/custom_components/xiaomi_home/miot/miot_device.py +++ b/custom_components/xiaomi_home/miot/miot_device.py @@ -58,11 +58,14 @@ from homeassistant.const import ( CONCENTRATION_PARTS_PER_MILLION, DEGREE, LIGHT_LUX, + REVOLUTIONS_PER_MINUTE, PERCENTAGE, SIGNAL_STRENGTH_DECIBELS, + UnitOfBloodGlucoseConcentration, UnitOfEnergy, UnitOfElectricCurrent, UnitOfElectricPotential, + UnitOfFrequency, UnitOfInformation, UnitOfLength, UnitOfMass, @@ -769,6 +772,9 @@ class MIoTDevice: 'L': UnitOfVolume.LITERS, 'liter': UnitOfVolume.LITERS, 'mL': UnitOfVolume.MILLILITERS, + 'Hz': UnitOfFrequency.HERTZ, + 'calorie': UnitOfEnergy.CALORIE, + 'kCal': UnitOfEnergy.KILO_CALORIE, 'km/h': UnitOfSpeed.KILOMETERS_PER_HOUR, 'm/s': UnitOfSpeed.METERS_PER_SECOND, 'watt': UnitOfPower.WATT, @@ -787,6 +793,9 @@ class MIoTDevice: 'meter': UnitOfLength.METERS, 'km': UnitOfLength.KILOMETERS, 'm3/h': UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, + '毫摩尔每升': UnitOfBloodGlucoseConcentration.MILLIMOLE_PER_LITER, + 'mmol/L': UnitOfBloodGlucoseConcentration.MILLIMOLE_PER_LITER, + 'rpm': REVOLUTIONS_PER_MINUTE, 'gram': UnitOfMass.GRAMS, 'kilogram': UnitOfMass.KILOGRAMS, 'dB': SIGNAL_STRENGTH_DECIBELS, @@ -798,6 +807,7 @@ class MIoTDevice: 'TB': UnitOfInformation.TERABYTES, 'B/s': UnitOfDataRate.BYTES_PER_SECOND, 'KB/s': UnitOfDataRate.KILOBYTES_PER_SECOND, + 'KByte/s': UnitOfDataRate.KILOBYTES_PER_SECOND, 'MB/s': UnitOfDataRate.MEGABYTES_PER_SECOND, 'GB/s': UnitOfDataRate.GIGABYTES_PER_SECOND } @@ -870,6 +880,8 @@ class MIoTDevice: return 'mdi:network' if spec_unit in {'calorie', 'kCal'}: return 'mdi:food' + if spec_unit in {'rpm'}: + return 'mdi:fan-clock' return None def __gen_sub_id(self) -> int: diff --git a/custom_components/xiaomi_home/miot/specs/spec_modify.yaml b/custom_components/xiaomi_home/miot/specs/spec_modify.yaml index bde9b61..288f2b9 100644 --- a/custom_components/xiaomi_home/miot/specs/spec_modify.yaml +++ b/custom_components/xiaomi_home/miot/specs/spec_modify.yaml @@ -70,6 +70,25 @@ urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1 urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1 urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1 +urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m28:5: + prop.9.5: + unit: days + prop.10.6: + unit: none + prop.12.3: + unit: rpm + prop.12.11: + unit: Hz + prop.12.13: + unit: A + prop.12.14: + unit: V + prop.12.15: + unit: pascal + prop.12.17: + unit: rpm + prop.12.21: + unit: celsius urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:1: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6 urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6 urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6