From cc5ec70819d4322fb783570be92f00fb9cafc951 Mon Sep 17 00:00:00 2001 From: sususweet Date: Tue, 11 Nov 2025 15:34:30 +0800 Subject: [PATCH] feat: add support for T0xFC. Fix #47. --- README.md | 1 + README_hans.md | 1 + .../midea_auto_cloud/device_mapping/T0xCC.py | 9 +- .../midea_auto_cloud/device_mapping/T0xCE.py | 7 +- .../midea_auto_cloud/device_mapping/T0xE2.py | 5 +- .../midea_auto_cloud/device_mapping/T0xFA.py | 5 +- .../midea_auto_cloud/device_mapping/T0xFC.py | 103 ++++++++++++++++++ .../midea_auto_cloud/translations/en.json | 12 ++ .../translations/zh-Hans.json | 12 ++ 9 files changed, 144 insertions(+), 11 deletions(-) create mode 100644 custom_components/midea_auto_cloud/device_mapping/T0xFC.py diff --git a/README.md b/README.md index f92b1f2..6836b2f 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Get devices from MSmartHome/Midea Meiju homes through the network and control th - T0xED Water Softener - T0xFA Electric Fan - T0xFB Electric Heater +- T0xFC Air Purifier - T0xFD Humidifier Welcome to collaborate on adding support for more devices. diff --git a/README_hans.md b/README_hans.md index 77b927d..24f4977 100644 --- a/README_hans.md +++ b/README_hans.md @@ -48,6 +48,7 @@ - T0xED 软水机 - T0xFA 电风扇 - T0xFB 电暖器 +- T0xFC 空气净化器 - T0xFD 加湿器 欢迎合作开发添加更多设备支持。 diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xCC.py b/custom_components/midea_auto_cloud/device_mapping/T0xCC.py index c9c7b94..ddcf053 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xCC.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xCC.py @@ -1,4 +1,5 @@ -from homeassistant.const import Platform, UnitOfTemperature, PRECISION_HALVES +from homeassistant.const import Platform, UnitOfTemperature, PRECISION_HALVES, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, \ + CONCENTRATION_PARTS_PER_MILLION from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass from homeassistant.components.switch import SwitchDeviceClass @@ -107,19 +108,19 @@ DEVICE_MAPPING = { }, "co2_value": { "device_class": SensorDeviceClass.CO2, - "unit_of_measurement": "ppm", + "unit_of_measurement": CONCENTRATION_PARTS_PER_MILLION, "state_class": SensorStateClass.MEASUREMENT, "attribute": "co2.value" }, "hcho_value": { "device_class": SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, - "unit_of_measurement": "μg/m³", + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, "state_class": SensorStateClass.MEASUREMENT, "attribute": "hcho.value" }, "pm25_value": { "device_class": SensorDeviceClass.PM25, - "unit_of_measurement": "μg/m³", + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, "state_class": SensorStateClass.MEASUREMENT, "attribute": "pm2_5.value" }, diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xCE.py b/custom_components/midea_auto_cloud/device_mapping/T0xCE.py index 9b65c9c..47c54b1 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xCE.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xCE.py @@ -1,4 +1,5 @@ -from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime +from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, \ + CONCENTRATION_PARTS_PER_MILLION from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.switch import SwitchDeviceClass @@ -168,12 +169,12 @@ DEVICE_MAPPING = { }, "pm25_value": { "device_class": SensorDeviceClass.PM25, - "unit_of_measurement": "µg/m³", + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, "state_class": SensorStateClass.MEASUREMENT }, "co2_value": { "device_class": SensorDeviceClass.CO2, - "unit_of_measurement": "ppm", + "unit_of_measurement": CONCENTRATION_PARTS_PER_MILLION, "state_class": SensorStateClass.MEASUREMENT }, "machine_type": { diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xE2.py b/custom_components/midea_auto_cloud/device_mapping/T0xE2.py index a40f0e7..e6046e2 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xE2.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xE2.py @@ -1,4 +1,5 @@ -from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE, PRECISION_HALVES +from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE, PRECISION_HALVES, \ + CONCENTRATION_PARTS_PER_MILLION from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.switch import SwitchDeviceClass @@ -155,7 +156,7 @@ DEVICE_MAPPING = { }, "tds_value": { "device_class": SensorDeviceClass.WATER, - "unit_of_measurement": "ppm", + "unit_of_measurement": CONCENTRATION_PARTS_PER_MILLION, "state_class": SensorStateClass.MEASUREMENT }, "heat_water_level": { diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xFA.py b/custom_components/midea_auto_cloud/device_mapping/T0xFA.py index b36e3a9..d997893 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xFA.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xFA.py @@ -1,4 +1,5 @@ -from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE, DEGREE +from homeassistant.const import Platform, UnitOfTemperature, UnitOfTime, PERCENTAGE, DEGREE, \ + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.switch import SwitchDeviceClass @@ -94,7 +95,7 @@ DEVICE_MAPPING = { }, "pm25": { "device_class": SensorDeviceClass.PM25, - "unit_of_measurement": "µg/m³", + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, "state_class": SensorStateClass.MEASUREMENT }, "ud_swing_angle": { diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xFC.py b/custom_components/midea_auto_cloud/device_mapping/T0xFC.py new file mode 100644 index 0000000..4c11e80 --- /dev/null +++ b/custom_components/midea_auto_cloud/device_mapping/T0xFC.py @@ -0,0 +1,103 @@ +from homeassistant.const import Platform, UnitOfTemperature, UnitOfVolume, UnitOfTime, PERCENTAGE, PRECISION_HALVES, \ + UnitOfEnergy, UnitOfPower, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER +from homeassistant.components.sensor import SensorStateClass, SensorDeviceClass +from homeassistant.components.binary_sensor import BinarySensorDeviceClass +from homeassistant.components.switch import SwitchDeviceClass + +DEVICE_MAPPING = { + "default": { + "rationale": ["off", "on"], + "queries": [{}], + "centralized": [], + "entities": { + Platform.SWITCH: { + "power": { + "device_class": SwitchDeviceClass.SWITCH, + }, + "anion": { + "device_class": SwitchDeviceClass.SWITCH, + }, + "buzzer": { + "device_class": SwitchDeviceClass.SWITCH, + }, + "lock": { + "device_class": SwitchDeviceClass.SWITCH, + }, + "waterions":{ + "device_class": SwitchDeviceClass.SWITCH, + } + }, + Platform.SELECT: { + "mode": { + "options": { + "constant_humidity": {"mode": "constant_humidity"}, + "manual": {"mode": "manual"}, + "sleep": {"mode": "sleep"}, + "fast": {"mode": "fast"}, + "auto": {"mode": "auto"}, + } + }, + "bias_gear":{ + "options": { + "瑜伽静修场景": {"mode": "auto", "sub_mode": "denoise", "bias_gear": -20}, + "室内对话场景": {"mode": "auto", "sub_mode": "denoise", "bias_gear": -10} + } + }, + "bright": { + "options": { + "全亮": {"bright": 0}, + "半亮": {"bright": 6}, + "熄灭": {"bright": 7} + } + }, + "gear": { + "options": { + "low": {"wind_speed": 1}, + "medium": {"wind_speed": 2}, + "high": {"wind_speed": 3} + } + }, + "humidity": { + "options": { + "40%": {"humidity": 40}, + "50%": {"humidity": 50}, + "60%": {"humidity": 60}, + "70%": {"humidity": 70} + } + }, + }, + Platform.SENSOR: { + "temperature_feedback": { + "device_class": SensorDeviceClass.TEMPERATURE, + "unit_of_measurement": UnitOfTemperature.CELSIUS, + "state_class": SensorStateClass.MEASUREMENT + }, + "humidify_feedback": { + "device_class": SensorDeviceClass.HUMIDITY, + "unit_of_measurement": "%", + "state_class": SensorStateClass.MEASUREMENT + }, + "hcho":{ + "device_class": SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + "state_class": SensorStateClass.MEASUREMENT + }, + "pm1":{ + "device_class": SensorDeviceClass.PM1, + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + "state_class": SensorStateClass.MEASUREMENT + }, + "pm25":{ + "device_class": SensorDeviceClass.PM25, + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + "state_class": SensorStateClass.MEASUREMENT + }, + "pm10":{ + "device_class": SensorDeviceClass.PM10, + "unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + "state_class": SensorStateClass.MEASUREMENT + } + } + } + } +} diff --git a/custom_components/midea_auto_cloud/translations/en.json b/custom_components/midea_auto_cloud/translations/en.json index 7fd51f0..4a93524 100644 --- a/custom_components/midea_auto_cloud/translations/en.json +++ b/custom_components/midea_auto_cloud/translations/en.json @@ -349,6 +349,15 @@ } }, "select": { + "bright": { + "name": "Brightness" + }, + "bias_gear": { + "name": "Bias Gear" + }, + "humidity": { + "name": "Humidity" + }, "b6_power": { "name": "Smoke Machine Power" }, @@ -1562,6 +1571,9 @@ } }, "switch": { + "waterions": { + "name": "Disinfection" + }, "mute": { "name": "Mute" }, diff --git a/custom_components/midea_auto_cloud/translations/zh-Hans.json b/custom_components/midea_auto_cloud/translations/zh-Hans.json index 25df9fd..a5fe160 100644 --- a/custom_components/midea_auto_cloud/translations/zh-Hans.json +++ b/custom_components/midea_auto_cloud/translations/zh-Hans.json @@ -353,6 +353,15 @@ } }, "select": { + "bright": { + "name": "亮度" + }, + "bias_gear": { + "name": "降噪设置" + }, + "humidity": { + "name": "设定湿度" + }, "b6_power": { "name": "烟机开关" }, @@ -1566,6 +1575,9 @@ } }, "switch": { + "waterions": { + "name": "消杀" + }, "mute": { "name": "静音" },