Fix Unable to serialize to JSON error in Xiaomi Miio (#56929)

This commit is contained in:
Maciej Bieniek 2021-10-02 09:05:49 +02:00 committed by GitHub
parent 2730a27fd0
commit 4cdbd3c576
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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