diff --git a/custom_components/xiaomi_home/miot/miot_device.py b/custom_components/xiaomi_home/miot/miot_device.py index 353b28f..17bf9da 100644 --- a/custom_components/xiaomi_home/miot/miot_device.py +++ b/custom_components/xiaomi_home/miot/miot_device.py @@ -142,7 +142,7 @@ class MIoTDevice: _room_id: str _room_name: str - _suggested_area: str + _suggested_area: Optional[str] _device_state_sub_list: dict[str, Callable[[str, MIoTDeviceState], None]] @@ -153,7 +153,7 @@ class MIoTDevice: def __init__( self, miot_client: MIoTClient, - device_info: dict[str, str], + device_info: dict[str, Any], spec_instance: MIoTSpecInstance ) -> None: self.miot_client = miot_client @@ -243,25 +243,29 @@ class MIoTDevice: return True def sub_property( - self, handler: Callable[[dict, Any], None], siid: int = None, - piid: int = None, handler_ctx: Any = None + self, handler: Callable[[dict, Any], None], siid: Optional[int] = None, + piid: Optional[int] = None, handler_ctx: Any = None ) -> bool: return self.miot_client.sub_prop( did=self._did, handler=handler, siid=siid, piid=piid, handler_ctx=handler_ctx) - def unsub_property(self, siid: int = None, piid: int = None) -> bool: + def unsub_property( + self, siid: Optional[int] = None, piid: Optional[int] = None + ) -> bool: return self.miot_client.unsub_prop(did=self._did, siid=siid, piid=piid) def sub_event( - self, handler: Callable[[dict, Any], None], siid: int = None, - eiid: int = None, handler_ctx: Any = None + self, handler: Callable[[dict, Any], None], siid: Optional[int] = None, + eiid: Optional[int] = None, handler_ctx: Any = None ) -> bool: return self.miot_client.sub_event( did=self._did, handler=handler, siid=siid, eiid=eiid, handler_ctx=handler_ctx) - def unsub_event(self, siid: int = None, eiid: int = None) -> bool: + def unsub_event( + self, siid: Optional[int] = None, eiid: Optional[int] = None + ) -> bool: return self.miot_client.unsub_event( did=self._did, siid=siid, eiid=eiid) @@ -703,7 +707,7 @@ class MIoTDevice: def __on_device_state_changed( self, did: str, state: MIoTDeviceState, ctx: Any ) -> None: - self._online = state + self._online = state == MIoTDeviceState.ONLINE for key, handler in self._device_state_sub_list.items(): self.miot_client.main_loop.call_soon_threadsafe( handler, key, state) @@ -719,7 +723,8 @@ class MIoTServiceEntity(Entity): _main_loop: asyncio.AbstractEventLoop _prop_value_map: dict[MIoTSpecProperty, Any] - _event_occurred_handler: Callable[[MIoTSpecEvent, dict], None] + _event_occurred_handler: Optional[ + Callable[[MIoTSpecEvent, dict], None]] _prop_changed_subs: dict[ MIoTSpecProperty, Callable[[MIoTSpecProperty, Any], None]] @@ -763,7 +768,9 @@ class MIoTServiceEntity(Entity): self.entity_id) @property - def event_occurred_handler(self) -> Callable[[MIoTSpecEvent, dict], None]: + def event_occurred_handler( + self + ) -> Optional[Callable[[MIoTSpecEvent, dict], None]]: return self._event_occurred_handler @event_occurred_handler.setter @@ -784,7 +791,7 @@ class MIoTServiceEntity(Entity): self._prop_changed_subs.pop(prop, None) @property - def device_info(self) -> dict: + def device_info(self) -> Optional[DeviceInfo]: return self.miot_device.device_info async def async_added_to_hass(self) -> None: @@ -1002,7 +1009,7 @@ class MIoTPropertyEntity(Entity): # {'min':int, 'max':int, 'step': int} _value_range: dict[str, int] # {Any: Any} - _value_list: dict[Any, Any] + _value_list: Optional[dict[Any, Any]] _value: Any _pending_write_ha_state_timer: Optional[asyncio.TimerHandle] @@ -1042,7 +1049,7 @@ class MIoTPropertyEntity(Entity): self._value_list) @property - def device_info(self) -> dict: + def device_info(self) -> Optional[DeviceInfo]: return self.miot_device.device_info async def async_added_to_hass(self) -> None: @@ -1067,7 +1074,7 @@ class MIoTPropertyEntity(Entity): self.miot_device.unsub_property( siid=self.service.iid, piid=self.spec.iid) - def get_vlist_description(self, value: Any) -> str: + def get_vlist_description(self, value: Any) -> Optional[str]: if not self._value_list: return None return self._value_list.get(value, None) @@ -1184,7 +1191,7 @@ class MIoTEventEntity(Entity): spec.device_class, self.entity_id) @property - def device_info(self) -> dict: + def device_info(self) -> Optional[DeviceInfo]: return self.miot_device.device_info async def async_added_to_hass(self) -> None: @@ -1286,7 +1293,7 @@ class MIoTActionEntity(Entity): spec.device_class, self.entity_id) @property - def device_info(self) -> dict: + def device_info(self) -> Optional[DeviceInfo]: return self.miot_device.device_info async def async_added_to_hass(self) -> None: @@ -1298,7 +1305,9 @@ class MIoTActionEntity(Entity): self.miot_device.unsub_device_state( key=f'{self.action_platform}.{ self.service.iid}.{self.spec.iid}') - async def action_async(self, in_list: list = None) -> Optional[list]: + async def action_async( + self, in_list: Optional[list] = None + ) -> Optional[list]: try: return await self.miot_device.miot_client.action_async( did=self.miot_device.did,