pymammotion 0.4.47__tar.gz → 0.4.49__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.
- {pymammotion-0.4.47 → pymammotion-0.4.49}/PKG-INFO +1 -1
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/cloud_gateway.py +1 -1
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/device.py +2 -1
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/device_info.py +10 -4
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/state_manager.py +11 -3
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/network.py +0 -5
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/mammotion.py +16 -15
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pyproject.toml +2 -2
- {pymammotion-0.4.47 → pymammotion-0.4.49}/LICENSE +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/README.md +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/client.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/aep_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/connect_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/regions_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/regions.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/tea/core.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/tmp_constant.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/ble.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/ble_message.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/const.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/data/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/data/convert.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/data/framectrldata.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/data/notifydata.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/model/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/const.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/account.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/device_config.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/device_limits.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/enums.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/excute_boarder_params.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/execute_boarder.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/generate_route_information.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/hash_list.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/location.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/mowing_modes.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/rapid_state.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/raw_data.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/region_data.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/report_info.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/work.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/mqtt/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/mqtt/event.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/mqtt/properties.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/mqtt/status.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/event/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/event/event.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/_init_.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/encryption.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/http.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/model/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/model/camera_stream.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/http/model/http.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/abstract_message.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/driver.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/media.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/ota.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/system.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/video.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/control/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/control/joystick.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/base.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/linkkit/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/linkkit/h2client.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/mammotion_future.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/basestation.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/basestation_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/basestation_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/common.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/common_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/common_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/dev_net.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/dev_net_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/dev_net_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_msg.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_msg_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_mul.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_mul_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_driver.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_nav.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_ota.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_pept.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_sys.proto +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/py.typed +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/constant/__init__.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/constant/device_constant.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/conversions.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/datatype_converter.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/device_config.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/device_type.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/map.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/movement.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/mur_mur_hash.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/periodic.py +0 -0
- {pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/utility/rocker_util.py +0 -0
@@ -732,7 +732,7 @@ class CloudIOTGateway:
|
|
732
732
|
logger.debug(iot_id)
|
733
733
|
|
734
734
|
response_body_str = response.body.decode("utf-8")
|
735
|
-
response_body_dict = json.loads(response_body_str)
|
735
|
+
response_body_dict = json.loads(response_body_str) if response_body_str is not None else {}
|
736
736
|
|
737
737
|
if int(response_body_dict.get("code")) != 200:
|
738
738
|
logger.error(
|
@@ -6,7 +6,7 @@ import betterproto
|
|
6
6
|
from mashumaro.mixins.orjson import DataClassORJSONMixin
|
7
7
|
|
8
8
|
from pymammotion.data.model import HashList, RapidState
|
9
|
-
from pymammotion.data.model.device_info import DeviceFirmwares, MowerInfo
|
9
|
+
from pymammotion.data.model.device_info import DeviceFirmwares, DeviceNonWorkingHours, MowerInfo
|
10
10
|
from pymammotion.data.model.location import Location
|
11
11
|
from pymammotion.data.model.report_info import ReportData
|
12
12
|
from pymammotion.data.model.work import CurrentTaskSettings
|
@@ -38,6 +38,7 @@ class MowingDevice(DataClassORJSONMixin):
|
|
38
38
|
err_code_list: list = field(default_factory=list)
|
39
39
|
err_code_list_time: list | None = field(default_factory=list)
|
40
40
|
error_codes: dict[str, ErrorInfo] = field(default_factory=dict)
|
41
|
+
non_work_hours: DeviceNonWorkingHours = field(default_factory=DeviceNonWorkingHours)
|
41
42
|
|
42
43
|
def buffer(self, buffer_list: SystemUpdateBufMsg) -> None:
|
43
44
|
"""Update the device based on which buffer we are reading from."""
|
@@ -2,8 +2,6 @@ from dataclasses import dataclass, field
|
|
2
2
|
|
3
3
|
from mashumaro.mixins.orjson import DataClassORJSONMixin
|
4
4
|
|
5
|
-
from pymammotion.data.model.mowing_modes import TraversalMode, TurningMode
|
6
|
-
|
7
5
|
|
8
6
|
@dataclass
|
9
7
|
class SideLight(DataClassORJSONMixin):
|
@@ -16,12 +14,18 @@ class SideLight(DataClassORJSONMixin):
|
|
16
14
|
action: int = 0
|
17
15
|
|
18
16
|
|
17
|
+
@dataclass
|
18
|
+
class DeviceNonWorkingHours(DataClassORJSONMixin):
|
19
|
+
start_time: str = ""
|
20
|
+
end_time: str = ""
|
21
|
+
|
22
|
+
|
19
23
|
@dataclass
|
20
24
|
class MowerInfo(DataClassORJSONMixin):
|
21
25
|
blade_status: bool = False
|
22
26
|
rain_detection: bool = False
|
23
|
-
traversal_mode:
|
24
|
-
turning_mode:
|
27
|
+
traversal_mode: int = 0
|
28
|
+
turning_mode: int = 0
|
25
29
|
side_led: SideLight = field(default_factory=SideLight)
|
26
30
|
collector_installation_status: bool = False
|
27
31
|
model: str = ""
|
@@ -29,6 +33,8 @@ class MowerInfo(DataClassORJSONMixin):
|
|
29
33
|
product_key: str = ""
|
30
34
|
model_id: str = ""
|
31
35
|
sub_model_id: str = ""
|
36
|
+
ble_mac: str = ""
|
37
|
+
wifi_mac: str = ""
|
32
38
|
|
33
39
|
|
34
40
|
@dataclass
|
@@ -11,7 +11,6 @@ from pymammotion.data.model.device import MowingDevice
|
|
11
11
|
from pymammotion.data.model.device_info import SideLight
|
12
12
|
from pymammotion.data.model.enums import ConnectionPreference
|
13
13
|
from pymammotion.data.model.hash_list import AreaHashNameList, NavGetCommData, NavGetHashListData, Plan, SvgMessage
|
14
|
-
from pymammotion.data.model.mowing_modes import TraversalMode, TurningMode
|
15
14
|
from pymammotion.data.model.work import CurrentTaskSettings
|
16
15
|
from pymammotion.data.mqtt.properties import ThingPropertiesMessage
|
17
16
|
from pymammotion.data.mqtt.status import ThingStatusMessage
|
@@ -21,12 +20,14 @@ from pymammotion.proto import (
|
|
21
20
|
DeviceProductTypeInfoT,
|
22
21
|
DrvDevInfoResp,
|
23
22
|
DrvDevInfoResult,
|
23
|
+
GetNetworkInfoRsp,
|
24
24
|
LubaMsg,
|
25
25
|
NavGetCommDataAck,
|
26
26
|
NavGetHashListAck,
|
27
27
|
NavPlanJobSet,
|
28
28
|
NavReqCoverPath,
|
29
29
|
NavSysParamMsg,
|
30
|
+
NavUnableTimeSet,
|
30
31
|
SvgMessageAckT,
|
31
32
|
TimeCtrlLight,
|
32
33
|
WifiIotStatusReport,
|
@@ -181,9 +182,13 @@ class StateManager:
|
|
181
182
|
case 3:
|
182
183
|
self._device.mower_state.rain_detection = bool(settings.context)
|
183
184
|
case 6:
|
184
|
-
self._device.mower_state.turning_mode =
|
185
|
+
self._device.mower_state.turning_mode = settings.context
|
185
186
|
case 7:
|
186
|
-
self._device.mower_state.traversal_mode =
|
187
|
+
self._device.mower_state.traversal_mode = settings.context
|
188
|
+
case "todev_unable_time_set":
|
189
|
+
nav_non_work_time: NavUnableTimeSet = nav_msg[1]
|
190
|
+
self._device.non_work_hours.start_time = nav_non_work_time.unable_start_time
|
191
|
+
self._device.non_work_hours.end_time = nav_non_work_time.unable_end_time
|
187
192
|
|
188
193
|
def _update_sys_data(self, message) -> None:
|
189
194
|
"""Update system."""
|
@@ -226,6 +231,9 @@ class StateManager:
|
|
226
231
|
if resp.res == DrvDevInfoResult.DRV_RESULT_SUC and resp.id == 1 and resp.type == 6:
|
227
232
|
self._device.mower_state.swversion = resp.info
|
228
233
|
self._device.device_firmwares.device_version = resp.info
|
234
|
+
case "toapp_networkinfo_rsp":
|
235
|
+
get_network_info_resp: GetNetworkInfoRsp = net_msg[1]
|
236
|
+
self._device.mower_state.wifi_mac = get_network_info_resp.wifi_mac
|
229
237
|
|
230
238
|
def _update_mul_data(self, message) -> None:
|
231
239
|
pass
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/network.py
RENAMED
@@ -192,11 +192,6 @@ class MessageNetwork(AbstractMessage, ABC):
|
|
192
192
|
logger.debug("Send command - get Wifi connection information")
|
193
193
|
return self.send_order_msg_net(build)
|
194
194
|
|
195
|
-
def wifi_connectinfo_update2(self) -> None:
|
196
|
-
hash_map = {"getMsgCmd": 1}
|
197
|
-
# self.post_custom_data(self.get_json_string(
|
198
|
-
# 68, hash_map)) # TODO: Fix this
|
199
|
-
|
200
195
|
def get_record_wifi_list(self) -> bytes:
|
201
196
|
build = DevNet(todev_ble_sync=1, todev_wifi_list_upload=DrvWifiList())
|
202
197
|
logger.debug("Send command - get memorized WiFi list upload command")
|
@@ -133,21 +133,22 @@ class MammotionDeviceManager:
|
|
133
133
|
return self.devices.get(mammotion_device_name)
|
134
134
|
|
135
135
|
async def remove_device(self, name: str) -> None:
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
136
|
+
if self.devices.get(name):
|
137
|
+
device_for_removal = self.devices.pop(name)
|
138
|
+
loop = asyncio.get_running_loop()
|
139
|
+
if device_for_removal.has_cloud():
|
140
|
+
should_disconnect = {
|
141
|
+
device
|
142
|
+
for key, device in self.devices.items()
|
143
|
+
if device.cloud() is not None and device.cloud().mqtt == device_for_removal.cloud().mqtt
|
144
|
+
}
|
145
|
+
if len(should_disconnect) == 0:
|
146
|
+
await loop.run_in_executor(None, device_for_removal.cloud().mqtt.disconnect)
|
147
|
+
await device_for_removal.cloud().stop()
|
148
|
+
if device_for_removal.has_ble():
|
149
|
+
await device_for_removal.ble().stop()
|
150
|
+
|
151
|
+
del device_for_removal
|
151
152
|
|
152
153
|
|
153
154
|
class Mammotion:
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "pymammotion"
|
7
|
-
version = "0.4.
|
7
|
+
version = "0.4.49"
|
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.
|
69
|
+
current_version = "0.4.49"
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/dev_by_account_response.py
RENAMED
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/login_by_oauth_response.py
RENAMED
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/aliyun/model/session_by_authcode_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/data/model/generate_route_information.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/abstract_message.py
RENAMED
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/mammotion_command.py
RENAMED
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/commands/messages/navigation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pymammotion-0.4.47 → pymammotion-0.4.49}/pymammotion/mammotion/devices/mammotion_bluetooth.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|