python-roborock 5.5.1__tar.gz → 5.6.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.6.0}/PKG-INFO +1 -1
- {python_roborock-5.5.1 → python_roborock-5.6.0}/pyproject.toml +1 -1
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/cli.py +57 -19
- {python_roborock-5.5.1 → python_roborock-5.6.0}/.gitignore +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/LICENSE +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/README.md +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/broadcast_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/callbacks.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/const.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q10/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q7/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/dyad/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/dyad/dyad_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/v1/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/v1/v1_clean_modes.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/v1/v1_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/v1/v1_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/zeo/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/data/zeo/zeo_containers.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/device_features.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/README.md +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/cache.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/device.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/device_manager.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/file_cache.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/rpc/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/rpc/a01_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/rpc/v1_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/a01/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q10/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q10/command.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q10/common.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q10/status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q10/vacuum.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q7/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q7/clean_summary.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q7/map.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q7/map_content.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/traits_mixin.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/child_lock.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/command.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/common.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/consumeable.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/device_features.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/home.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/led_status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/map_content.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/maps.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/network_info.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/rooms.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/routines.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/status.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/volume.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/transport/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/transport/channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/transport/local_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/transport/mqtt_channel.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/diagnostics.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/exceptions.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/b01_map_parser.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/map_parser.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/proto/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/proto/b01_scmap.proto +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/map/proto/b01_scmap_pb2.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/mqtt/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/mqtt/health_manager.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/mqtt/roborock_session.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/mqtt/session.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocols/__init__.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocols/a01_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocols/b01_q10_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocols/b01_q7_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/protocols/v1_protocol.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/py.typed +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/roborock_message.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/roborock_typing.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/util.py +0 -0
- {python_roborock-5.5.1 → python_roborock-5.6.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.6.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.6.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
|
|
|
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.6.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.6.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
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/b01/q7/clean_summary.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.6.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.6.0}/roborock/devices/traits/v1/device_features.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/do_not_disturb.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.6.0}/roborock/devices/traits/v1/dust_collection_mode.py
RENAMED
|
File without changes
|
{python_roborock-5.5.1 → python_roborock-5.6.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.6.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.6.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
|