python-roborock 5.5.1__tar.gz → 5.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_roborock-5.5.1 → python_roborock-5.7.0}/PKG-INFO +1 -1
- {python_roborock-5.5.1 → python_roborock-5.7.0}/pyproject.toml +1 -1
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/cli.py +57 -19
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/v1/v1_code_mappings.py +33 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/.gitignore +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/LICENSE +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/README.md +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/broadcast_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/callbacks.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/const.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q10/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q7/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/dyad/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/dyad/dyad_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/v1/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/v1/v1_clean_modes.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/v1/v1_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/zeo/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/zeo/zeo_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/device_features.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/README.md +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/cache.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/device.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/device_manager.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/file_cache.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/rpc/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/rpc/a01_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/rpc/v1_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/a01/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q10/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q10/command.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q10/common.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q10/status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q10/vacuum.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/clean_summary.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/map.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/map_content.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/traits_mixin.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/child_lock.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/command.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/common.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/consumeable.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/device_features.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/home.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/led_status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/map_content.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/maps.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/network_info.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/rooms.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/routines.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/volume.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/transport/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/transport/channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/transport/local_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/transport/mqtt_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/diagnostics.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/exceptions.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/b01_map_parser.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/map_parser.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/proto/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/proto/b01_scmap.proto +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/map/proto/b01_scmap_pb2.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/mqtt/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/mqtt/health_manager.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/mqtt/roborock_session.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/mqtt/session.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocols/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocols/a01_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocols/b01_q10_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocols/b01_q7_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/protocols/v1_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/py.typed +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/roborock_message.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/roborock_typing.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/util.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/web_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-roborock
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.7.0
|
|
4
4
|
Summary: A package to control Roborock vacuums.
|
|
5
5
|
Project-URL: Repository, https://github.com/python-roborock/python-roborock
|
|
6
6
|
Project-URL: Documentation, https://python-roborock.readthedocs.io/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "python-roborock"
|
|
3
|
-
version = "5.
|
|
3
|
+
version = "5.7.0"
|
|
4
4
|
description = "A package to control Roborock vacuums."
|
|
5
5
|
authors = [{ name = "humbertogontijo", email = "humbertogontijo@users.noreply.github.com" }, {name="Lash-L"}, {name="allenporter"}]
|
|
6
6
|
requires-python = ">=3.11, <4"
|
|
@@ -878,12 +878,12 @@ def _parse_diagnostic_file(diagnostic_path: Path) -> dict[str, dict[str, Any]]:
|
|
|
878
878
|
device_features = traits_data.get("device_features", {})
|
|
879
879
|
|
|
880
880
|
# newFeatureInfo is the integer
|
|
881
|
-
new_feature_info = device_features.get("newFeatureInfo")
|
|
881
|
+
new_feature_info = device_features.get("newFeatureInfo", device_data.get("featureSet"))
|
|
882
882
|
if new_feature_info is not None:
|
|
883
|
-
current_product_data["new_feature_info"] = new_feature_info
|
|
883
|
+
current_product_data["new_feature_info"] = int(new_feature_info)
|
|
884
884
|
|
|
885
885
|
# newFeatureInfoStr is the hex string
|
|
886
|
-
new_feature_info_str =
|
|
886
|
+
new_feature_info_str = device_data.get("newFeatureSet")
|
|
887
887
|
if new_feature_info_str:
|
|
888
888
|
current_product_data["new_feature_info_str"] = new_feature_info_str
|
|
889
889
|
|
|
@@ -1048,29 +1048,67 @@ def update_docs(data_file: str, output_file: str):
|
|
|
1048
1048
|
data_path = Path(data_file)
|
|
1049
1049
|
output_path = Path(output_file)
|
|
1050
1050
|
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1051
|
+
product_data_from_yaml = {}
|
|
1052
|
+
if data_path.exists():
|
|
1053
|
+
click.echo(f"Loading data from {data_path}...")
|
|
1054
|
+
with open(data_path, encoding="utf-8") as f:
|
|
1055
|
+
product_data_from_yaml = yaml.safe_load(f) or {}
|
|
1056
|
+
else:
|
|
1057
|
+
click.echo(f"Data file not found at '{data_path}', will try testdata.")
|
|
1058
|
+
|
|
1059
|
+
combined_product_data = {}
|
|
1060
|
+
|
|
1061
|
+
testdata_path = Path("tests/testdata")
|
|
1062
|
+
if testdata_path.exists():
|
|
1063
|
+
products_by_id = {}
|
|
1064
|
+
for f in testdata_path.glob("home_data_product_*.json"):
|
|
1065
|
+
with open(f, encoding="utf-8") as file:
|
|
1066
|
+
data = json.load(file)
|
|
1067
|
+
products_by_id[data.get("id")] = data
|
|
1068
|
+
|
|
1069
|
+
loaded_testdata = False
|
|
1070
|
+
for f in testdata_path.glob("home_data_device_*.json"):
|
|
1071
|
+
with open(f, encoding="utf-8") as file:
|
|
1072
|
+
device_data = json.load(file)
|
|
1073
|
+
product_id = device_data["productId"]
|
|
1074
|
+
if product_id in products_by_id:
|
|
1075
|
+
product_data = products_by_id[product_id]
|
|
1076
|
+
model = product_data["model"]
|
|
1077
|
+
short_model = model.split(".")[-1]
|
|
1078
|
+
product_nickname = SHORT_MODEL_TO_ENUM.get(short_model)
|
|
1079
|
+
feature_set = device_data.get("featureSet", "0")
|
|
1080
|
+
new_feature_set = device_data.get("newFeatureSet", "0")
|
|
1081
|
+
combined_product_data[model] = {
|
|
1082
|
+
"product_nickname": product_nickname.name if product_nickname else "Unknown",
|
|
1083
|
+
"protocol_version": device_data["pv"],
|
|
1084
|
+
"new_feature_info": int(feature_set),
|
|
1085
|
+
"new_feature_info_str": new_feature_set,
|
|
1086
|
+
"feature_info": [],
|
|
1087
|
+
}
|
|
1088
|
+
print("Loaded %s", product_id)
|
|
1089
|
+
loaded_testdata = True
|
|
1090
|
+
if loaded_testdata:
|
|
1091
|
+
click.echo("Loaded mock testdata from local repository.")
|
|
1092
|
+
|
|
1093
|
+
if product_data_from_yaml:
|
|
1094
|
+
for model, data in product_data_from_yaml.items():
|
|
1095
|
+
combined_product_data[model] = data
|
|
1096
|
+
|
|
1097
|
+
if not combined_product_data:
|
|
1098
|
+
click.echo("No data found from YAML or testdata. Exiting.", err=True)
|
|
1061
1099
|
return
|
|
1062
1100
|
|
|
1063
1101
|
product_features_map = {}
|
|
1064
1102
|
all_feature_names = set()
|
|
1065
1103
|
|
|
1066
|
-
# Process the
|
|
1067
|
-
for model, data in
|
|
1104
|
+
# Process the combined data to build the feature map
|
|
1105
|
+
for model, data in combined_product_data.items():
|
|
1068
1106
|
# Reconstruct the DeviceFeatures object from the raw data in the YAML file
|
|
1069
1107
|
device_features = DeviceFeatures.from_feature_flags(
|
|
1070
|
-
new_feature_info=data.get("new_feature_info"),
|
|
1071
|
-
new_feature_info_str=data.get("new_feature_info_str"),
|
|
1072
|
-
feature_info=data.get("feature_info"),
|
|
1073
|
-
product_nickname=data.get("product_nickname"),
|
|
1108
|
+
new_feature_info=data.get("new_feature_info", 0),
|
|
1109
|
+
new_feature_info_str=data.get("new_feature_info_str", ""),
|
|
1110
|
+
feature_info=data.get("feature_info", []),
|
|
1111
|
+
product_nickname=data.get("product_nickname", ""),
|
|
1074
1112
|
)
|
|
1075
1113
|
features_dict = asdict(device_features)
|
|
1076
1114
|
|
|
@@ -551,13 +551,46 @@ class RoborockDockErrorCode(RoborockEnum):
|
|
|
551
551
|
"""Describes the error code of the dock."""
|
|
552
552
|
|
|
553
553
|
ok = 0
|
|
554
|
+
"""No error condition."""
|
|
555
|
+
|
|
556
|
+
no_dustbin_or_filter = 32
|
|
557
|
+
"""No dock dustbin or filter installed.
|
|
558
|
+
|
|
559
|
+
This error message applies to auto-empty docks.
|
|
560
|
+
"""
|
|
561
|
+
|
|
562
|
+
auto_empty_dock_fan_error = 33
|
|
563
|
+
"""Auto-Empty Dock fan error: Dock dustbin or filter out of place."""
|
|
564
|
+
|
|
554
565
|
duct_blockage = 34
|
|
566
|
+
"""Auto-Empty Dock jammed: Dock dustbin, filter, or air duct jammed, check and clean it."""
|
|
567
|
+
|
|
568
|
+
auto_empty_dock_voltage_error = 35
|
|
569
|
+
"""Auto-Empty Dock voltage error: Unable to empty the dustbin."""
|
|
570
|
+
|
|
555
571
|
water_empty = 38
|
|
572
|
+
"""Clean water tank empty: Check tank placement or refill as required."""
|
|
573
|
+
|
|
556
574
|
waste_water_tank_full = 39
|
|
575
|
+
"""Check the dirty water tank: Check tank placement or empty as required."""
|
|
576
|
+
|
|
557
577
|
maintenance_brush_jammed = 42
|
|
578
|
+
"""Self-cleaning roller error: Maintenance brush jammed. Remove and clean."""
|
|
579
|
+
|
|
558
580
|
dirty_tank_latch_open = 44
|
|
581
|
+
"""Water filter blocked: Clean and reinstall.
|
|
582
|
+
|
|
583
|
+
Make sure that the dirty water tank cover is closed and the latch is secured.
|
|
584
|
+
"""
|
|
585
|
+
|
|
559
586
|
no_dustbin = 46
|
|
587
|
+
"""Dustbin not installed (Standard error for missing dustbin).
|
|
588
|
+
|
|
589
|
+
This error message applies to larger wash docks.
|
|
590
|
+
"""
|
|
591
|
+
|
|
560
592
|
cleaning_tank_full_or_blocked = 53
|
|
593
|
+
"""Cleaning tank full or blocked (Water filter or sink strainer blocked/not installed)."""
|
|
561
594
|
|
|
562
595
|
|
|
563
596
|
class RoborockDockTypeCode(RoborockEnum):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q10/b01_q10_code_mappings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/data/b01_q7/b01_q7_code_mappings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/clean_summary.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/b01/q7/map_content.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/device_features.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/do_not_disturb.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/dust_collection_mode.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/flow_led_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/smart_wash_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.7.0}/roborock/devices/traits/v1/wash_towel_mode.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|