diff --git a/homeassistant/components/xiaomi_miio/fan.py b/homeassistant/components/xiaomi_miio/fan.py index 1b275ea2d6e..04cdc4573db 100644 --- a/homeassistant/components/xiaomi_miio/fan.py +++ b/homeassistant/components/xiaomi_miio/fan.py @@ -1,6 +1,7 @@ """Support for Xiaomi Mi Air Purifier and Xiaomi Mi Air Humidifier.""" from abc import abstractmethod import asyncio +from enum import Enum import logging import math @@ -363,13 +364,21 @@ class XiaomiGenericAirPurifier(XiaomiGenericDevice): return None + @staticmethod + def _extract_value_from_attribute(state, attribute): + value = getattr(state, attribute) + if isinstance(value, Enum): + return value.value + + return value + @callback def _handle_coordinator_update(self): """Fetch state from the device.""" self._state = self.coordinator.data.is_on self._state_attrs.update( { - key: getattr(self.coordinator.data, value) + key: self._extract_value_from_attribute(self.coordinator.data, value) for key, value in self._available_attributes.items() } ) @@ -434,7 +443,7 @@ class XiaomiAirPurifier(XiaomiGenericAirPurifier): self._state = self.coordinator.data.is_on self._state_attrs.update( { - key: getattr(self.coordinator.data, value) + key: self._extract_value_from_attribute(self.coordinator.data, value) for key, value in self._available_attributes.items() } )