pymammotion 0.5.8__tar.gz → 0.5.10__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.

Potentially problematic release.


This version of pymammotion might be problematic. Click here for more details.

Files changed (132) hide show
  1. {pymammotion-0.5.8 → pymammotion-0.5.10}/PKG-INFO +1 -1
  2. pymammotion-0.5.10/pymammotion/data/model/errors.py +12 -0
  3. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/mqtt/event.py +9 -1
  4. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/http.py +6 -1
  5. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/media.py +34 -1
  6. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/mammotion_mqtt.py +2 -2
  7. {pymammotion-0.5.8 → pymammotion-0.5.10}/pyproject.toml +2 -2
  8. pymammotion-0.5.8/pymammotion/data/model/errors.py +0 -12
  9. {pymammotion-0.5.8 → pymammotion-0.5.10}/LICENSE +0 -0
  10. {pymammotion-0.5.8 → pymammotion-0.5.10}/README.md +0 -0
  11. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/__init__.py +0 -0
  12. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/__init__.py +0 -0
  13. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/client.py +0 -0
  14. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/cloud_gateway.py +0 -0
  15. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/aep_response.py +0 -0
  16. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/connect_response.py +0 -0
  17. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  18. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  19. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/regions_response.py +0 -0
  20. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  21. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/regions.py +0 -0
  22. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/tea/core.py +0 -0
  23. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/aliyun/tmp_constant.py +0 -0
  24. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/__init__.py +0 -0
  25. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/ble.py +0 -0
  26. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/ble_message.py +0 -0
  27. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/const.py +0 -0
  28. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/data/__init__.py +0 -0
  29. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/data/convert.py +0 -0
  30. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  31. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/data/notifydata.py +0 -0
  32. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/model/__init__.py +0 -0
  33. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  34. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/const.py +0 -0
  35. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/__init__.py +0 -0
  36. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/__init__.py +0 -0
  37. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/account.py +0 -0
  38. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/device.py +0 -0
  39. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/device_config.py +0 -0
  40. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/device_info.py +0 -0
  41. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/device_limits.py +0 -0
  42. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/enums.py +0 -0
  43. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/excute_boarder_params.py +0 -0
  44. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/execute_boarder.py +0 -0
  45. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/generate_route_information.py +0 -0
  46. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/hash_list.py +0 -0
  47. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/location.py +0 -0
  48. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/mowing_modes.py +0 -0
  49. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/rapid_state.py +0 -0
  50. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/raw_data.py +0 -0
  51. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/region_data.py +0 -0
  52. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/report_info.py +0 -0
  53. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/model/work.py +0 -0
  54. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/mqtt/__init__.py +0 -0
  55. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/mqtt/properties.py +0 -0
  56. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/mqtt/status.py +0 -0
  57. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/data/state_manager.py +0 -0
  58. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/event/__init__.py +0 -0
  59. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/event/event.py +0 -0
  60. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/__init__.py +0 -0
  61. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/_init_.py +0 -0
  62. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/encryption.py +0 -0
  63. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/model/__init__.py +0 -0
  64. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/model/camera_stream.py +0 -0
  65. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/model/http.py +0 -0
  66. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/http/model/response_factory.py +0 -0
  67. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/__init__.py +0 -0
  68. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/__init__.py +0 -0
  69. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  70. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  71. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  72. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  73. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  74. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/network.py +0 -0
  75. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  76. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/system.py +0 -0
  77. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/commands/messages/video.py +0 -0
  78. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/control/__init__.py +0 -0
  79. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/control/joystick.py +0 -0
  80. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/devices/__init__.py +0 -0
  81. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/devices/base.py +0 -0
  82. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/devices/mammotion.py +0 -0
  83. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  84. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
  85. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/__init__.py +0 -0
  86. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  87. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  88. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  89. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/mqtt/mammotion_future.py +0 -0
  90. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/__init__.py +0 -0
  91. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/basestation.proto +0 -0
  92. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/basestation_pb2.py +0 -0
  93. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/basestation_pb2.pyi +0 -0
  94. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/common.proto +0 -0
  95. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/common_pb2.py +0 -0
  96. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/common_pb2.pyi +0 -0
  97. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/dev_net.proto +0 -0
  98. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/dev_net_pb2.py +0 -0
  99. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  100. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_msg.proto +0 -0
  101. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_msg_pb2.py +0 -0
  102. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  103. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_mul.proto +0 -0
  104. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_mul_pb2.py +0 -0
  105. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  106. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_driver.proto +0 -0
  107. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  108. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  109. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_nav.proto +0 -0
  110. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  111. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  112. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_ota.proto +0 -0
  113. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  114. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  115. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_pept.proto +0 -0
  116. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  117. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  118. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_sys.proto +0 -0
  119. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  120. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  121. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/py.typed +0 -0
  122. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/constant/__init__.py +0 -0
  123. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/constant/device_constant.py +0 -0
  124. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/conversions.py +0 -0
  125. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/datatype_converter.py +0 -0
  126. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/device_config.py +0 -0
  127. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/device_type.py +0 -0
  128. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/map.py +0 -0
  129. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/movement.py +0 -0
  130. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/mur_mur_hash.py +0 -0
  131. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/periodic.py +0 -0
  132. {pymammotion-0.5.8 → pymammotion-0.5.10}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymammotion
3
- Version: 0.5.8
3
+ Version: 0.5.10
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -0,0 +1,12 @@
1
+ from dataclasses import dataclass, field
2
+
3
+ from mashumaro.mixins.orjson import DataClassORJSONMixin
4
+
5
+ from pymammotion.http.model.http import ErrorInfo
6
+
7
+
8
+ @dataclass
9
+ class DeviceErrors(DataClassORJSONMixin):
10
+ err_code_list: list[int] = field(default_factory=list)
11
+ err_code_list_time: list[int] | None = field(default_factory=list)
12
+ error_codes: dict[str, ErrorInfo] = field(default_factory=dict)
@@ -153,7 +153,15 @@ class DeviceLogProgressEventParams(GeneralParams):
153
153
  class ThingEventMessage(DataClassORJSONMixin):
154
154
  method: Literal["thing.events", "thing.properties"]
155
155
  id: str
156
- params: DeviceProtobufMsgEventParams | DeviceWarningEventParams | dict
156
+ params: (
157
+ DeviceProtobufMsgEventParams
158
+ | DeviceWarningEventParams
159
+ | DeviceNotificationEventParams
160
+ | DeviceLogProgressEventParams
161
+ | DeviceBizReqEventParams
162
+ | DeviceConfigurationRequestEvent
163
+ | dict
164
+ )
157
165
  version: Literal["1.0"]
158
166
 
159
167
  @classmethod
@@ -32,7 +32,12 @@ class MammotionHTTP:
32
32
  async with ClientSession(MAMMOTION_API_DOMAIN) as session:
33
33
  async with session.post(
34
34
  "/user-server/v1/code/record/export-data",
35
- headers=self._headers,
35
+ headers={
36
+ **self._headers,
37
+ "Authorization": f"Bearer {self.login_info.access_token}",
38
+ "Content-Type": "application/json",
39
+ "User-Agent": "okhttp/4.9.3",
40
+ },
36
41
  ) as resp:
37
42
  data = await resp.json()
38
43
  reader = csv.DictReader(data.get("data", "").split("\n"), delimiter=",")
@@ -5,12 +5,16 @@ from pymammotion.mammotion.commands.abstract_message import AbstractMessage
5
5
  from pymammotion.proto import (
6
6
  MUL_LANGUAGE,
7
7
  MUL_SEX,
8
+ GetHeadlamp,
9
+ LampCtrlSta,
10
+ LampManualCtrlSta,
8
11
  LubaMsg,
9
12
  MsgAttr,
10
13
  MsgCmdType,
11
14
  MsgDevice,
12
15
  MulSetAudio,
13
16
  MulSetWiper,
17
+ SetHeadlamp,
14
18
  SocMul,
15
19
  )
16
20
 
@@ -45,4 +49,33 @@ class MessageMedia(AbstractMessage, ABC):
45
49
  # 2
46
50
  return self.send_order_msg_media(SocMul(set_wiper=MulSetWiper(round=round_num)))
47
51
 
48
- # TODO add lamp methods
52
+ def get_car_light(self, ids: int):
53
+ return self.send_order_msg_media(SocMul(get_lamp=GetHeadlamp(get_ids=ids)))
54
+
55
+ def set_car_light(self, on_off: bool = False):
56
+ """Set mower light.
57
+ set whether light is on during the night during mowing
58
+ auto night on true, id=1121, power_ctrl=1
59
+ auto night off false, id=1121, power_ctrl=1
60
+ """
61
+
62
+ ctrl_state = LampCtrlSta.power_ctrl_on if on_off else LampCtrlSta.power_off
63
+ return self.send_order_msg_media(
64
+ SocMul(
65
+ set_lamp=SetHeadlamp(
66
+ set_ids=1121, lamp_power_ctrl=1, lamp_ctrl=ctrl_state, ctrl_lamp_bright=False, lamp_bright=0
67
+ )
68
+ )
69
+ )
70
+
71
+ def set_car_manual_light(self, manual_ctrl: bool = False):
72
+ """Set mower light.
73
+ set whether light is on manually
74
+ manual on: true, id=1125, power_ctrl=2
75
+ manual off: false, id=1127, power_ctrl=2
76
+ """
77
+ ids = 1125 if manual_ctrl else 1127
78
+ manual_light_ctrl = LampManualCtrlSta.manual_power_off if manual_ctrl else LampManualCtrlSta.manual_power_on
79
+ return self.send_order_msg_media(
80
+ SocMul(set_lamp=SetHeadlamp(set_ids=ids, lamp_power_ctrl=2, lamp_manual_ctrl=manual_light_ctrl))
81
+ )
@@ -179,14 +179,14 @@ class MammotionMQTT:
179
179
  future = asyncio.run_coroutine_threadsafe(self.on_message(topic, payload, iot_id), self.loop)
180
180
  asyncio.wrap_future(future, loop=self.loop)
181
181
 
182
- def _thing_on_connect(self, userdata, flags, reason_code, properties) -> None:
182
+ def _thing_on_connect(self, session_flag, rc, user_data) -> None:
183
183
  """Is called on thing connect."""
184
184
  self.is_connected = True
185
185
  if self.on_connected is not None:
186
186
  future = asyncio.run_coroutine_threadsafe(self.on_connected(), self.loop)
187
187
  asyncio.wrap_future(future, loop=self.loop)
188
188
 
189
- logger.debug("on_connect, session_flag:%d, rc:%d", flags, reason_code)
189
+ logger.debug("on_connect, session_flag:%d, rc:%d", session_flag, rc)
190
190
 
191
191
  # self._linkkit_client.subscribe_topic(f"/sys/{self._product_key}/{self._device_name}/#")
192
192
 
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.5.8"
7
+ version = "0.5.10"
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.5.8"
69
+ current_version = "0.5.10"
70
70
  version_pattern = "MAJOR.MINOR.PATCH"
71
71
  commit_message = "Bump version {old_version} -> {new_version}"
72
72
  commit = true
@@ -1,12 +0,0 @@
1
- from dataclasses import field, dataclass
2
-
3
- from mashumaro.mixins.orjson import DataClassORJSONMixin
4
-
5
- from pymammotion.http.model.http import ErrorInfo
6
-
7
-
8
- @dataclass(DataClassORJSONMixin)
9
- class DeviceErrors:
10
- err_code_list: list = field(default_factory=list)
11
- err_code_list_time: list | None = field(default_factory=list)
12
- error_codes: dict[str, ErrorInfo] = field(default_factory=dict)
File without changes
File without changes