diff --git a/pyoverkiz/enums/ui.py b/pyoverkiz/enums/ui.py index 933c067c..2aa3b057 100644 --- a/pyoverkiz/enums/ui.py +++ b/pyoverkiz/enums/ui.py @@ -1,5 +1,8 @@ +import logging from enum import Enum, unique +_LOGGER = logging.getLogger(__name__) + @unique class UIClass(str, Enum): @@ -70,6 +73,13 @@ class UIClass(str, Enum): WINDOW = "Window" WINDOW_HANDLE = "WindowHandle" + UNKNOWN = "unknown" + + @classmethod + def _missing_(cls, value): # type: ignore + _LOGGER.warning(f"Unsupported value {value} has been returned for {cls}") + return cls.UNKNOWN + @unique class UIWidget(str, Enum): @@ -394,3 +404,10 @@ class UIWidget(str, Enum): ZWAVE_TRANSCEIVER = "ZWaveTransceiver" ZIGBEE_NETWORK = "ZigbeeNetwork" ZIGBEE_STACK = "ZigbeeStack" + + UNKNOWN = "unknown" + + @classmethod + def _missing_(cls, value): # type: ignore + _LOGGER.warning(f"Unsupported value {value} has been returned for {cls}") + return cls.UNKNOWN diff --git a/pyoverkiz/models.py b/pyoverkiz/models.py index e088e907..ada35474 100644 --- a/pyoverkiz/models.py +++ b/pyoverkiz/models.py @@ -15,6 +15,8 @@ GatewaySubType, GatewayType, ProductType, + UIClass, + UIWidget, UpdateBoxStatus, ) @@ -151,8 +153,8 @@ class Device: controllable_name: str definition: Definition data_properties: list[dict[str, Any]] | None = None - widget: str | None = None - ui_class: str | None = None + widget: UIWidget + ui_class: UIClass states: States type: ProductType place_oid: str @@ -168,8 +170,8 @@ def __init__( controllable_name: str, definition: dict[str, Any], data_properties: list[dict[str, Any]] | None = None, - widget: str | None = None, - ui_class: str | None = None, + widget: str, + ui_class: str, states: list[dict[str, Any]] | None = None, type: int, place_oid: str, @@ -185,8 +187,8 @@ def __init__( self.controllable_name = controllable_name self.states = States(states) self.data_properties = data_properties - self.widget = widget - self.ui_class = ui_class + self.widget = UIWidget(widget) + self.ui_class = UIClass(ui_class) self.type = ProductType(type) self.place_oid = place_oid