mirror of
https://github.com/sususweet/midea-meiju-codec.git
synced 2025-11-12 16:01:54 +00:00
feat: support climate turn on & off feature. Fix #18.
This commit is contained in:
@@ -66,6 +66,7 @@ class MideaClimateEntity(MideaEntity, ClimateEntity):
|
|||||||
config=config,
|
config=config,
|
||||||
)
|
)
|
||||||
self._key_power = self._config.get("power")
|
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_hvac_modes = self._config.get("hvac_modes")
|
||||||
self._key_preset_modes = self._config.get("preset_modes")
|
self._key_preset_modes = self._config.get("preset_modes")
|
||||||
self._key_aux_heat = self._config.get("aux_heat")
|
self._key_aux_heat = self._config.get("aux_heat")
|
||||||
@@ -248,8 +249,12 @@ class MideaClimateEntity(MideaEntity, ClimateEntity):
|
|||||||
return value
|
return value
|
||||||
return value == 1 or value == "on" or value == "true"
|
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."""
|
"""Set on/off status for device attribute."""
|
||||||
if key is None:
|
if attribute_key is None:
|
||||||
return
|
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)
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ DEVICE_MAPPING = {
|
|||||||
},
|
},
|
||||||
"target_temperature": ["temperature", "small_temperature"],
|
"target_temperature": ["temperature", "small_temperature"],
|
||||||
"current_temperature": "indoor_temperature",
|
"current_temperature": "indoor_temperature",
|
||||||
|
"pre_mode": "mode",
|
||||||
"aux_heat": "ptc",
|
"aux_heat": "ptc",
|
||||||
"min_temp": 17,
|
"min_temp": 17,
|
||||||
"max_temp": 30,
|
"max_temp": 30,
|
||||||
@@ -115,6 +116,9 @@ DEVICE_MAPPING = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Platform.SENSOR: {
|
Platform.SENSOR: {
|
||||||
|
"mode": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
},
|
||||||
"indoor_temperature": {
|
"indoor_temperature": {
|
||||||
"device_class": SensorDeviceClass.TEMPERATURE,
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
@@ -175,6 +179,7 @@ DEVICE_MAPPING = {
|
|||||||
},
|
},
|
||||||
"target_temperature": ["temperature", "small_temperature"],
|
"target_temperature": ["temperature", "small_temperature"],
|
||||||
"current_temperature": "indoor_temperature",
|
"current_temperature": "indoor_temperature",
|
||||||
|
"pre_mode": "mode",
|
||||||
"aux_heat": "ptc",
|
"aux_heat": "ptc",
|
||||||
"min_temp": 17,
|
"min_temp": 17,
|
||||||
"max_temp": 30,
|
"max_temp": 30,
|
||||||
@@ -198,6 +203,9 @@ DEVICE_MAPPING = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Platform.SENSOR: {
|
Platform.SENSOR: {
|
||||||
|
"mode": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
},
|
||||||
"indoor_temperature": {
|
"indoor_temperature": {
|
||||||
"device_class": SensorDeviceClass.TEMPERATURE,
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ DEVICE_MAPPING = {
|
|||||||
},
|
},
|
||||||
"target_temperature": "storage_temperature",
|
"target_temperature": "storage_temperature",
|
||||||
"current_temperature": "refrigeration_real_temperature",
|
"current_temperature": "refrigeration_real_temperature",
|
||||||
|
"pre_mode": "mode",
|
||||||
"min_temp": -10,
|
"min_temp": -10,
|
||||||
"max_temp": 10,
|
"max_temp": 10,
|
||||||
"temperature_unit": UnitOfTemperature.CELSIUS,
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
@@ -221,6 +222,9 @@ DEVICE_MAPPING = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Platform.SENSOR: {
|
Platform.SENSOR: {
|
||||||
|
"mode": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
},
|
||||||
"storage_temperature": {
|
"storage_temperature": {
|
||||||
"device_class": SensorDeviceClass.TEMPERATURE,
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ DEVICE_MAPPING = {
|
|||||||
},
|
},
|
||||||
"target_temperature": "temperature.current",
|
"target_temperature": "temperature.current",
|
||||||
"current_temperature": "temperature.room",
|
"current_temperature": "temperature.room",
|
||||||
|
"pre_mode": "mode",
|
||||||
"min_temp": 17,
|
"min_temp": 17,
|
||||||
"max_temp": 30,
|
"max_temp": 30,
|
||||||
"temperature_unit": UnitOfTemperature.CELSIUS,
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
@@ -89,6 +90,9 @@ DEVICE_MAPPING = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Platform.SENSOR: {
|
Platform.SENSOR: {
|
||||||
|
"mode": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
},
|
||||||
"room_temperature": {
|
"room_temperature": {
|
||||||
"device_class": SensorDeviceClass.TEMPERATURE,
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ DEVICE_MAPPING = {
|
|||||||
},
|
},
|
||||||
"target_temperature": "temp_set",
|
"target_temperature": "temp_set",
|
||||||
"current_temperature": "cur_temp",
|
"current_temperature": "cur_temp",
|
||||||
|
"pre_mode": "mode",
|
||||||
"min_temp": 5,
|
"min_temp": 5,
|
||||||
"max_temp": 70,
|
"max_temp": 70,
|
||||||
"temperature_unit": UnitOfTemperature.CELSIUS,
|
"temperature_unit": UnitOfTemperature.CELSIUS,
|
||||||
@@ -103,6 +104,9 @@ DEVICE_MAPPING = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
Platform.SENSOR: {
|
Platform.SENSOR: {
|
||||||
|
"mode": {
|
||||||
|
"device_class": SensorDeviceClass.ENUM,
|
||||||
|
},
|
||||||
"cur_temp": {
|
"cur_temp": {
|
||||||
"device_class": SensorDeviceClass.TEMPERATURE,
|
"device_class": SensorDeviceClass.TEMPERATURE,
|
||||||
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
"unit_of_measurement": UnitOfTemperature.CELSIUS,
|
||||||
|
|||||||
@@ -636,6 +636,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sensor": {
|
"sensor": {
|
||||||
|
"mode": {
|
||||||
|
"name": "Running Mode"
|
||||||
|
},
|
||||||
"active_oxygen": {
|
"active_oxygen": {
|
||||||
"name": "Active Oxygen"
|
"name": "Active Oxygen"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -636,6 +636,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sensor": {
|
"sensor": {
|
||||||
|
"mode": {
|
||||||
|
"name": "运行模式"
|
||||||
|
},
|
||||||
"active_oxygen": {
|
"active_oxygen": {
|
||||||
"name": "活性氧"
|
"name": "活性氧"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user