pymammotion 0.5.5__tar.gz → 0.5.6__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 (130) hide show
  1. {pymammotion-0.5.5 → pymammotion-0.5.6}/PKG-INFO +1 -1
  2. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/device.py +5 -4
  3. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/state_manager.py +11 -0
  4. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/devices/mammotion_cloud.py +11 -3
  5. {pymammotion-0.5.5 → pymammotion-0.5.6}/pyproject.toml +2 -2
  6. {pymammotion-0.5.5 → pymammotion-0.5.6}/LICENSE +0 -0
  7. {pymammotion-0.5.5 → pymammotion-0.5.6}/README.md +0 -0
  8. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/__init__.py +0 -0
  9. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/__init__.py +0 -0
  10. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/client.py +0 -0
  11. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/cloud_gateway.py +0 -0
  12. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/aep_response.py +0 -0
  13. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/connect_response.py +0 -0
  14. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  15. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  16. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/regions_response.py +0 -0
  17. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  18. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/regions.py +0 -0
  19. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/tea/core.py +0 -0
  20. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/aliyun/tmp_constant.py +0 -0
  21. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/__init__.py +0 -0
  22. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/ble.py +0 -0
  23. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/ble_message.py +0 -0
  24. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/const.py +0 -0
  25. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/data/__init__.py +0 -0
  26. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/data/convert.py +0 -0
  27. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  28. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/data/notifydata.py +0 -0
  29. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/model/__init__.py +0 -0
  30. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  31. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/const.py +0 -0
  32. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/__init__.py +0 -0
  33. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/__init__.py +0 -0
  34. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/account.py +0 -0
  35. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/device_config.py +0 -0
  36. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/device_info.py +0 -0
  37. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/device_limits.py +0 -0
  38. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/enums.py +0 -0
  39. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/excute_boarder_params.py +0 -0
  40. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/execute_boarder.py +0 -0
  41. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/generate_route_information.py +0 -0
  42. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/hash_list.py +0 -0
  43. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/location.py +0 -0
  44. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/mowing_modes.py +0 -0
  45. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/rapid_state.py +0 -0
  46. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/raw_data.py +0 -0
  47. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/region_data.py +0 -0
  48. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/report_info.py +0 -0
  49. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/model/work.py +0 -0
  50. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/mqtt/__init__.py +0 -0
  51. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/mqtt/event.py +0 -0
  52. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/mqtt/properties.py +0 -0
  53. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/data/mqtt/status.py +0 -0
  54. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/event/__init__.py +0 -0
  55. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/event/event.py +0 -0
  56. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/__init__.py +0 -0
  57. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/_init_.py +0 -0
  58. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/encryption.py +0 -0
  59. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/http.py +0 -0
  60. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/model/__init__.py +0 -0
  61. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/model/camera_stream.py +0 -0
  62. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/model/http.py +0 -0
  63. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/http/model/response_factory.py +0 -0
  64. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/__init__.py +0 -0
  65. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/__init__.py +0 -0
  66. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  67. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  68. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  69. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  70. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/media.py +0 -0
  71. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  72. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/network.py +0 -0
  73. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  74. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/system.py +0 -0
  75. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/commands/messages/video.py +0 -0
  76. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/control/__init__.py +0 -0
  77. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/control/joystick.py +0 -0
  78. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/devices/__init__.py +0 -0
  79. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/devices/base.py +0 -0
  80. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/devices/mammotion.py +0 -0
  81. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  82. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/__init__.py +0 -0
  83. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  84. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  85. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  86. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/mammotion_future.py +0 -0
  87. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  88. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/__init__.py +0 -0
  89. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/basestation.proto +0 -0
  90. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/basestation_pb2.py +0 -0
  91. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/basestation_pb2.pyi +0 -0
  92. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/common.proto +0 -0
  93. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/common_pb2.py +0 -0
  94. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/common_pb2.pyi +0 -0
  95. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/dev_net.proto +0 -0
  96. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/dev_net_pb2.py +0 -0
  97. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  98. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_msg.proto +0 -0
  99. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_msg_pb2.py +0 -0
  100. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  101. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_mul.proto +0 -0
  102. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_mul_pb2.py +0 -0
  103. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  104. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_driver.proto +0 -0
  105. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  106. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  107. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_nav.proto +0 -0
  108. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  109. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  110. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_ota.proto +0 -0
  111. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  112. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  113. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_pept.proto +0 -0
  114. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  115. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  116. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_sys.proto +0 -0
  117. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  118. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  119. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/py.typed +0 -0
  120. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/constant/__init__.py +0 -0
  121. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/constant/device_constant.py +0 -0
  122. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/conversions.py +0 -0
  123. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/datatype_converter.py +0 -0
  124. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/device_config.py +0 -0
  125. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/device_type.py +0 -0
  126. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/map.py +0 -0
  127. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/movement.py +0 -0
  128. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/mur_mur_hash.py +0 -0
  129. {pymammotion-0.5.5 → pymammotion-0.5.6}/pymammotion/utility/periodic.py +0 -0
  130. {pymammotion-0.5.5 → pymammotion-0.5.6}/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.5
3
+ Version: 0.5.6
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -7,12 +7,14 @@ from mashumaro.mixins.orjson import DataClassORJSONMixin
7
7
 
8
8
  from pymammotion.data.model import HashList, RapidState
9
9
  from pymammotion.data.model.device_info import DeviceFirmwares, DeviceNonWorkingHours, MowerInfo
10
+ from pymammotion.data.model.errors import DeviceErrors
10
11
  from pymammotion.data.model.location import Location
11
12
  from pymammotion.data.model.report_info import ReportData
12
13
  from pymammotion.data.model.work import CurrentTaskSettings
14
+ from pymammotion.data.mqtt.event import ThingEventMessage
13
15
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
14
16
  from pymammotion.data.mqtt.status import ThingStatusMessage
15
- from pymammotion.http.model.http import CheckDeviceVersion, ErrorInfo
17
+ from pymammotion.http.model.http import CheckDeviceVersion
16
18
  from pymammotion.proto import DeviceFwInfo, MowToAppInfoT, ReportInfoData, SystemRapidStateTunnelMsg, SystemUpdateBufMsg
17
19
  from pymammotion.utility.constant import WorkMode
18
20
  from pymammotion.utility.conversions import parse_double
@@ -30,15 +32,14 @@ class MowingDevice(DataClassORJSONMixin):
30
32
  mower_state: MowerInfo = field(default_factory=MowerInfo)
31
33
  mqtt_properties: ThingPropertiesMessage | None = None
32
34
  status_properties: ThingStatusMessage | None = None
35
+ device_event: ThingEventMessage | None = None
33
36
  map: HashList = field(default_factory=HashList)
34
37
  work: CurrentTaskSettings = field(default_factory=CurrentTaskSettings)
35
38
  location: Location = field(default_factory=Location)
36
39
  mowing_state: RapidState = field(default_factory=RapidState)
37
40
  report_data: ReportData = field(default_factory=ReportData)
38
41
  device_firmwares: DeviceFirmwares = field(default_factory=DeviceFirmwares)
39
- err_code_list: list = field(default_factory=list)
40
- err_code_list_time: list | None = field(default_factory=list)
41
- error_codes: dict[str, ErrorInfo] = field(default_factory=dict)
42
+ errors: DeviceErrors = field(default_factory=DeviceErrors)
42
43
  non_work_hours: DeviceNonWorkingHours = field(default_factory=DeviceNonWorkingHours)
43
44
 
44
45
  def buffer(self, buffer_list: SystemUpdateBufMsg) -> None:
@@ -12,6 +12,7 @@ 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
14
  from pymammotion.data.model.work import CurrentTaskSettings
15
+ from pymammotion.data.mqtt.event import ThingEventMessage
15
16
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
16
17
  from pymammotion.data.mqtt.status import ThingStatusMessage
17
18
  from pymammotion.event.event import DataEvent
@@ -62,6 +63,7 @@ class StateManager:
62
63
 
63
64
  self.properties_callback = DataEvent()
64
65
  self.status_callback = DataEvent()
66
+ self.device_event_callback = DataEvent()
65
67
 
66
68
  def get_device(self) -> MowingDevice:
67
69
  """Get device."""
@@ -84,6 +86,10 @@ class StateManager:
84
86
  self._device.mower_state.product_key = thing_status.params.productKey
85
87
  await self.on_status_callback(thing_status)
86
88
 
89
+ async def device_event(self, device_event: ThingEventMessage) -> None:
90
+ self._device.mqtt_device_event = device_event
91
+ await self.on_device_event_callback(device_event)
92
+
87
93
  @property
88
94
  def online(self) -> bool:
89
95
  return self._device.online
@@ -114,6 +120,11 @@ class StateManager:
114
120
  if self.status_callback:
115
121
  await self.status_callback.data_event(thing_status)
116
122
 
123
+ async def on_device_event_callback(self, device_event: ThingEventMessage) -> None:
124
+ """Execute the status callback if it is set."""
125
+ if self.device_event_callback:
126
+ await self.device_event_callback.data_event(device_event)
127
+
117
128
  async def get_commondata_ack_callback(self, comm_data: NavGetCommDataAck | SvgMessageAckT) -> None:
118
129
  """Asynchronously calls the appropriate callback based on available handlers."""
119
130
  if self.cloud_get_commondata_ack_callback:
@@ -31,6 +31,7 @@ class MammotionCloud:
31
31
  """Per account MQTT cloud."""
32
32
 
33
33
  def __init__(self, mqtt_client: MammotionMQTT, cloud_client: CloudIOTGateway) -> None:
34
+ """Initialize MammotionCloud."""
34
35
  self.cloud_client = cloud_client
35
36
  self.loop = asyncio.get_event_loop()
36
37
  self.is_ready = False
@@ -39,6 +40,7 @@ class MammotionCloud:
39
40
  self.mqtt_message_event = DataEvent()
40
41
  self.mqtt_properties_event = DataEvent()
41
42
  self.mqtt_status_event = DataEvent()
43
+ self.mqtt_device_event = DataEvent()
42
44
  self.on_ready_event = DataEvent()
43
45
  self.on_disconnected_event = DataEvent()
44
46
  self.on_connected_event = DataEvent()
@@ -49,9 +51,6 @@ class MammotionCloud:
49
51
  self._mqtt_client.on_message = self._on_mqtt_message
50
52
  self._mqtt_client.on_ready = self.on_ready
51
53
 
52
- # temporary for testing only
53
- # self._start_sync_task = self.loop.call_later(30, lambda: asyncio.ensure_future(self.start_sync(0)))
54
-
55
54
  async def on_ready(self) -> None:
56
55
  loop = asyncio.get_event_loop()
57
56
  loop.create_task(self.process_queue())
@@ -129,6 +128,8 @@ class MammotionCloud:
129
128
  _LOGGER.debug("Protobuf event")
130
129
  # Call the callbacks for each cloudDevice
131
130
  await self.mqtt_message_event.data_event(event)
131
+ if event.method == "thing.events":
132
+ await self.mqtt_device_event.data_event(event)
132
133
  if event.method == "thing.properties":
133
134
  await self.mqtt_properties_event.data_event(event)
134
135
  _LOGGER.debug(event)
@@ -170,6 +171,7 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
170
171
  self._mqtt.mqtt_message_event.add_subscribers(self._parse_message_for_device)
171
172
  self._mqtt.mqtt_properties_event.add_subscribers(self._parse_message_properties_for_device)
172
173
  self._mqtt.mqtt_status_event.add_subscribers(self._parse_message_status_for_device)
174
+ self._mqtt.mqtt_device_event.add_subscribers(self._parse_device_event_for_device)
173
175
  self._mqtt.on_ready_event.add_subscribers(self.on_ready)
174
176
  self._mqtt.on_disconnected_event.add_subscribers(self.on_disconnect)
175
177
  self._mqtt.on_connected_event.add_subscribers(self.on_connect)
@@ -188,6 +190,7 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
188
190
  self._mqtt.mqtt_message_event.remove_subscribers(self._parse_message_for_device)
189
191
  self._mqtt.mqtt_properties_event.remove_subscribers(self._parse_message_properties_for_device)
190
192
  self._mqtt.mqtt_status_event.remove_subscribers(self._parse_message_status_for_device)
193
+ self._mqtt.mqtt_device_event.remove_subscribers(self._parse_device_event_for_device)
191
194
  self._state_manager.cloud_gethash_ack_callback = None
192
195
  self._state_manager.cloud_get_commondata_ack_callback = None
193
196
  self._state_manager.cloud_get_plan_callback = None
@@ -319,6 +322,11 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
319
322
  return
320
323
  await self.state_manager.status(status)
321
324
 
325
+ async def _parse_device_event_for_device(self, status: ThingStatusMessage) -> None:
326
+ if status.params.iotId != self.iot_id:
327
+ return
328
+ await self.state_manager.device_event(status)
329
+
322
330
  async def _parse_message_for_device(self, event: ThingEventMessage) -> None:
323
331
  params = event.params
324
332
  new_msg = LubaMsg()
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.5.5"
7
+ version = "0.5.6"
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.5"
69
+ current_version = "0.5.6"
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