From b52227ebdb7d023491d2060e1ad673cdbbb0fc29 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Mon, 20 Jan 2025 22:15:01 -0800 Subject: [PATCH] fix: set queue_timeout in the client leaf base classes --- roborock/api.py | 4 ++-- roborock/cloud_api.py | 4 ++-- roborock/local_api.py | 4 ++-- roborock/version_1_apis/roborock_local_client_v1.py | 3 ++- roborock/version_1_apis/roborock_mqtt_client_v1.py | 3 ++- roborock/version_a01_apis/roborock_client_a01.py | 4 ++-- roborock/version_a01_apis/roborock_mqtt_client_a01.py | 5 +++-- 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/roborock/api.py b/roborock/api.py index d5b6062..a0d1306 100644 --- a/roborock/api.py +++ b/roborock/api.py @@ -31,8 +31,9 @@ class RoborockClient(ABC): """Roborock client base class.""" _logger: logging.LoggerAdapter + queue_timeout: int - def __init__(self, device_info: DeviceData, queue_timeout: int = 4) -> None: + def __init__(self, device_info: DeviceData) -> None: """Initialize RoborockClient.""" self.event_loop = get_running_loop_or_create_one() self.device_info = device_info @@ -45,7 +46,6 @@ def __init__(self, device_info: DeviceData, queue_timeout: int = 4) -> None: "misc_info": {"Nonce": base64.b64encode(self._nonce).decode("utf-8")} } self.is_available: bool = True - self.queue_timeout = queue_timeout def __del__(self) -> None: self.release() diff --git a/roborock/cloud_api.py b/roborock/cloud_api.py index a261ffa..b608c89 100644 --- a/roborock/cloud_api.py +++ b/roborock/cloud_api.py @@ -46,12 +46,12 @@ def maybe_restart_loop(self) -> None: class RoborockMqttClient(RoborockClient, ABC): """Roborock MQTT client base class.""" - def __init__(self, user_data: UserData, device_info: DeviceData, queue_timeout: int = 10) -> None: + def __init__(self, user_data: UserData, device_info: DeviceData) -> None: """Initialize the Roborock MQTT client.""" rriot = user_data.rriot if rriot is None: raise RoborockException("Got no rriot data from user_data") - RoborockClient.__init__(self, device_info, queue_timeout) + RoborockClient.__init__(self, device_info) self._mqtt_user = rriot.u self._hashed_user = md5hex(self._mqtt_user + ":" + rriot.k)[2:10] url = urlparse(rriot.r.m) diff --git a/roborock/local_api.py b/roborock/local_api.py index b3064e0..31deba4 100644 --- a/roborock/local_api.py +++ b/roborock/local_api.py @@ -37,7 +37,7 @@ def connection_lost(self, exc: Exception | None) -> None: class RoborockLocalClient(RoborockClient, ABC): """Roborock local client base class.""" - def __init__(self, device_data: DeviceData, queue_timeout: int = 4): + def __init__(self, device_data: DeviceData): """Initialize the Roborock local client.""" if device_data.host is None: raise RoborockException("Host is required") @@ -48,7 +48,7 @@ def __init__(self, device_data: DeviceData, queue_timeout: int = 4): self.transport: Transport | None = None self._mutex = Lock() self.keep_alive_task: TimerHandle | None = None - RoborockClient.__init__(self, device_data, queue_timeout) + RoborockClient.__init__(self, device_data) self._local_protocol = _LocalProtocol(self._data_received, self._connection_lost) def _data_received(self, message): diff --git a/roborock/version_1_apis/roborock_local_client_v1.py b/roborock/version_1_apis/roborock_local_client_v1.py index e83e9d2..8d11a22 100644 --- a/roborock/version_1_apis/roborock_local_client_v1.py +++ b/roborock/version_1_apis/roborock_local_client_v1.py @@ -17,8 +17,9 @@ class RoborockLocalClientV1(RoborockLocalClient, RoborockClientV1): def __init__(self, device_data: DeviceData, queue_timeout: int = 4): """Initialize the Roborock local client.""" - RoborockLocalClient.__init__(self, device_data, queue_timeout) + RoborockLocalClient.__init__(self, device_data) RoborockClientV1.__init__(self, device_data, "abc") + self.queue_timeout = queue_timeout self._logger = RoborockLoggerAdapter(device_data.device.name, _LOGGER) def build_roborock_message( diff --git a/roborock/version_1_apis/roborock_mqtt_client_v1.py b/roborock/version_1_apis/roborock_mqtt_client_v1.py index aa75eba..d4d074e 100644 --- a/roborock/version_1_apis/roborock_mqtt_client_v1.py +++ b/roborock/version_1_apis/roborock_mqtt_client_v1.py @@ -32,8 +32,9 @@ def __init__(self, user_data: UserData, device_info: DeviceData, queue_timeout: raise RoborockException("Got no rriot data from user_data") endpoint = base64.b64encode(Utils.md5(rriot.k.encode())[8:14]).decode() - RoborockMqttClient.__init__(self, user_data, device_info, queue_timeout) + RoborockMqttClient.__init__(self, user_data, device_info) RoborockClientV1.__init__(self, device_info, endpoint) + self.queue_timeout = queue_timeout self._logger = RoborockLoggerAdapter(device_info.device.name, _LOGGER) async def send_message(self, roborock_message: RoborockMessage): diff --git a/roborock/version_a01_apis/roborock_client_a01.py b/roborock/version_a01_apis/roborock_client_a01.py index f0da1cd..b736c34 100644 --- a/roborock/version_a01_apis/roborock_client_a01.py +++ b/roborock/version_a01_apis/roborock_client_a01.py @@ -108,9 +108,9 @@ class A01ProtocolCacheEntry: class RoborockClientA01(RoborockClient, ABC): """Roborock client base class for A01 devices.""" - def __init__(self, device_info: DeviceData, category: RoborockCategory, queue_timeout: int = 4): + def __init__(self, device_info: DeviceData, category: RoborockCategory): """Initialize the Roborock client.""" - super().__init__(device_info, queue_timeout) + super().__init__(device_info) self.category = category def on_message_received(self, messages: list[RoborockMessage]) -> None: diff --git a/roborock/version_a01_apis/roborock_mqtt_client_a01.py b/roborock/version_a01_apis/roborock_mqtt_client_a01.py index 915fe89..f19daf4 100644 --- a/roborock/version_a01_apis/roborock_mqtt_client_a01.py +++ b/roborock/version_a01_apis/roborock_mqtt_client_a01.py @@ -34,8 +34,9 @@ def __init__( if rriot is None: raise RoborockException("Got no rriot data from user_data") - RoborockMqttClient.__init__(self, user_data, device_info, queue_timeout) - RoborockClientA01.__init__(self, device_info, category, queue_timeout) + RoborockMqttClient.__init__(self, user_data, device_info) + RoborockClientA01.__init__(self, device_info, category) + self.queue_timeout = queue_timeout self._logger = RoborockLoggerAdapter(device_info.device.name, _LOGGER) async def send_message(self, roborock_message: RoborockMessage):