python-roborock 7.7.0__tar.gz → 7.8.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.
Files changed (133) hide show
  1. {python_roborock-7.7.0 → python_roborock-7.8.0}/PKG-INFO +1 -1
  2. {python_roborock-7.7.0 → python_roborock-7.8.0}/pyproject.toml +1 -1
  3. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +2 -7
  4. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +17 -1
  5. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q7/b01_q7_containers.py +4 -2
  6. {python_roborock-7.7.0 → python_roborock-7.8.0}/.gitignore +0 -0
  7. {python_roborock-7.7.0 → python_roborock-7.8.0}/LICENSE +0 -0
  8. {python_roborock-7.7.0 → python_roborock-7.8.0}/README.md +0 -0
  9. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/__init__.py +0 -0
  10. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/broadcast_protocol.py +0 -0
  11. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/callbacks.py +0 -0
  12. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/cli.py +0 -0
  13. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/const.py +0 -0
  14. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/__init__.py +0 -0
  15. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q10/__init__.py +0 -0
  16. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
  17. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/b01_q7/__init__.py +0 -0
  18. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/code_mappings.py +0 -0
  19. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/containers.py +0 -0
  20. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/dyad/__init__.py +0 -0
  21. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
  22. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/dyad/dyad_containers.py +0 -0
  23. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/mower/__init__.py +0 -0
  24. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/mower/mower_code_mappings.py +0 -0
  25. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/mower/mower_containers.py +0 -0
  26. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/v1/__init__.py +0 -0
  27. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/v1/v1_clean_modes.py +0 -0
  28. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/v1/v1_code_mappings.py +0 -0
  29. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/v1/v1_containers.py +0 -0
  30. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/zeo/__init__.py +0 -0
  31. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
  32. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/data/zeo/zeo_containers.py +0 -0
  33. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/device_features.py +0 -0
  34. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/README.md +0 -0
  35. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/__init__.py +0 -0
  36. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/cache.py +0 -0
  37. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/device.py +0 -0
  38. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/device_manager.py +0 -0
  39. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/file_cache.py +0 -0
  40. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/rpc/__init__.py +0 -0
  41. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/rpc/a01_channel.py +0 -0
  42. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
  43. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
  44. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/rpc/v1_channel.py +0 -0
  45. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/__init__.py +0 -0
  46. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/a01/__init__.py +0 -0
  47. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/a01/device_feature.py +0 -0
  48. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/__init__.py +0 -0
  49. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/__init__.py +0 -0
  50. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/button_light.py +0 -0
  51. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/child_lock.py +0 -0
  52. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/clean_history.py +0 -0
  53. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/command.py +0 -0
  54. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/common.py +0 -0
  55. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/consumable.py +0 -0
  56. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/do_not_disturb.py +0 -0
  57. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/dust_collection.py +0 -0
  58. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/goto.py +0 -0
  59. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/map.py +0 -0
  60. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/maps.py +0 -0
  61. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/network_info.py +0 -0
  62. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/remote.py +0 -0
  63. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/status.py +0 -0
  64. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/vacuum.py +0 -0
  65. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q10/volume.py +0 -0
  66. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q7/__init__.py +0 -0
  67. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q7/clean_summary.py +0 -0
  68. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q7/map.py +0 -0
  69. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/b01/q7/map_content.py +0 -0
  70. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/common.py +0 -0
  71. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/traits_mixin.py +0 -0
  72. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/__init__.py +0 -0
  73. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/child_lock.py +0 -0
  74. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
  75. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/command.py +0 -0
  76. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/common.py +0 -0
  77. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/consumeable.py +0 -0
  78. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/device_features.py +0 -0
  79. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
  80. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
  81. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
  82. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/home.py +0 -0
  83. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/led_status.py +0 -0
  84. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/map_content.py +0 -0
  85. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/maps.py +0 -0
  86. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/network_info.py +0 -0
  87. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/obstacle_photos.py +0 -0
  88. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/rooms.py +0 -0
  89. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/routines.py +0 -0
  90. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
  91. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/status.py +0 -0
  92. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
  93. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/volume.py +0 -0
  94. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
  95. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/transport/__init__.py +0 -0
  96. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/transport/channel.py +0 -0
  97. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/transport/local_channel.py +0 -0
  98. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/devices/transport/mqtt_channel.py +0 -0
  99. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/diagnostics.py +0 -0
  100. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/exceptions.py +0 -0
  101. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/__init__.py +0 -0
  102. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/b01_grid_layers.py +0 -0
  103. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/b01_map_parser.py +0 -0
  104. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/b01_q10_map_parser.py +0 -0
  105. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/b01_q10_overlays.py +0 -0
  106. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/b01_q10_render.py +0 -0
  107. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/map_parser.py +0 -0
  108. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/proto/__init__.py +0 -0
  109. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/proto/b01_scmap.proto +0 -0
  110. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/proto/b01_scmap_pb2.py +0 -0
  111. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/map/room_colors.py +0 -0
  112. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/mqtt/__init__.py +0 -0
  113. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/mqtt/health_manager.py +0 -0
  114. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/mqtt/roborock_session.py +0 -0
  115. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/mqtt/session.py +0 -0
  116. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocol.py +0 -0
  117. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocols/__init__.py +0 -0
  118. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocols/a01_protocol.py +0 -0
  119. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocols/b01_q10_protocol.py +0 -0
  120. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocols/b01_q7_protocol.py +0 -0
  121. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/protocols/v1_protocol.py +0 -0
  122. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/py.typed +0 -0
  123. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/roborock_message.py +0 -0
  124. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/roborock_typing.py +0 -0
  125. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/__init__.py +0 -0
  126. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/a01_simulator.py +0 -0
  127. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/b01_q10_simulator.py +0 -0
  128. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/channel.py +0 -0
  129. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/cloud.py +0 -0
  130. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/simulator.py +0 -0
  131. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/testing/v1_simulator.py +0 -0
  132. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/util.py +0 -0
  133. {python_roborock-7.7.0 → python_roborock-7.8.0}/roborock/web_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-roborock
3
- Version: 7.7.0
3
+ Version: 7.8.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 = "7.7.0"
3
+ version = "7.8.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"
@@ -101,13 +101,8 @@ class B01_Q10_DP(RoborockModeEnum):
101
101
  VOICE_VERSION = ("dpVoiceVersion", 108)
102
102
  ROBOT_COUNTRY_CODE = ("dpRobotCountryCode", 109)
103
103
  HEARTBEAT = ("dpHeartbeat", 110)
104
- # NOTE: ss07 hardware also pushes data points 112 and 113 in its full status
105
- # dump. They are absent from the official app's vacuum plugin and stayed 0
106
- # across every observed state (docked/charging, segment cleaning, lifted-off-
107
- # ground fault, returning to dock, dustbin removed), so their meaning is not
108
- # yet known. They are intentionally left unmapped; ``decode_rpc_response``
109
- # silently ignores unknown codes via ``from_code_optional``, so they do not
110
- # produce "not a valid code" warnings. Map them here once identified.
104
+ UNKNOWN_112 = ("dpUnknown112", 112)
105
+ UNKNOWN_113 = ("dpUnknown113", 113)
111
106
  STATUS = ("dpStatus", 121)
112
107
  BATTERY = ("dpBattery", 122)
113
108
  FAN_LEVEL = ("dpFanLevel", 123) # NOTE: typo "dpfunLevel" in source code
@@ -1,6 +1,6 @@
1
1
  from typing import Self, cast
2
2
 
3
- from ..code_mappings import RoborockModeEnum
3
+ from ..code_mappings import RoborockEnum, RoborockModeEnum
4
4
 
5
5
 
6
6
  class WorkStatusMapping(RoborockModeEnum):
@@ -121,6 +121,22 @@ class WorkModeMapping(RoborockModeEnum):
121
121
  EXPLORE_IDLE = ("explore_idle", 49)
122
122
 
123
123
 
124
+ class StationStateMapping(RoborockEnum):
125
+ """Known dock activity states observed on the Q7 M5+."""
126
+
127
+ unknown = -1
128
+ idle = 0
129
+ collecting_dust = 3
130
+
131
+
132
+ class DustCollectionStateMapping(RoborockEnum):
133
+ """Known dust collection states observed on the Q7 M5+."""
134
+
135
+ unknown = -1
136
+ idle = 0
137
+ collecting_dust = 1
138
+
139
+
124
140
  class StationActionMapping(RoborockModeEnum):
125
141
  """Maps actions for the cleaning/drying station."""
126
142
 
@@ -10,7 +10,9 @@ from .b01_q7_code_mappings import (
10
10
  CleanPathPreferenceMapping,
11
11
  CleanRepeatMapping,
12
12
  CleanTypeMapping,
13
+ DustCollectionStateMapping,
13
14
  SCWindMapping,
15
+ StationStateMapping,
14
16
  WaterLevelMapping,
15
17
  WorkModeMapping,
16
18
  WorkStatusMapping,
@@ -137,11 +139,11 @@ class B01Props(RoborockBase):
137
139
  custom_type: int | None = None
138
140
  sound: int | None = None
139
141
  work_mode: WorkModeMapping | None = None
140
- station_act: int | None = None # dock activity; 3 while collecting dust, 0 idle. hw-confirmed (Q7 M5+)
142
+ station_act: StationStateMapping | None = None
141
143
  charge_state: int | None = None
142
144
  current_map_id: int | None = None
143
145
  map_num: int | None = None
144
- dust_action: int | None = None # 1 while the dock is collecting dust; read-only (prop.set rejected, code 1)
146
+ dust_action: DustCollectionStateMapping | None = None # Read-only; prop.set is rejected with code 1 on the Q7 M5+.
145
147
  quiet_is_open: int | None = None
146
148
  quiet_begin_time: int | None = None
147
149
  quiet_end_time: int | None = None
File without changes