pymammotion 0.2.91__py3-none-any.whl → 0.2.93__py3-none-any.whl
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.
- pymammotion/aliyun/cloud_gateway.py +6 -6
- pymammotion/data/model/report_info.py +28 -5
- pymammotion/event/event.py +1 -1
- pymammotion/mammotion/commands/messages/network.py +14 -19
- pymammotion/mammotion/commands/messages/system.py +48 -43
- pymammotion/mammotion/commands/messages/video.py +2 -2
- pymammotion/mammotion/devices/mammotion_cloud.py +6 -1
- pymammotion/utility/constant/device_constant.py +12 -1
- {pymammotion-0.2.91.dist-info → pymammotion-0.2.93.dist-info}/METADATA +1 -1
- {pymammotion-0.2.91.dist-info → pymammotion-0.2.93.dist-info}/RECORD +12 -12
- {pymammotion-0.2.91.dist-info → pymammotion-0.2.93.dist-info}/LICENSE +0 -0
- {pymammotion-0.2.91.dist-info → pymammotion-0.2.93.dist-info}/WHEEL +0 -0
@@ -704,25 +704,25 @@ class CloudIOTGateway:
|
|
704
704
|
self.mammotion_http = mammotion_http
|
705
705
|
|
706
706
|
@property
|
707
|
-
def region_response(self):
|
707
|
+
def region_response(self) -> RegionResponse:
|
708
708
|
return self._region_response
|
709
709
|
|
710
710
|
@property
|
711
|
-
def aep_response(self):
|
711
|
+
def aep_response(self) -> AepResponse:
|
712
712
|
return self._aep_response
|
713
713
|
|
714
714
|
@property
|
715
|
-
def session_by_authcode_response(self):
|
715
|
+
def session_by_authcode_response(self) -> SessionByAuthCodeResponse:
|
716
716
|
return self._session_by_authcode_response
|
717
717
|
|
718
718
|
@property
|
719
|
-
def client_id(self):
|
719
|
+
def client_id(self) -> str:
|
720
720
|
return self._client_id
|
721
721
|
|
722
722
|
@property
|
723
|
-
def login_by_oauth_response(self):
|
723
|
+
def login_by_oauth_response(self) -> LoginByOAuthResponse:
|
724
724
|
return self._login_by_oauth_response
|
725
725
|
|
726
726
|
@property
|
727
|
-
def connect_response(self):
|
727
|
+
def connect_response(self) -> ConnectResponse:
|
728
728
|
return self._connect_response
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from dataclasses import
|
1
|
+
from dataclasses import dataclass, field
|
2
2
|
|
3
3
|
from mashumaro.mixins.orjson import DataClassORJSONMixin
|
4
4
|
|
@@ -8,6 +8,7 @@ class ConnectData(DataClassORJSONMixin):
|
|
8
8
|
connect_type: int = 0
|
9
9
|
ble_rssi: int = 0
|
10
10
|
wifi_rssi: int = 0
|
11
|
+
used_net: str = ""
|
11
12
|
|
12
13
|
|
13
14
|
@dataclass
|
@@ -52,6 +53,24 @@ class LocationData(DataClassORJSONMixin):
|
|
52
53
|
bol_hash: str = ""
|
53
54
|
|
54
55
|
|
56
|
+
@dataclass
|
57
|
+
class Maintain(DataClassORJSONMixin):
|
58
|
+
mileage: int = 0
|
59
|
+
work_time: int = 0
|
60
|
+
bat_cycles: int = 0
|
61
|
+
|
62
|
+
|
63
|
+
@dataclass
|
64
|
+
class VisionInfo(DataClassORJSONMixin):
|
65
|
+
x: float = 0.0
|
66
|
+
y: float = 0.0
|
67
|
+
heading: float = 0.0
|
68
|
+
vio_state: int = 0
|
69
|
+
brightness: int = 1
|
70
|
+
detect_feature_num: int = 0
|
71
|
+
track_feature_num: int = 0
|
72
|
+
|
73
|
+
|
55
74
|
@dataclass
|
56
75
|
class WorkData(DataClassORJSONMixin):
|
57
76
|
path: int = 0
|
@@ -80,6 +99,8 @@ class WorkData(DataClassORJSONMixin):
|
|
80
99
|
class ReportData(DataClassORJSONMixin):
|
81
100
|
connect: ConnectData = field(default_factory=ConnectData)
|
82
101
|
dev: DeviceData = field(default_factory=DeviceData)
|
102
|
+
maintenance: Maintain = field(default_factory=Maintain)
|
103
|
+
vision_info: VisionInfo = field(default_factory=VisionInfo)
|
83
104
|
rtk: RTKData = field(default_factory=RTKData)
|
84
105
|
locations: list[LocationData] = field(default_factory=list)
|
85
106
|
work: WorkData = field(default_factory=WorkData)
|
@@ -89,8 +110,10 @@ class ReportData(DataClassORJSONMixin):
|
|
89
110
|
if data.get("locations") is not None:
|
90
111
|
locations = [LocationData.from_dict(loc) for loc in data.get("locations", [])]
|
91
112
|
|
92
|
-
self.connect = ConnectData.from_dict(data.get("connect",
|
93
|
-
self.dev = DeviceData.from_dict(data.get("dev",
|
94
|
-
self.rtk = RTKData.from_dict(data.get("rtk",
|
113
|
+
self.connect = ConnectData.from_dict(data.get("connect", self.connect.to_dict()))
|
114
|
+
self.dev = DeviceData.from_dict(data.get("dev", self.dev.to_dict()))
|
115
|
+
self.rtk = RTKData.from_dict(data.get("rtk", self.rtk.to_dict()))
|
116
|
+
self.maintenance = Maintain.from_dict(data.get("maintain", self.maintenance.to_dict()))
|
117
|
+
self.vision_info = VisionInfo.from_dict(data.get("vio_to_app_info", self.vision_info.to_dict()))
|
95
118
|
self.locations = locations
|
96
|
-
self.work = WorkData.from_dict(data.get("work",
|
119
|
+
self.work = WorkData.from_dict(data.get("work", self.work.to_dict()))
|
pymammotion/event/event.py
CHANGED
@@ -14,7 +14,7 @@ class Event:
|
|
14
14
|
self.__eventhandlers.remove(handler)
|
15
15
|
return self
|
16
16
|
|
17
|
-
async def __call__(self, *args, **kwargs) -> None:
|
17
|
+
async def __call__(self, *args: Any, **kwargs: Any) -> None:
|
18
18
|
await asyncio.gather(*[handler(*args, **kwargs) for handler in self.__eventhandlers])
|
19
19
|
|
20
20
|
|
@@ -1,16 +1,19 @@
|
|
1
1
|
# === sendOrderMsg_Net ===
|
2
2
|
import time
|
3
|
+
from abc import ABC
|
3
4
|
|
4
5
|
from pymammotion import logger
|
6
|
+
from pymammotion.mammotion.commands.abstract_message import AbstractMessage
|
5
7
|
from pymammotion.mammotion.commands.messages.navigation import MessageNavigation
|
6
8
|
from pymammotion.proto import dev_net_pb2, luba_msg_pb2
|
9
|
+
from pymammotion.proto.dev_net import DevNet
|
7
10
|
|
8
11
|
|
9
|
-
class MessageNetwork:
|
12
|
+
class MessageNetwork(AbstractMessage, ABC):
|
10
13
|
messageNavigation: MessageNavigation = MessageNavigation()
|
11
14
|
|
12
15
|
@staticmethod
|
13
|
-
def send_order_msg_net(build) -> bytes:
|
16
|
+
def send_order_msg_net(build: DevNet) -> bytes:
|
14
17
|
luba_msg = luba_msg_pb2.LubaMsg(
|
15
18
|
msgtype=luba_msg_pb2.MSG_CMD_TYPE_ESP,
|
16
19
|
sender=luba_msg_pb2.DEV_MOBILEAPP,
|
@@ -183,20 +186,12 @@ class MessageNetwork:
|
|
183
186
|
logger.debug("Send command - get memorized WiFi list upload command")
|
184
187
|
return self.send_order_msg_net(build)
|
185
188
|
|
186
|
-
def close_clear_connect_current_wifi(self, ssid: str, status: int
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
return self.send_order_msg_net(build)
|
196
|
-
self.close_clear_connect_current_wifi2(ssid, status)
|
197
|
-
|
198
|
-
# def close_clear_connect_current_wifi2(self, ssid: str, get_msg_cmd: int) -> None:
|
199
|
-
# data = {"ssid": ssid, "getMsgCmd": get_msg_cmd}
|
200
|
-
# self.messageNavigation.post_custom_data(
|
201
|
-
# ToDo: Fix this
|
202
|
-
# self.get_json_string(bleOrderCmd.close_clear_connect_current_wifi, data).encode())
|
189
|
+
def close_clear_connect_current_wifi(self, ssid: str, status: int) -> bytes:
|
190
|
+
build = dev_net_pb2.DevNet(
|
191
|
+
todev_ble_sync=1,
|
192
|
+
todev_Wifi_Configuration=dev_net_pb2.DrvWifiSet(configParam=status, Confssid=ssid),
|
193
|
+
)
|
194
|
+
logger.debug(
|
195
|
+
f"Send command - set network (disconnect, direct connect, forget, no operation reconnect) operation command (downlink ssid={ssid}, status={status})"
|
196
|
+
)
|
197
|
+
return self.send_order_msg_net(build)
|
@@ -36,7 +36,7 @@ class MessageSystem(AbstractMessage, ABC):
|
|
36
36
|
seqs=1,
|
37
37
|
version=1,
|
38
38
|
subtype=1,
|
39
|
-
timestamp=round(time.time() * 1000)
|
39
|
+
timestamp=round(time.time() * 1000),
|
40
40
|
)
|
41
41
|
|
42
42
|
return luba_msg.SerializeToString()
|
@@ -52,7 +52,7 @@ class MessageSystem(AbstractMessage, ABC):
|
|
52
52
|
seqs=1,
|
53
53
|
version=1,
|
54
54
|
subtype=1,
|
55
|
-
timestamp=round(time.time() * 1000)
|
55
|
+
timestamp=round(time.time() * 1000),
|
56
56
|
)
|
57
57
|
|
58
58
|
return luba_msg.SerializeToString()
|
@@ -251,7 +251,7 @@ class MessageSystem(AbstractMessage, ABC):
|
|
251
251
|
|
252
252
|
def get_report_cfg_stop(self, timeout: int = 10000, period: int = 1000, no_change_period: int = 1000):
|
253
253
|
# TODO use send_order_msg_sys_legacy
|
254
|
-
|
254
|
+
mctl_sys = MctlSys(
|
255
255
|
todev_report_cfg=ReportInfoCfg(
|
256
256
|
act=RptAct.RPT_STOP,
|
257
257
|
timeout=timeout,
|
@@ -261,30 +261,33 @@ class MessageSystem(AbstractMessage, ABC):
|
|
261
261
|
)
|
262
262
|
)
|
263
263
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
264
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_CONNECT)
|
265
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_RTK)
|
266
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_DEV_LOCAL)
|
267
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_WORK)
|
268
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_DEV_STA)
|
269
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_MAINTAIN)
|
270
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VISION_POINT)
|
271
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VIO)
|
272
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VISION_STATISTIC)
|
273
273
|
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
274
|
+
luba_msg = LubaMsg(
|
275
|
+
msgtype=MsgCmdType.MSG_CMD_TYPE_EMBED_SYS,
|
276
|
+
sender=MsgDevice.DEV_MOBILEAPP,
|
277
|
+
rcver=MsgDevice.DEV_MAINCTL,
|
278
|
+
msgattr=MsgAttr.MSG_ATTR_REQ,
|
279
|
+
seqs=1,
|
280
|
+
version=1,
|
281
|
+
subtype=1,
|
282
|
+
sys=mctl_sys,
|
283
|
+
timestamp=round(time.time() * 1000),
|
284
|
+
)
|
285
|
+
|
286
|
+
return luba_msg.SerializeToString()
|
284
287
|
|
285
288
|
def get_report_cfg(self, timeout: int = 10000, period: int = 1000, no_change_period: int = 2000):
|
286
289
|
# TODO use send_order_msg_sys_legacy
|
287
|
-
|
290
|
+
mctl_sys = MctlSys(
|
288
291
|
todev_report_cfg=ReportInfoCfg(
|
289
292
|
act=RptAct.RPT_START,
|
290
293
|
timeout=timeout,
|
@@ -294,24 +297,26 @@ class MessageSystem(AbstractMessage, ABC):
|
|
294
297
|
)
|
295
298
|
)
|
296
299
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
300
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_CONNECT)
|
301
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_RTK)
|
302
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_DEV_LOCAL)
|
303
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_WORK)
|
304
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_DEV_STA)
|
305
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_MAINTAIN)
|
306
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VISION_POINT)
|
307
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VIO)
|
308
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_VISION_STATISTIC)
|
309
|
+
mctl_sys.todev_report_cfg.sub.append(RptInfoType.RIT_BASESTATION_INFO)
|
307
310
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
311
|
+
luba_msg = LubaMsg(
|
312
|
+
msgtype=MsgCmdType.MSG_CMD_TYPE_EMBED_SYS,
|
313
|
+
sender=MsgDevice.DEV_MOBILEAPP,
|
314
|
+
rcver=MsgDevice.DEV_MAINCTL,
|
315
|
+
msgattr=MsgAttr.MSG_ATTR_REQ,
|
316
|
+
seqs=1,
|
317
|
+
version=1,
|
318
|
+
subtype=1,
|
319
|
+
sys=mctl_sys,
|
320
|
+
timestamp=round(time.time() * 1000),
|
321
|
+
)
|
322
|
+
return luba_msg.SerializeToString()
|
@@ -4,7 +4,7 @@ from abc import ABC
|
|
4
4
|
|
5
5
|
from pymammotion.mammotion.commands.abstract_message import AbstractMessage
|
6
6
|
from pymammotion.proto import luba_msg_pb2, luba_mul_pb2
|
7
|
-
from pymammotion.proto.luba_msg import MsgCmdType, MsgDevice
|
7
|
+
from pymammotion.proto.luba_msg import MsgAttr, MsgCmdType, MsgDevice
|
8
8
|
from pymammotion.utility.device_type import DeviceType
|
9
9
|
|
10
10
|
|
@@ -19,7 +19,7 @@ class MessageVideo(AbstractMessage, ABC):
|
|
19
19
|
seqs=1,
|
20
20
|
version=1,
|
21
21
|
subtype=1,
|
22
|
-
timestamp=round(time.time() * 1000)
|
22
|
+
timestamp=round(time.time() * 1000),
|
23
23
|
)
|
24
24
|
|
25
25
|
return luba_msg.SerializeToString()
|
@@ -244,7 +244,12 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
|
|
244
244
|
command_bytes = getattr(self._commands, key)(**kwargs)
|
245
245
|
await self._mqtt.command_queue.put((self.iot_id, key, command_bytes, future))
|
246
246
|
# Wait for the future to be resolved
|
247
|
-
|
247
|
+
try:
|
248
|
+
return await future
|
249
|
+
except asyncio.CancelledError:
|
250
|
+
"""Try again once."""
|
251
|
+
future = asyncio.Future()
|
252
|
+
await self._mqtt.command_queue.put((self.iot_id, key, command_bytes, future))
|
248
253
|
|
249
254
|
def _extract_message_id(self, payload: dict) -> str:
|
250
255
|
"""Extract the message ID from the payload."""
|
@@ -212,7 +212,18 @@ class WorkMode:
|
|
212
212
|
MODE_WORKING = 13
|
213
213
|
|
214
214
|
|
215
|
-
def
|
215
|
+
def device_connection(value: int, mnet_type: str) -> str:
|
216
|
+
"""Return string representation of device connection."""
|
217
|
+
if value == 1:
|
218
|
+
return "BLE"
|
219
|
+
|
220
|
+
if mnet_type == "NET_USED_TYPE_WIFI":
|
221
|
+
return "WIFI"
|
222
|
+
|
223
|
+
return "3G/4G"
|
224
|
+
|
225
|
+
|
226
|
+
def device_mode(value: int) -> str:
|
216
227
|
"""Return the mode corresponding to the given value.
|
217
228
|
|
218
229
|
This function takes a value and returns the corresponding mode from a
|
@@ -1,6 +1,6 @@
|
|
1
1
|
pymammotion/__init__.py,sha256=jHCQrpJaG1jAoID9T4RT3g4JsZc0JpJqIcqjnA7cXd0,1605
|
2
2
|
pymammotion/aliyun/__init__.py,sha256=T1lkX7TRYiL4nqYanG4l4MImV-SlavSbuooC-W-uUGw,29
|
3
|
-
pymammotion/aliyun/cloud_gateway.py,sha256=
|
3
|
+
pymammotion/aliyun/cloud_gateway.py,sha256=NDrDFEI86I-fv2wJL2PWsYXbty4SrltGBRh3_Ykpw5o,25769
|
4
4
|
pymammotion/aliyun/cloud_service.py,sha256=px7dUKow5Z7VyebjYzuKkzkm77XbUXYiFiYO_2e-UQ0,2207
|
5
5
|
pymammotion/aliyun/model/aep_response.py,sha256=8f6GIP58ve8gd6AL3HBoXxsy0n2q4ygWvjELGnoOnVc,452
|
6
6
|
pymammotion/aliyun/model/connect_response.py,sha256=Yz-fEbDzgGPTo5Of2oAjmFkSv08T7ze80pQU4k-gKIU,824
|
@@ -35,14 +35,14 @@ pymammotion/data/model/mowing_modes.py,sha256=5TrHSijUyPtIDWpNtgzx_vFQukRJWRz4gI
|
|
35
35
|
pymammotion/data/model/plan.py,sha256=mcadkSL7fQXy0iJ0q786I3GEQY4i6kmQXfW6Ri69lcQ,2906
|
36
36
|
pymammotion/data/model/rapid_state.py,sha256=mIdhAG_LZXpVcybxqTLgLXkNOmVmDTn04B9PGIDA8Ls,1251
|
37
37
|
pymammotion/data/model/region_data.py,sha256=OTV15vRyn9JORXsQPjWMNF1ZujuNhsOKl25KeqwMObA,3007
|
38
|
-
pymammotion/data/model/report_info.py,sha256=
|
38
|
+
pymammotion/data/model/report_info.py,sha256=SywfbgHAOCDkQh1lj2LOI7NC3x1YFdgC2DA4vFrViEk,3270
|
39
39
|
pymammotion/data/mqtt/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
40
40
|
pymammotion/data/mqtt/event.py,sha256=pEOQcjnv5XKosSPD8UmVAgCAaI8vLuIhGECZcU4xKjk,5055
|
41
41
|
pymammotion/data/mqtt/properties.py,sha256=kvphcjrDuJHuX8Az98-wKeFv_rSmu2Fz9YKLGodGSj0,3759
|
42
42
|
pymammotion/data/mqtt/status.py,sha256=zqnlo-MzejEQZszl0i0Wucoc3E76x6UtI9JLxoBnu54,1067
|
43
43
|
pymammotion/data/state_manager.py,sha256=vtBT28-5DY58hJMi_kqOUKnOq6rJ4fx1zX8yU7N96A8,5357
|
44
44
|
pymammotion/event/__init__.py,sha256=mgATR6vPHACNQ-0zH5fi7NdzeTCDV1CZyaWPmtUusi8,115
|
45
|
-
pymammotion/event/event.py,sha256=
|
45
|
+
pymammotion/event/event.py,sha256=bj2RirSIRyBs0QvkcrOtwZWUX_8F3m1sySuHVyKmZLs,2143
|
46
46
|
pymammotion/http/_init_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
47
|
pymammotion/http/http.py,sha256=9TnVah-R8nkjlb6oCMk78IZ0Y-2iAcMyIdjcQ54GEPk,3562
|
48
48
|
pymammotion/http/model/http.py,sha256=_hHqe9IfKDukUYKQDrZb_Tt_9rd5BNN1WKsaGIjsexM,1876
|
@@ -54,17 +54,17 @@ pymammotion/mammotion/commands/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
54
54
|
pymammotion/mammotion/commands/messages/driver.py,sha256=DlOAC_yi1ycO5hKr5rfCpLmrqao6Mb6Fv1JWwMISnKE,3766
|
55
55
|
pymammotion/mammotion/commands/messages/media.py,sha256=l-m4l2Vp1ZOHPHyJTceuLaLvdgHOEfmykkbDncCDUI4,1359
|
56
56
|
pymammotion/mammotion/commands/messages/navigation.py,sha256=Z6RQK-pMh8o7_K_1yTENx3lkNBFQTU_ojunolSre0oM,23241
|
57
|
-
pymammotion/mammotion/commands/messages/network.py,sha256=
|
57
|
+
pymammotion/mammotion/commands/messages/network.py,sha256=yJyFHGZgDgek8TMMBHGv261cKt4pLno1KK_04B7Jgn0,7698
|
58
58
|
pymammotion/mammotion/commands/messages/ota.py,sha256=g937HT_-OQXV6A3zUiZ53b45cOX6y-rzs5m-4b0IcTk,1473
|
59
|
-
pymammotion/mammotion/commands/messages/system.py,sha256=
|
60
|
-
pymammotion/mammotion/commands/messages/video.py,sha256
|
59
|
+
pymammotion/mammotion/commands/messages/system.py,sha256=FRDwdHBc04jfe-D830DjYtg2DsIxW2cmac1vAeosEZI,13245
|
60
|
+
pymammotion/mammotion/commands/messages/video.py,sha256=xili9khz4Op5NwjXfvIkeRYzQlQPIf8o8bnoYx-Ylpw,1319
|
61
61
|
pymammotion/mammotion/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
62
|
pymammotion/mammotion/control/joystick.py,sha256=QfBVxM_gxpWsZAGO90whtgxCI2tIZ3TTad9wHIPsU9s,5640
|
63
63
|
pymammotion/mammotion/devices/__init__.py,sha256=f2qQFPgLGmV85W2hSlMUh5BYuht9o_Ar_JEAAMD4fsE,102
|
64
64
|
pymammotion/mammotion/devices/base.py,sha256=o9JgZ9WZGxqFjvuLR7eF0crQ03JOiHumP0sRSr1dRxY,10030
|
65
65
|
pymammotion/mammotion/devices/mammotion.py,sha256=052YM0RiPwLHuKN1DRtpaeECx6SA4feMerDrUkx_CSE,12443
|
66
66
|
pymammotion/mammotion/devices/mammotion_bluetooth.py,sha256=BAEc8Jz6K72x7nlSq9Db0O6P7KzgGdPd-7qzUtB7bIg,18942
|
67
|
-
pymammotion/mammotion/devices/mammotion_cloud.py,sha256=
|
67
|
+
pymammotion/mammotion/devices/mammotion_cloud.py,sha256=hXQ-x45jGc8aUGmyEWvHh7YqJ2QZNNfaBwrPaLvwOX4,12841
|
68
68
|
pymammotion/mqtt/__init__.py,sha256=Ocs5e-HLJvTuDpVXyECEsWIvwsUaxzj7lZ9mSYutNDY,105
|
69
69
|
pymammotion/mqtt/mammotion_future.py,sha256=_OWqKOlUGl2yT1xOsXFQYpGd-1zQ63OxqXgy7KRQgYc,710
|
70
70
|
pymammotion/mqtt/mammotion_mqtt.py,sha256=LaySave_hf0gU3crUTLqzpdQtxIwK8vu5DM8F8fbU2Y,8748
|
@@ -111,7 +111,7 @@ pymammotion/proto/mctrl_sys_pb2.py,sha256=DYemb514mlC7c27t-k1YqqBif0xxhLmnIWk8rX
|
|
111
111
|
pymammotion/proto/mctrl_sys_pb2.pyi,sha256=Dj_1UM86kZ5MfcVyNC76Z0gKrfl5YFsVWP2b-bKoZvk,38912
|
112
112
|
pymammotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
113
113
|
pymammotion/utility/constant/__init__.py,sha256=tcY0LDeD-qDDHx2LKt55KOyv9ZI0UfCNM6fknLCmm8s,110
|
114
|
-
pymammotion/utility/constant/device_constant.py,sha256=
|
114
|
+
pymammotion/utility/constant/device_constant.py,sha256=jVlqlhnl86ZZh4D8FBz9zyc0VQRy1wNKFLQ5PrNosOw,7374
|
115
115
|
pymammotion/utility/conversions.py,sha256=v3YICy0zZwwBBzrUZgabI7GRfiDBnkiAX2qdtk3NxOY,89
|
116
116
|
pymammotion/utility/datatype_converter.py,sha256=SPM_HuaaD_XOawlqEnA8qlRRZXGba3WjA8kGOZgeBlQ,4284
|
117
117
|
pymammotion/utility/device_type.py,sha256=xOgfIhOkzgcAtoKtlhlB1q8FpiKe1rVVV5BvN7K7zYc,9433
|
@@ -119,7 +119,7 @@ pymammotion/utility/map.py,sha256=GYscVMg2cX3IPlNpCBNHDW0S55yS1WGRf1iHnNZ7TfQ,22
|
|
119
119
|
pymammotion/utility/movement.py,sha256=N75oAoAgFydqoaOedYIxGUHmuTCtPzAOtb-d_29tpfI,615
|
120
120
|
pymammotion/utility/periodic.py,sha256=MbeSb9cfhxzYmdT_RiE0dZe3H9IfbQW_zSqhmSX2RUc,3321
|
121
121
|
pymammotion/utility/rocker_util.py,sha256=6tX7sS87qoQC_tsxbx3NLL-HgS08wtzXiZkhDiz7uo0,7179
|
122
|
-
pymammotion-0.2.
|
123
|
-
pymammotion-0.2.
|
124
|
-
pymammotion-0.2.
|
125
|
-
pymammotion-0.2.
|
122
|
+
pymammotion-0.2.93.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
123
|
+
pymammotion-0.2.93.dist-info/METADATA,sha256=7Y6HURQ3N26YLEOmGlZ3fF7_mSGjYmfrzXTCdyc1W70,3896
|
124
|
+
pymammotion-0.2.93.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
125
|
+
pymammotion-0.2.93.dist-info/RECORD,,
|
File without changes
|
File without changes
|