Skip to content

Commit 599d461

Browse files
fix: using entire object for roborock device info
1 parent 39fd964 commit 599d461

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

roborock/api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def _decode_msg(self, msg: bytes, local_key: str) -> dict[str, Any]:
147147
}
148148

149149
def _encode_msg(self, device_id, request_id, protocol, timestamp, payload, prefix=None) -> bytes:
150-
local_key = self.devices_info[device_id].local_key
150+
local_key = self.devices_info[device_id].device.local_key
151151
aes_key = md5bin(encode_timestamp(timestamp) + local_key + self._salt)
152152
cipher = AES.new(aes_key, AES.MODE_ECB)
153153
encrypted = cipher.encrypt(pad(payload, AES.block_size))
@@ -173,7 +173,7 @@ def _encode_msg(self, device_id, request_id, protocol, timestamp, payload, prefi
173173

174174
async def on_message(self, device_id, msg) -> bool:
175175
try:
176-
data = self._decode_msg(msg, self.devices_info[device_id].local_key)
176+
data = self._decode_msg(msg, self.devices_info[device_id].device.local_key)
177177
protocol = data.get("protocol")
178178
if protocol == 102 or protocol == 4:
179179
payload = json.loads(data.get("payload").decode())

roborock/local_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __init__(self, devices_info: dict[str, RoborockLocalDeviceInfo]):
3939
super().__init__("abc", devices_info)
4040
self.loop = get_running_loop_or_create_one()
4141
self.device_listener: dict[str, RoborockSocketListener] = {
42-
device_id: RoborockSocketListener(device_info.ip, device_id, self.on_message)
42+
device_id: RoborockSocketListener(device_info.network_info.ip, device_id, self.on_message)
4343
for device_id, device_info in devices_info.items()
4444
}
4545
self._mutex = Lock()

roborock/offline/offline.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import asyncio
22
import logging
33

4+
from roborock.containers import HomeDataDevice, HomeDataDeviceField, HomeDataProduct, HomeDataProductField, NetworkInfo, \
5+
NetworkInfoField
46
from roborock.local_api import RoborockLocalClient
57
from roborock.typing import RoborockLocalDeviceInfo
68

@@ -15,7 +17,16 @@ async def main():
1517
}
1618
logging.basicConfig(**logging_config)
1719
client = RoborockLocalClient({
18-
device_id: RoborockLocalDeviceInfo(local_key, "model_test", local_ip)
20+
device_id: RoborockLocalDeviceInfo(HomeDataDevice({
21+
HomeDataDeviceField.NAME: "test_name",
22+
HomeDataDeviceField.DUID: device_id,
23+
HomeDataDeviceField.FV: "1",
24+
HomeDataDeviceField.LOCAL_KEY: local_key
25+
}), HomeDataProduct({
26+
HomeDataProductField.MODEL: "test_model"
27+
}), NetworkInfo({
28+
NetworkInfoField.IP: local_ip
29+
}))
1930
})
2031
await client.async_connect()
2132
props = await client.get_prop(device_id)

roborock/typing.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from .code_mappings import RoborockDockDustCollectionType, RoborockDockWashingModeType
66
from .containers import Status, CleanSummary, Consumable, \
7-
DNDTimer, CleanRecord, SmartWashParameters
7+
DNDTimer, CleanRecord, SmartWashParameters, HomeDataDevice, HomeDataProduct, NetworkInfo
88

99

1010
class RoborockDevicePropField(str, Enum):
@@ -88,15 +88,18 @@ class RoborockCommand(str, Enum):
8888
SET_APP_TIMEZONE = "set_app_timezone"
8989
GET_NETWORK_INFO = "get_network_info"
9090

91+
9192
class RoborockDeviceInfo:
92-
def __init__(self, local_key: str, model: str):
93-
self.local_key = local_key
94-
self.model = model
93+
def __init__(self, device: HomeDataDevice, product: HomeDataProduct):
94+
self.device = device
95+
self.product = product
96+
self.network_info: NetworkInfo | None = None
97+
9598

9699
class RoborockLocalDeviceInfo(RoborockDeviceInfo):
97-
def __init__(self, local_key: str, model: str, ip: str):
98-
super().__init__(local_key, model)
99-
self.ip = ip
100+
def __init__(self, device: HomeDataDevice, product: HomeDataProduct, network_info: NetworkInfo):
101+
super().__init__(device, product)
102+
self.network_info = network_info
100103

101104
class RoborockDockSummary:
102105
def __init__(self, dust_collection_mode: RoborockDockDustCollectionType,

0 commit comments

Comments
 (0)