diff --git a/custom_components/midea_auto_cloud/climate.py b/custom_components/midea_auto_cloud/climate.py index b0a2b7b..448ad9e 100644 --- a/custom_components/midea_auto_cloud/climate.py +++ b/custom_components/midea_auto_cloud/climate.py @@ -66,6 +66,7 @@ class MideaClimateEntity(MideaEntity, ClimateEntity): config=config, ) self._key_power = self._config.get("power") + self._key_pre_mode = self._config.get("pre_mode") self._key_hvac_modes = self._config.get("hvac_modes") self._key_preset_modes = self._config.get("preset_modes") self._key_aux_heat = self._config.get("aux_heat") @@ -248,8 +249,12 @@ class MideaClimateEntity(MideaEntity, ClimateEntity): return value return value == 1 or value == "on" or value == "true" - async def _async_set_status_on_off(self, key, value): + async def _async_set_status_on_off(self, attribute_key: str | None, turn_on: bool): """Set on/off status for device attribute.""" - if key is None: + if attribute_key is None: return - await self.async_set_attribute(key, value) \ No newline at end of file + new_status = {} + new_status[attribute_key] = self._rationale[int(turn_on)] + if turn_on: + new_status[self._key_pre_mode] = self._get_nested_value(self._key_pre_mode) + await self.async_set_attributes(new_status) diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xAC.py b/custom_components/midea_auto_cloud/device_mapping/T0xAC.py index eb50dd7..0be614c 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xAC.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xAC.py @@ -91,6 +91,7 @@ DEVICE_MAPPING = { }, "target_temperature": ["temperature", "small_temperature"], "current_temperature": "indoor_temperature", + "pre_mode": "mode", "aux_heat": "ptc", "min_temp": 17, "max_temp": 30, @@ -115,6 +116,9 @@ DEVICE_MAPPING = { } }, Platform.SENSOR: { + "mode": { + "device_class": SensorDeviceClass.ENUM, + }, "indoor_temperature": { "device_class": SensorDeviceClass.TEMPERATURE, "unit_of_measurement": UnitOfTemperature.CELSIUS, @@ -175,6 +179,7 @@ DEVICE_MAPPING = { }, "target_temperature": ["temperature", "small_temperature"], "current_temperature": "indoor_temperature", + "pre_mode": "mode", "aux_heat": "ptc", "min_temp": 17, "max_temp": 30, @@ -198,6 +203,9 @@ DEVICE_MAPPING = { } }, Platform.SENSOR: { + "mode": { + "device_class": SensorDeviceClass.ENUM, + }, "indoor_temperature": { "device_class": SensorDeviceClass.TEMPERATURE, "unit_of_measurement": UnitOfTemperature.CELSIUS, diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xCA.py b/custom_components/midea_auto_cloud/device_mapping/T0xCA.py index 495a434..5d8b131 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xCA.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xCA.py @@ -142,6 +142,7 @@ DEVICE_MAPPING = { }, "target_temperature": "storage_temperature", "current_temperature": "refrigeration_real_temperature", + "pre_mode": "mode", "min_temp": -10, "max_temp": 10, "temperature_unit": UnitOfTemperature.CELSIUS, @@ -221,6 +222,9 @@ DEVICE_MAPPING = { } }, Platform.SENSOR: { + "mode": { + "device_class": SensorDeviceClass.ENUM, + }, "storage_temperature": { "device_class": SensorDeviceClass.TEMPERATURE, "unit_of_measurement": UnitOfTemperature.CELSIUS, diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xCC.py b/custom_components/midea_auto_cloud/device_mapping/T0xCC.py index 624e6b8..c9c7b94 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xCC.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xCC.py @@ -48,6 +48,7 @@ DEVICE_MAPPING = { }, "target_temperature": "temperature.current", "current_temperature": "temperature.room", + "pre_mode": "mode", "min_temp": 17, "max_temp": 30, "temperature_unit": UnitOfTemperature.CELSIUS, @@ -89,6 +90,9 @@ DEVICE_MAPPING = { } }, Platform.SENSOR: { + "mode": { + "device_class": SensorDeviceClass.ENUM, + }, "room_temperature": { "device_class": SensorDeviceClass.TEMPERATURE, "unit_of_measurement": UnitOfTemperature.CELSIUS, diff --git a/custom_components/midea_auto_cloud/device_mapping/T0xCF.py b/custom_components/midea_auto_cloud/device_mapping/T0xCF.py index bae1c10..303a43e 100644 --- a/custom_components/midea_auto_cloud/device_mapping/T0xCF.py +++ b/custom_components/midea_auto_cloud/device_mapping/T0xCF.py @@ -22,6 +22,7 @@ DEVICE_MAPPING = { }, "target_temperature": "temp_set", "current_temperature": "cur_temp", + "pre_mode": "mode", "min_temp": 5, "max_temp": 70, "temperature_unit": UnitOfTemperature.CELSIUS, @@ -103,6 +104,9 @@ DEVICE_MAPPING = { } }, Platform.SENSOR: { + "mode": { + "device_class": SensorDeviceClass.ENUM, + }, "cur_temp": { "device_class": SensorDeviceClass.TEMPERATURE, "unit_of_measurement": UnitOfTemperature.CELSIUS, diff --git a/custom_components/midea_auto_cloud/translations/en.json b/custom_components/midea_auto_cloud/translations/en.json index 7c4f176..5e91a13 100644 --- a/custom_components/midea_auto_cloud/translations/en.json +++ b/custom_components/midea_auto_cloud/translations/en.json @@ -636,6 +636,9 @@ } }, "sensor": { + "mode": { + "name": "Running Mode" + }, "active_oxygen": { "name": "Active Oxygen" }, diff --git a/custom_components/midea_auto_cloud/translations/zh-Hans.json b/custom_components/midea_auto_cloud/translations/zh-Hans.json index 117724b..94e2149 100644 --- a/custom_components/midea_auto_cloud/translations/zh-Hans.json +++ b/custom_components/midea_auto_cloud/translations/zh-Hans.json @@ -636,6 +636,9 @@ } }, "sensor": { + "mode": { + "name": "运行模式" + }, "active_oxygen": { "name": "活性氧" },