Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions roborock/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions roborock/cloud_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions roborock/local_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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):
Expand Down
3 changes: 2 additions & 1 deletion roborock/version_1_apis/roborock_local_client_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
3 changes: 2 additions & 1 deletion roborock/version_1_apis/roborock_mqtt_client_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions roborock/version_a01_apis/roborock_client_a01.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
5 changes: 3 additions & 2 deletions roborock/version_a01_apis/roborock_mqtt_client_a01.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
5 changes: 3 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

# Used by fixtures to handle incoming requests and prepare responses
RequestHandler = Callable[[bytes], bytes | None]
QUEUE_TIMEOUT = 10


class FakeSocketHandler:
Expand Down Expand Up @@ -145,7 +146,7 @@ async def mqtt_client(mock_create_connection: None, mock_select: None) -> AsyncG
device=home_data.devices[0],
model=home_data.products[0].model,
)
client = RoborockMqttClientV1(user_data, device_info)
client = RoborockMqttClientV1(user_data, device_info, queue_timeout=QUEUE_TIMEOUT)
try:
yield client
finally:
Expand Down Expand Up @@ -239,7 +240,7 @@ async def local_client_fixture(mock_create_local_connection: None) -> AsyncGener
model=home_data.products[0].model,
host=TEST_LOCAL_API_HOST,
)
client = RoborockLocalClientV1(device_info)
client = RoborockLocalClientV1(device_info, queue_timeout=QUEUE_TIMEOUT)
try:
yield client
finally:
Expand Down
5 changes: 4 additions & 1 deletion tests/test_a01_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
)

from . import mqtt_packet
from .conftest import QUEUE_TIMEOUT


@pytest.fixture(name="a01_mqtt_client")
Expand All @@ -51,7 +52,9 @@ async def a01_mqtt_client_fixture(
device=home_data.devices[0],
model=home_data.products[0].model,
)
client = RoborockMqttClientA01(user_data, device_info, RoborockCategory.WASHING_MACHINE)
client = RoborockMqttClientA01(
user_data, device_info, RoborockCategory.WASHING_MACHINE, queue_timeout=QUEUE_TIMEOUT
)
try:
yield client
finally:
Expand Down
Loading