pymammotion 0.2.57__tar.gz → 0.2.59__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 (124) hide show
  1. {pymammotion-0.2.57 → pymammotion-0.2.59}/PKG-INFO +1 -1
  2. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/cloud_gateway.py +2 -0
  3. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/device_config.py +4 -3
  4. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/state_manager.py +9 -1
  5. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/devices/base.py +3 -2
  6. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/devices/mammotion.py +3 -5
  7. {pymammotion-0.2.57 → pymammotion-0.2.59}/pyproject.toml +4 -3
  8. {pymammotion-0.2.57 → pymammotion-0.2.59}/LICENSE +0 -0
  9. {pymammotion-0.2.57 → pymammotion-0.2.59}/README.md +0 -0
  10. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/__init__.py +0 -0
  11. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/__init__.py +0 -0
  12. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/cloud_service.py +0 -0
  13. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/aep_response.py +0 -0
  14. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/connect_response.py +0 -0
  15. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  16. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  17. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/regions_response.py +0 -0
  18. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  19. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/model/stream_subscription_response.py +0 -0
  20. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/aliyun/tmp_constant.py +0 -0
  21. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/__init__.py +0 -0
  22. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/ble.py +0 -0
  23. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/ble_message.py +0 -0
  24. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/const.py +0 -0
  25. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/data/__init__.py +0 -0
  26. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/data/convert.py +0 -0
  27. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  28. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/bluetooth/data/notifydata.py +0 -0
  29. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/const.py +0 -0
  30. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/__init__.py +0 -0
  31. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/__init__.py +0 -0
  32. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/account.py +0 -0
  33. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/device.py +0 -0
  34. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/enums.py +0 -0
  35. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/excute_boarder_params.py +0 -0
  36. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/execute_boarder.py +0 -0
  37. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/generate_route_information.py +0 -0
  38. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/hash_list.py +0 -0
  39. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/location.py +0 -0
  40. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/mowing_modes.py +0 -0
  41. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/plan.py +0 -0
  42. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/rapid_state.py +0 -0
  43. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/region_data.py +0 -0
  44. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/model/report_info.py +0 -0
  45. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/mqtt/__init__.py +0 -0
  46. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/mqtt/event.py +0 -0
  47. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/mqtt/properties.py +0 -0
  48. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/data/mqtt/status.py +0 -0
  49. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/event/__init__.py +0 -0
  50. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/event/event.py +0 -0
  51. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/http/_init_.py +0 -0
  52. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/http/http.py +0 -0
  53. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/http/model/http.py +0 -0
  54. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/__init__.py +0 -0
  55. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/__init__.py +0 -0
  56. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  57. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  58. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  59. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  60. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/media.py +0 -0
  61. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  62. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/network.py +0 -0
  63. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  64. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/system.py +0 -0
  65. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/commands/messages/video.py +0 -0
  66. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/control/__init__.py +0 -0
  67. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/control/joystick.py +0 -0
  68. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/devices/__init__.py +0 -0
  69. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  70. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
  71. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mqtt/__init__.py +0 -0
  72. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mqtt/mammotion_future.py +0 -0
  73. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  74. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/__init__.py +0 -0
  75. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/basestation.proto +0 -0
  76. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/basestation.py +0 -0
  77. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/basestation_pb2.py +0 -0
  78. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/basestation_pb2.pyi +0 -0
  79. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/common.proto +0 -0
  80. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/common.py +0 -0
  81. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/common_pb2.py +0 -0
  82. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/common_pb2.pyi +0 -0
  83. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/dev_net.proto +0 -0
  84. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/dev_net.py +0 -0
  85. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/dev_net_pb2.py +0 -0
  86. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  87. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_msg.proto +0 -0
  88. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_msg.py +0 -0
  89. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_msg_pb2.py +0 -0
  90. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  91. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_mul.proto +0 -0
  92. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_mul.py +0 -0
  93. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_mul_pb2.py +0 -0
  94. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  95. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_driver.proto +0 -0
  96. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_driver.py +0 -0
  97. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  98. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  99. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_nav.proto +0 -0
  100. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_nav.py +0 -0
  101. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  102. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  103. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_ota.proto +0 -0
  104. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_ota.py +0 -0
  105. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  106. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  107. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_pept.proto +0 -0
  108. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_pept.py +0 -0
  109. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  110. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  111. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_sys.proto +0 -0
  112. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_sys.py +0 -0
  113. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  114. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  115. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/py.typed +0 -0
  116. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/constant/__init__.py +0 -0
  117. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/constant/device_constant.py +0 -0
  118. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/conversions.py +0 -0
  119. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/datatype_converter.py +0 -0
  120. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/device_type.py +0 -0
  121. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/map.py +0 -0
  122. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/movement.py +0 -0
  123. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/periodic.py +0 -0
  124. {pymammotion-0.2.57 → pymammotion-0.2.59}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymammotion
3
- Version: 0.2.57
3
+ Version: 0.2.59
4
4
  Summary:
5
5
  License: GNU-3.0
6
6
  Author: Michael Arthur
@@ -664,6 +664,7 @@ class CloudIOTGateway:
664
664
  "args": {"content": self.converter.printBase64Binary(command)},
665
665
  "identifier": "device_protobuf_sync_service",
666
666
  "iotId": f"{iot_id}",
667
+ "identityId": f"{self._session_by_authcode_response.data.identityId}"
667
668
  },
668
669
  request=request,
669
670
  version="1.0",
@@ -687,6 +688,7 @@ class CloudIOTGateway:
687
688
  str(response_body_dict.get("msg")),
688
689
  )
689
690
  if response_body_dict.get("code") == 29003:
691
+ logger.debug(self._session_by_authcode_response.data.identityId)
690
692
  self.sign_out()
691
693
  raise SetupException(response_body_dict.get("code"))
692
694
  if response_body_dict.get("code") == 6205:
@@ -23,21 +23,22 @@ class OperationSettings(DataClassORJSONMixin):
23
23
  is_dump: bool = True
24
24
  is_edge: bool = False
25
25
  collect_grass_frequency: int = 10
26
- job_mode: int = 0 # taskMode
26
+ job_mode: int = 4 # taskMode
27
27
  job_version: int = 0
28
28
  job_id: int = 0
29
29
  speed: float = 0.3
30
30
  ultra_wave: int = 2 # touch no touch etc
31
- channel_mode: int = 0 # line mode is grid single double or single2
31
+ channel_mode: int = 0 # grid or border first
32
32
  channel_width: int = 25
33
33
  rain_tactics: int = 0
34
34
  blade_height: int = 0
35
35
  path_order: str = ""
36
36
  toward: int = 0 # is just angle
37
- toward_included_angle: int = 0
37
+ toward_included_angle: int = 90
38
38
  toward_mode: int = 0 # angle type relative etc
39
39
  border_mode: int = 1 # border laps
40
40
  obstacle_laps: int = 1
41
+ mowing_laps: int = 1
41
42
  start_progress: int = 0
42
43
  areas: list[int] = field(default_factory=list)
43
44
 
@@ -1,10 +1,12 @@
1
1
  """Manage state from notifications into MowingDevice."""
2
2
 
3
+ import logging
3
4
  from datetime import datetime
4
5
  from typing import Any, Awaitable, Callable, Optional
5
6
 
6
7
  import betterproto
7
8
 
9
+ from pymammotion.aliyun.cloud_gateway import SetupException
8
10
  from pymammotion.data.model.device import MowingDevice
9
11
  from pymammotion.data.model.hash_list import AreaHashNameList
10
12
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
@@ -12,6 +14,8 @@ from pymammotion.proto.luba_msg import LubaMsg
12
14
  from pymammotion.proto.mctrl_nav import AppGetAllAreaHashName, NavGetCommDataAck, NavGetHashListAck
13
15
  from pymammotion.utility.constant import WorkMode
14
16
 
17
+ logger = logging.getLogger(__name__)
18
+
15
19
 
16
20
  class StateManager:
17
21
  """Manage state."""
@@ -89,7 +93,11 @@ class StateManager:
89
93
  self._device.update_report_data(sys_msg[1])
90
94
  if self.queue_command_callback:
91
95
  if self._device.sys.toapp_report_data.dev.sys_status != WorkMode.MODE_WORKING:
92
- await self.queue_command_callback("get_report_cfg_stop")
96
+ try:
97
+ await self.queue_command_callback("get_report_cfg_stop")
98
+ except SetupException as exc:
99
+ # can't do anything about it yet
100
+ logger.debug(exc)
93
101
  case "mow_to_app_info":
94
102
  self._device.mow_info(sys_msg[1])
95
103
  case "system_tard_state_tunnel":
@@ -217,8 +217,9 @@ class MammotionBaseDevice:
217
217
 
218
218
  await self.queue_command("get_all_boundary_hash_list", sub_cmd=0)
219
219
  await self.queue_command("get_hash_response", total_frame=1, current_frame=1)
220
- data_hash = self.mower.map.missing_hashlist.pop()
221
- await self.queue_command("synchronize_hash_data", hash_num=data_hash)
220
+ if len(self.mower.map.missing_hashlist) > 0:
221
+ data_hash = self.mower.map.missing_hashlist.pop()
222
+ await self.queue_command("synchronize_hash_data", hash_num=data_hash)
222
223
 
223
224
  # sub_cmd 3 is job hashes??
224
225
  # sub_cmd 4 is dump location (yuka)
@@ -182,11 +182,10 @@ class Mammotion:
182
182
  await self.initiate_cloud_connection(account, cloud_client)
183
183
 
184
184
  async def initiate_cloud_connection(self, account: str, cloud_client: CloudIOTGateway) -> None:
185
+ loop = asyncio.get_running_loop()
185
186
  if self.mqtt_list.get(account) is not None:
186
- if self.mqtt_list.get(account).is_connected:
187
- # we might have removed a device so readd
188
- self.add_cloud_devices(self.mqtt_list.get(account))
189
- return
187
+ if self.mqtt_list.get(account).is_connected():
188
+ await loop.run_in_executor(None, self.mqtt_list.get(account).disconnect)
190
189
 
191
190
  mammotion_cloud = MammotionCloud(
192
191
  MammotionMQTT(
@@ -203,7 +202,6 @@ class Mammotion:
203
202
  self.mqtt_list[account] = mammotion_cloud
204
203
  self.add_cloud_devices(mammotion_cloud)
205
204
 
206
- loop = asyncio.get_running_loop()
207
205
  await loop.run_in_executor(None, self.mqtt_list[account].connect_async)
208
206
 
209
207
  def add_cloud_devices(self, mqtt_client: MammotionCloud) -> None:
@@ -1,10 +1,10 @@
1
1
  [project]
2
2
  name = "pymammotion"
3
- version = "0.2.57"
3
+ version = "0.2.59"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "pymammotion"
7
- version = "0.2.57"
7
+ version = "0.2.59"
8
8
  license = "GNU-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -41,6 +41,7 @@ optional = true
41
41
 
42
42
  [tool.poetry.group.extras.dependencies]
43
43
  pyjoystick = "^1.2.4"
44
+ nest-asyncio = "^1.6.0"
44
45
 
45
46
  [tool.poetry.group.dev]
46
47
  optional = true
@@ -60,7 +61,7 @@ mypy = "^1.11.2"
60
61
  autotyping = "^24.3.0"
61
62
 
62
63
  [tool.bumpver]
63
- current_version = "0.2.57"
64
+ current_version = "0.2.59"
64
65
  version_pattern = "MAJOR.MINOR.PATCH"
65
66
  commit_message = "Bump version {old_version} -> {new_version}"
66
67
  commit = true
File without changes
File without changes