24 files
This commit is contained in:
@@ -40,17 +40,17 @@ from homeassistant.const import (
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from midealocal.device import DeviceType
|
||||
from midealocal.devices.ac import DeviceAttributes as ACAttributes
|
||||
from midealocal.devices.ac import MideaACDevice
|
||||
from midealocal.devices.c3 import DeviceAttributes as C3Attributes
|
||||
from midealocal.devices.c3 import MideaC3Device
|
||||
from midealocal.devices.cc import DeviceAttributes as CCAttributes
|
||||
from midealocal.devices.cc import MideaCCDevice
|
||||
from midealocal.devices.cf import DeviceAttributes as CFAttributes
|
||||
from midealocal.devices.cf import MideaCFDevice
|
||||
from midealocal.devices.fb import DeviceAttributes as FBAttributes
|
||||
from midealocal.devices.fb import MideaFBDevice
|
||||
from midealan.device import DeviceType
|
||||
from midealan.devices.ac import DeviceAttributes as ACAttributes
|
||||
from midealan.devices.ac import MideaACDevice
|
||||
from midealan.devices.c3 import DeviceAttributes as C3Attributes
|
||||
from midealan.devices.c3 import MideaC3Device
|
||||
from midealan.devices.cc import DeviceAttributes as CCAttributes
|
||||
from midealan.devices.cc import MideaCCDevice
|
||||
from midealan.devices.cf import DeviceAttributes as CFAttributes
|
||||
from midealan.devices.cf import MideaCFDevice
|
||||
from midealan.devices.fb import DeviceAttributes as FBAttributes
|
||||
from midealan.devices.fb import MideaFBDevice
|
||||
|
||||
from .const import DEVICES, DOMAIN, FanSpeed
|
||||
from .midea_devices import MIDEA_DEVICES
|
||||
@@ -146,7 +146,10 @@ class MideaClimate(MideaEntity, ClimateEntity):
|
||||
"""Midea Climate hvac mode."""
|
||||
if self._device.get_attribute("power"):
|
||||
mode = cast("int", self._device.get_attribute("mode"))
|
||||
return self.hvac_modes[mode]
|
||||
# Guard against an out-of-range/undefined device mode so a malformed
|
||||
# frame cannot raise IndexError on every state render.
|
||||
if 0 <= mode < len(self.hvac_modes):
|
||||
return self.hvac_modes[mode]
|
||||
return HVACMode.OFF
|
||||
|
||||
@property
|
||||
@@ -450,7 +453,10 @@ class MideaACClimate(MideaClimate):
|
||||
"""Midea AC Climate hvac mode (device mode int -> fixed map)."""
|
||||
if self._device.get_attribute("power"):
|
||||
mode = cast("int", self._device.get_attribute("mode"))
|
||||
return self._mode_index[mode]
|
||||
# The AC `mode` field is a 3-bit value (0-7) but `_mode_index` only
|
||||
# maps 0-5; guard so an out-of-spec 6/7 cannot raise IndexError.
|
||||
if 0 <= mode < len(self._mode_index):
|
||||
return self._mode_index[mode]
|
||||
return HVACMode.OFF
|
||||
|
||||
def set_hvac_mode(self, hvac_mode: HVACMode) -> None:
|
||||
@@ -814,7 +820,11 @@ class MideaC3Climate(MideaClimate):
|
||||
def hvac_mode(self) -> HVACMode:
|
||||
"""Midea C3 Climate hvac mode."""
|
||||
mode = self._device.get_attribute(C3Attributes.mode)
|
||||
if self._device.get_attribute(self._power_attr) and isinstance(mode, int):
|
||||
if (
|
||||
self._device.get_attribute(self._power_attr)
|
||||
and isinstance(mode, int)
|
||||
and 0 <= mode < len(self.hvac_modes)
|
||||
):
|
||||
return self.hvac_modes[mode]
|
||||
return HVACMode.OFF
|
||||
|
||||
|
||||
Reference in New Issue
Block a user