feat: support climate turn on & off feature. Fix #18.

This commit is contained in:
sususweet
2025-10-05 13:42:57 +08:00
parent 1cd31305e5
commit 87fa17c7df
7 changed files with 34 additions and 3 deletions

View File

@@ -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)
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)

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,

View File

@@ -636,6 +636,9 @@
}
},
"sensor": {
"mode": {
"name": "Running Mode"
},
"active_oxygen": {
"name": "Active Oxygen"
},

View File

@@ -636,6 +636,9 @@
}
},
"sensor": {
"mode": {
"name": "运行模式"
},
"active_oxygen": {
"name": "活性氧"
},