pymammotion 0.4.46__tar.gz → 0.4.48__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 (129) hide show
  1. {pymammotion-0.4.46 → pymammotion-0.4.48}/PKG-INFO +1 -1
  2. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/device.py +9 -9
  3. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/device_info.py +3 -0
  4. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/mowing_modes.py +2 -2
  5. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/state_manager.py +10 -0
  6. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/system.py +2 -10
  7. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/devices/base.py +3 -0
  8. {pymammotion-0.4.46 → pymammotion-0.4.48}/pyproject.toml +2 -2
  9. {pymammotion-0.4.46 → pymammotion-0.4.48}/LICENSE +0 -0
  10. {pymammotion-0.4.46 → pymammotion-0.4.48}/README.md +0 -0
  11. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/__init__.py +0 -0
  12. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/__init__.py +0 -0
  13. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/client.py +0 -0
  14. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/cloud_gateway.py +0 -0
  15. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/aep_response.py +0 -0
  16. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/connect_response.py +0 -0
  17. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  18. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  19. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/regions_response.py +0 -0
  20. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  21. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/regions.py +0 -0
  22. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/tea/core.py +0 -0
  23. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/aliyun/tmp_constant.py +0 -0
  24. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/__init__.py +0 -0
  25. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/ble.py +0 -0
  26. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/ble_message.py +0 -0
  27. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/const.py +0 -0
  28. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/data/__init__.py +0 -0
  29. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/data/convert.py +0 -0
  30. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  31. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/data/notifydata.py +0 -0
  32. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/model/__init__.py +0 -0
  33. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  34. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/const.py +0 -0
  35. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/__init__.py +0 -0
  36. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/__init__.py +0 -0
  37. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/account.py +0 -0
  38. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/device_config.py +0 -0
  39. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/device_limits.py +0 -0
  40. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/enums.py +0 -0
  41. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/excute_boarder_params.py +0 -0
  42. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/execute_boarder.py +0 -0
  43. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/generate_route_information.py +0 -0
  44. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/hash_list.py +0 -0
  45. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/location.py +0 -0
  46. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/rapid_state.py +0 -0
  47. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/raw_data.py +0 -0
  48. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/region_data.py +0 -0
  49. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/report_info.py +0 -0
  50. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/model/work.py +0 -0
  51. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/mqtt/__init__.py +0 -0
  52. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/mqtt/event.py +0 -0
  53. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/mqtt/properties.py +0 -0
  54. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/data/mqtt/status.py +0 -0
  55. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/event/__init__.py +0 -0
  56. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/event/event.py +0 -0
  57. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/__init__.py +0 -0
  58. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/_init_.py +0 -0
  59. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/encryption.py +0 -0
  60. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/http.py +0 -0
  61. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/model/__init__.py +0 -0
  62. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/model/camera_stream.py +0 -0
  63. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/http/model/http.py +0 -0
  64. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/__init__.py +0 -0
  65. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/__init__.py +0 -0
  66. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  67. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  68. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  69. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  70. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/media.py +0 -0
  71. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  72. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/network.py +0 -0
  73. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  74. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/commands/messages/video.py +0 -0
  75. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/control/__init__.py +0 -0
  76. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/control/joystick.py +0 -0
  77. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/devices/__init__.py +0 -0
  78. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/devices/mammotion.py +0 -0
  79. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  80. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
  81. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/__init__.py +0 -0
  82. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  83. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  84. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  85. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/mammotion_future.py +0 -0
  86. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  87. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/__init__.py +0 -0
  88. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/basestation.proto +0 -0
  89. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/basestation_pb2.py +0 -0
  90. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/basestation_pb2.pyi +0 -0
  91. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/common.proto +0 -0
  92. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/common_pb2.py +0 -0
  93. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/common_pb2.pyi +0 -0
  94. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/dev_net.proto +0 -0
  95. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/dev_net_pb2.py +0 -0
  96. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  97. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_msg.proto +0 -0
  98. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_msg_pb2.py +0 -0
  99. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  100. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_mul.proto +0 -0
  101. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_mul_pb2.py +0 -0
  102. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  103. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_driver.proto +0 -0
  104. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  105. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  106. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_nav.proto +0 -0
  107. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  108. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  109. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_ota.proto +0 -0
  110. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  111. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  112. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_pept.proto +0 -0
  113. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  114. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  115. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_sys.proto +0 -0
  116. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  117. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  118. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/py.typed +0 -0
  119. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/constant/__init__.py +0 -0
  120. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/constant/device_constant.py +0 -0
  121. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/conversions.py +0 -0
  122. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/datatype_converter.py +0 -0
  123. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/device_config.py +0 -0
  124. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/device_type.py +0 -0
  125. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/map.py +0 -0
  126. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/movement.py +0 -0
  127. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/mur_mur_hash.py +0 -0
  128. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/periodic.py +0 -0
  129. {pymammotion-0.4.46 → pymammotion-0.4.48}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymammotion
3
- Version: 0.4.46
3
+ Version: 0.4.48
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -43,12 +43,14 @@ class MowingDevice(DataClassORJSONMixin):
43
43
  """Update the device based on which buffer we are reading from."""
44
44
  match buffer_list.update_buf_data[0]:
45
45
  case 1:
46
- # 4 speed
47
- self.location.RTK.latitude = parse_double(buffer_list.update_buf_data[5], 8.0)
48
- self.location.RTK.longitude = parse_double(buffer_list.update_buf_data[6], 8.0)
49
- self.location.dock.latitude = parse_double(buffer_list.update_buf_data[7], 4.0)
50
- self.location.dock.longitude = parse_double(buffer_list.update_buf_data[8], 4.0)
51
- self.location.dock.rotation = buffer_list.update_buf_data[3] + 180
46
+ # 4 speed?
47
+ if buffer_list.update_buf_data[5] != 0:
48
+ self.location.RTK.latitude = parse_double(buffer_list.update_buf_data[5], 8.0)
49
+ self.location.RTK.longitude = parse_double(buffer_list.update_buf_data[6], 8.0)
50
+ if buffer_list.update_buf_data[7] != 0:
51
+ self.location.dock.latitude = parse_double(buffer_list.update_buf_data[7], 4.0)
52
+ self.location.dock.longitude = parse_double(buffer_list.update_buf_data[8], 4.0)
53
+ self.location.dock.rotation = buffer_list.update_buf_data[3] + 180
52
54
  case 2:
53
55
  self.err_code_list.clear()
54
56
  self.err_code_list_time.clear()
@@ -99,13 +101,11 @@ class MowingDevice(DataClassORJSONMixin):
99
101
  # if loc.bol_hash:
100
102
  # if loc.bol_hash != location.bol_hash:
101
103
  # self.map = HashList()
102
- #MurMurHashUtil.hash_unsigned_list(list(self.map.area.keys()))
104
+ # MurMurHashUtil.hash_unsigned_list(list(self.map.area.keys()))
103
105
 
104
106
  if toapp_report_data.fw_info:
105
107
  self.update_device_firmwares(toapp_report_data.fw_info)
106
108
 
107
-
108
-
109
109
  self.report_data.update(toapp_report_data.to_dict(casing=betterproto.Casing.SNAKE))
110
110
 
111
111
  def run_state_update(self, rapid_state: SystemRapidStateTunnelMsg) -> None:
@@ -17,6 +17,9 @@ class SideLight(DataClassORJSONMixin):
17
17
  @dataclass
18
18
  class MowerInfo(DataClassORJSONMixin):
19
19
  blade_status: bool = False
20
+ rain_detection: bool = False
21
+ traversal_mode: int = 0
22
+ turning_mode: int = 0
20
23
  side_led: SideLight = field(default_factory=SideLight)
21
24
  collector_installation_status: bool = False
22
25
  model: str = ""
@@ -47,8 +47,8 @@ class TraversalMode(IntEnum):
47
47
  class TurningMode(IntEnum):
48
48
  """Turning mode on corners."""
49
49
 
50
- multipoint = 0
51
- zero_turn = 1
50
+ zero_turn = 0
51
+ multipoint = 1
52
52
 
53
53
 
54
54
  class DetectionStrategy(IntEnum):
@@ -25,6 +25,7 @@ from pymammotion.proto import (
25
25
  NavGetHashListAck,
26
26
  NavPlanJobSet,
27
27
  NavReqCoverPath,
28
+ NavSysParamMsg,
28
29
  SvgMessageAckT,
29
30
  TimeCtrlLight,
30
31
  WifiIotStatusReport,
@@ -173,6 +174,15 @@ class StateManager:
173
174
  self._device.work = CurrentTaskSettings.from_dict(
174
175
  work_settings.to_dict(casing=betterproto.Casing.SNAKE)
175
176
  )
177
+ case "nav_sys_param_cmd":
178
+ settings: NavSysParamMsg = nav_msg[1]
179
+ match settings.id:
180
+ case 3:
181
+ self._device.mower_state.rain_detection = bool(settings.context)
182
+ case 6:
183
+ self._device.mower_state.turning_mode = settings.context
184
+ case 7:
185
+ self._device.mower_state.traversal_mode = settings.context
176
186
 
177
187
  def _update_sys_data(self, message) -> None:
178
188
  """Update system."""
@@ -125,14 +125,6 @@ class MessageSystem(AbstractMessage, ABC):
125
125
  return self.messageNavigation.allpowerfull_rw_adapter_x3(rw_id, context, rw)
126
126
  build = MctlSys(bidire_comm_cmd=SysCommCmd(id=rw_id, context=context, rw=rw))
127
127
  logger.debug(f"Send command - 9 general read and write command id={rw_id}, context={context}, rw={rw}")
128
- if rw_id == 5:
129
- # TODO investigate if the original code makes any difference to this call.
130
- """
131
- LubaMsgOuterClass.LubaMsg.Builder protoBufBuilderSet = getProtoBufBuilderSet(LubaMsgOuterClass.MsgCmdType.EMBED_SYS, LubaMsgOuterClass.MsgDevice.DEV_MAINCTL, LubaMsgOuterClass.MsgAttr.REQ);
132
- protoBufBuilderSet.setSys(build);
133
- sendMsg(protoBufBuilderSet, 122, true, "发送指令--9通用读写命令id=" + i + ",context=" + i2 + ",rw=" + i3);
134
- """
135
- return self.send_order_msg_sys(build)
136
128
  return self.send_order_msg_sys(build)
137
129
 
138
130
  def traverse_mode(self, context: int) -> bytes:
@@ -145,8 +137,8 @@ class MessageSystem(AbstractMessage, ABC):
145
137
  def turning_mode(self, context: int) -> bytes:
146
138
  """Sets the traversal mode back to charger."""
147
139
  # setTurnAroundMode
148
- # 0 multipoint turn
149
- # 1 zero turn
140
+ # 0 zero turn
141
+ # 1 multipoint turn
150
142
  return self.allpowerfull_rw(6, context, 1)
151
143
 
152
144
  # Commented out as not needed and too many refs to try fix up
@@ -262,8 +262,11 @@ class MammotionBaseDevice:
262
262
 
263
263
  async def async_read_settings(self) -> None:
264
264
  """Read settings from device."""
265
+ # no cutting in rain nav_sys_param_cmd (id 3 context 1/0)
265
266
  await self.queue_command("allpowerfull_rw", rw_id=3, context=1, rw=0)
267
+ # ??
266
268
  await self.queue_command("allpowerfull_rw", rw_id=4, context=1, rw=0)
269
+ # turning mode nav_sys_param_cmd (id 6, context 1/0)
267
270
  await self.queue_command("allpowerfull_rw", rw_id=6, context=1, rw=0)
268
271
  # traversal mode
269
272
  await self.queue_command("allpowerfull_rw", rw_id=7, context=1, rw=0)
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.4.46"
7
+ version = "0.4.48"
8
8
  license = "GPL-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -66,7 +66,7 @@ autotyping = "^24.3.0"
66
66
  ipython = "^9.0.2"
67
67
 
68
68
  [tool.bumpver]
69
- current_version = "0.4.46"
69
+ current_version = "0.4.48"
70
70
  version_pattern = "MAJOR.MINOR.PATCH"
71
71
  commit_message = "Bump version {old_version} -> {new_version}"
72
72
  commit = true
File without changes
File without changes