@ray-js/robot-data-stream 0.0.14 → 0.0.15-beta.10

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 (157) hide show
  1. package/lib/api/sweeperP2p.js +1 -1
  2. package/lib/mqtt/createCommonOptions.d.ts +4 -2
  3. package/lib/mqtt/createCommonOptions.js +10 -5
  4. package/lib/mqtt/hooks/useStructuredMessage.d.ts +17 -0
  5. package/lib/mqtt/hooks/useStructuredMessage.js +206 -0
  6. package/lib/mqtt/mqttProvider.d.ts +28 -1
  7. package/lib/mqtt/mqttProvider.js +72 -9
  8. package/lib/mqtt/promise.d.ts +57 -4
  9. package/lib/mqtt/promise.js +115 -36
  10. package/lib/mqtt/type/fun.d.ts +233 -0
  11. package/lib/mqtt/type/fun.js +145 -0
  12. package/lib/mqtt/type/index.d.ts +0 -7
  13. package/lib/mqtt/type/index.js +0 -1
  14. package/lib/mqtt/type/protocols/base.d.ts +21 -0
  15. package/lib/mqtt/type/protocols/base.js +32 -0
  16. package/lib/mqtt/type/protocols/carpetCleanProtocol.d.ts +14 -0
  17. package/lib/mqtt/type/protocols/carpetCleanProtocol.js +14 -0
  18. package/lib/mqtt/type/protocols/carpetProtocol.d.ts +102 -0
  19. package/lib/mqtt/type/protocols/carpetProtocol.js +202 -0
  20. package/lib/mqtt/type/protocols/devInfoProtocol.d.ts +11 -0
  21. package/lib/mqtt/type/protocols/devInfoProtocol.js +10 -0
  22. package/lib/mqtt/type/protocols/deviceModelProtocol.d.ts +31 -0
  23. package/lib/mqtt/type/protocols/deviceModelProtocol.js +32 -0
  24. package/lib/mqtt/type/protocols/furnitureModelProtocol.d.ts +27 -0
  25. package/lib/mqtt/type/protocols/furnitureModelProtocol.js +27 -0
  26. package/lib/mqtt/type/protocols/historyMapProtocol.d.ts +39 -0
  27. package/lib/mqtt/type/protocols/historyMapProtocol.js +37 -0
  28. package/lib/mqtt/type/protocols/index.d.ts +20 -0
  29. package/lib/mqtt/type/protocols/index.js +20 -0
  30. package/lib/mqtt/type/protocols/partDivisionProtocol.d.ts +20 -0
  31. package/lib/mqtt/type/protocols/partDivisionProtocol.js +12 -0
  32. package/lib/mqtt/type/protocols/partMergeProtocol.d.ts +13 -0
  33. package/lib/mqtt/type/protocols/partMergeProtocol.js +12 -0
  34. package/lib/mqtt/type/protocols/passwordProtocol.d.ts +24 -0
  35. package/lib/mqtt/type/protocols/passwordProtocol.js +25 -0
  36. package/lib/mqtt/type/protocols/quietHoursProtocol.d.ts +29 -0
  37. package/lib/mqtt/type/protocols/quietHoursProtocol.js +35 -0
  38. package/lib/mqtt/type/protocols/resetMapProtocol.d.ts +4 -0
  39. package/lib/mqtt/type/protocols/resetMapProtocol.js +1 -0
  40. package/lib/mqtt/type/protocols/roomPropertyProtocol.d.ts +42 -0
  41. package/lib/mqtt/type/protocols/roomPropertyProtocol.js +113 -0
  42. package/lib/mqtt/type/protocols/scheduleProtocol.d.ts +62 -0
  43. package/lib/mqtt/type/protocols/scheduleProtocol.js +100 -0
  44. package/lib/mqtt/type/protocols/selectRoomCleanProtocol.d.ts +27 -0
  45. package/lib/mqtt/type/protocols/selectRoomCleanProtocol.js +40 -0
  46. package/lib/mqtt/type/protocols/spotCleanProtocol.d.ts +38 -0
  47. package/lib/mqtt/type/protocols/spotCleanProtocol.js +72 -0
  48. package/lib/mqtt/type/protocols/virtualAreaProtocol.d.ts +32 -0
  49. package/lib/mqtt/type/protocols/virtualAreaProtocol.js +36 -0
  50. package/lib/mqtt/type/protocols/virtualWallProtocol.d.ts +27 -0
  51. package/lib/mqtt/type/protocols/virtualWallProtocol.js +25 -0
  52. package/lib/mqtt/type/protocols/voiceProtocol.d.ts +21 -0
  53. package/lib/mqtt/type/protocols/voiceProtocol.js +23 -0
  54. package/lib/mqtt/type/protocols/wifiMapProtocol.d.ts +16 -0
  55. package/lib/mqtt/type/protocols/wifiMapProtocol.js +14 -0
  56. package/lib/mqtt/type/protocols/zoneCleanProtocol.d.ts +47 -0
  57. package/lib/mqtt/type/protocols/zoneCleanProtocol.js +49 -0
  58. package/lib/mqtt/useCarpet.d.ts +7 -67
  59. package/lib/mqtt/useCarpet.js +101 -181
  60. package/lib/mqtt/useCarpetClean.d.ts +2 -11
  61. package/lib/mqtt/useCarpetClean.js +26 -50
  62. package/lib/mqtt/useDevInfo.d.ts +8 -6
  63. package/lib/mqtt/useDevInfo.js +44 -36
  64. package/lib/mqtt/useDeviceModel.d.ts +6 -19
  65. package/lib/mqtt/useDeviceModel.js +31 -42
  66. package/lib/mqtt/useFurnitureModel.d.ts +6 -18
  67. package/lib/mqtt/useFurnitureModel.js +31 -43
  68. package/lib/mqtt/useHistoryMap.d.ts +2 -18
  69. package/lib/mqtt/useHistoryMap.js +102 -119
  70. package/lib/mqtt/usePartDivision.d.ts +2 -9
  71. package/lib/mqtt/usePartDivision.js +48 -57
  72. package/lib/mqtt/usePartMerge.d.ts +2 -8
  73. package/lib/mqtt/usePartMerge.js +34 -49
  74. package/lib/mqtt/usePassword.d.ts +6 -13
  75. package/lib/mqtt/usePassword.js +84 -74
  76. package/lib/mqtt/useQuiteHours.d.ts +4 -37
  77. package/lib/mqtt/useQuiteHours.js +66 -100
  78. package/lib/mqtt/useResetMap.d.ts +2 -8
  79. package/lib/mqtt/useResetMap.js +27 -34
  80. package/lib/mqtt/useRoomProperty.d.ts +8 -9
  81. package/lib/mqtt/useRoomProperty.js +67 -65
  82. package/lib/mqtt/useSchedule.d.ts +3 -23
  83. package/lib/mqtt/useSchedule.js +72 -101
  84. package/lib/mqtt/useSelectRoomClean.d.ts +3 -24
  85. package/lib/mqtt/useSelectRoomClean.js +107 -133
  86. package/lib/mqtt/useSpotClean.d.ts +5 -15
  87. package/lib/mqtt/useSpotClean.js +68 -121
  88. package/lib/mqtt/useVirtualArea.d.ts +6 -17
  89. package/lib/mqtt/useVirtualArea.js +109 -119
  90. package/lib/mqtt/useVirtualWall.d.ts +2 -18
  91. package/lib/mqtt/useVirtualWall.js +69 -90
  92. package/lib/mqtt/useVoice.d.ts +2 -16
  93. package/lib/mqtt/useVoice.js +48 -68
  94. package/lib/mqtt/useWifiMap.d.ts +6 -5
  95. package/lib/mqtt/useWifiMap.js +43 -42
  96. package/lib/mqtt/useZoneClean.d.ts +2 -21
  97. package/lib/mqtt/useZoneClean.js +125 -137
  98. package/lib/myLib/zod/mini/index.d.cts +1 -0
  99. package/lib/myLib/zod/mini/index.d.ts +1 -0
  100. package/lib/myLib/zod/mini/index.js +1 -0
  101. package/lib/myLib/zod/mini/package.json +6 -0
  102. package/lib/myLib/zod/src/mini/index.d.ts +1 -0
  103. package/lib/myLib/zod/src/mini/index.js +1 -0
  104. package/lib/myLib/zod/src/v4/core/api.d.ts +306 -0
  105. package/lib/myLib/zod/src/v4/core/api.js +1256 -0
  106. package/lib/myLib/zod/src/v4/core/checks.d.ts +278 -0
  107. package/lib/myLib/zod/src/v4/core/checks.js +816 -0
  108. package/lib/myLib/zod/src/v4/core/config.d.ts +9 -0
  109. package/lib/myLib/zod/src/v4/core/config.js +5 -0
  110. package/lib/myLib/zod/src/v4/core/core.d.ts +70 -0
  111. package/lib/myLib/zod/src/v4/core/core.js +95 -0
  112. package/lib/myLib/zod/src/v4/core/doc.d.ts +14 -0
  113. package/lib/myLib/zod/src/v4/core/doc.js +42 -0
  114. package/lib/myLib/zod/src/v4/core/errors.d.ts +220 -0
  115. package/lib/myLib/zod/src/v4/core/errors.js +232 -0
  116. package/lib/myLib/zod/src/v4/core/index.d.ts +15 -0
  117. package/lib/myLib/zod/src/v4/core/index.js +15 -0
  118. package/lib/myLib/zod/src/v4/core/json-schema-generator.d.ts +65 -0
  119. package/lib/myLib/zod/src/v4/core/json-schema-generator.js +120 -0
  120. package/lib/myLib/zod/src/v4/core/json-schema-processors.d.ts +49 -0
  121. package/lib/myLib/zod/src/v4/core/json-schema-processors.js +593 -0
  122. package/lib/myLib/zod/src/v4/core/json-schema.d.ts +88 -0
  123. package/lib/myLib/zod/src/v4/core/json-schema.js +1 -0
  124. package/lib/myLib/zod/src/v4/core/parse.d.ts +49 -0
  125. package/lib/myLib/zod/src/v4/core/parse.js +147 -0
  126. package/lib/myLib/zod/src/v4/core/regexes.d.ts +78 -0
  127. package/lib/myLib/zod/src/v4/core/regexes.js +146 -0
  128. package/lib/myLib/zod/src/v4/core/registries.d.ts +35 -0
  129. package/lib/myLib/zod/src/v4/core/registries.js +51 -0
  130. package/lib/myLib/zod/src/v4/core/schemas.d.ts +1136 -0
  131. package/lib/myLib/zod/src/v4/core/schemas.js +2745 -0
  132. package/lib/myLib/zod/src/v4/core/standard-schema.d.ts +126 -0
  133. package/lib/myLib/zod/src/v4/core/standard-schema.js +1 -0
  134. package/lib/myLib/zod/src/v4/core/to-json-schema.d.ts +114 -0
  135. package/lib/myLib/zod/src/v4/core/to-json-schema.js +488 -0
  136. package/lib/myLib/zod/src/v4/core/util.d.ts +199 -0
  137. package/lib/myLib/zod/src/v4/core/util.js +656 -0
  138. package/lib/myLib/zod/src/v4/core/versions.d.ts +5 -0
  139. package/lib/myLib/zod/src/v4/core/versions.js +5 -0
  140. package/lib/myLib/zod/src/v4/core/zsf.d.ts +91 -0
  141. package/lib/myLib/zod/src/v4/core/zsf.js +1 -0
  142. package/lib/myLib/zod/src/v4/mini/checks.d.ts +1 -0
  143. package/lib/myLib/zod/src/v4/mini/checks.js +1 -0
  144. package/lib/myLib/zod/src/v4/mini/coerce.d.ts +7 -0
  145. package/lib/myLib/zod/src/v4/mini/coerce.js +27 -0
  146. package/lib/myLib/zod/src/v4/mini/external.d.ts +11 -0
  147. package/lib/myLib/zod/src/v4/mini/external.js +16 -0
  148. package/lib/myLib/zod/src/v4/mini/index.d.ts +530 -0
  149. package/lib/myLib/zod/src/v4/mini/index.js +30 -0
  150. package/lib/myLib/zod/src/v4/mini/iso.d.ts +22 -0
  151. package/lib/myLib/zod/src/v4/mini/iso.js +46 -0
  152. package/lib/myLib/zod/src/v4/mini/parse.d.ts +1 -0
  153. package/lib/myLib/zod/src/v4/mini/parse.js +1 -0
  154. package/lib/myLib/zod/src/v4/mini/schemas.js +1244 -0
  155. package/lib/utils/index.d.ts +1 -0
  156. package/lib/utils/index.js +2 -1
  157. package/package.json +5 -3
@@ -1,53 +1,54 @@
1
- import { createSetCommonParams } from './createCommonOptions';
2
- import { normalResolve } from './promise';
3
1
  import { WifiMapEnum } from './type';
4
- import { useContext } from 'react';
5
- import { SingletonContext } from './mqttProvider';
6
- export const useWifiMap = devId => {
2
+ import { useStructuredMessage, handleMqttError } from './hooks/useStructuredMessage';
3
+ import { validator } from './type/fun';
4
+ /**
5
+ * 自定义 Hook,用于 WiFi 地图管理
6
+ * @returns 包含 requestWifiMap 和 setWifiMap 函数的对象
7
+ */
8
+ export const useWifiMap = () => {
7
9
  const {
8
- useMqtt
9
- } = useContext(SingletonContext);
10
+ sendStructuredMessage
11
+ } = useStructuredMessage();
10
12
 
11
- // 请求 WiFi 地图状态
13
+ /**
14
+ * 请求 WiFi 地图状态
15
+ * @param data 可选参数(目前为空对象)
16
+ * @returns Promise<WifiMapResponse> 响应结果
17
+ */
12
18
 
13
- // 设置 WiFi 地图
19
+ /**
20
+ * 设置 WiFi 地图
21
+ * @param data 包含 taskId 的参数对象(taskId 可选,不提供时自动生成)
22
+ * @returns Promise<WifiMapResponse> 响应结果
23
+ */
14
24
 
15
25
  return {
16
26
  requestWifiMap: () => {
17
- if (!useMqtt) {
18
- return Promise.reject(new Error('useMqtt is not used'));
19
- }
20
- try {
21
- const params = createSetCommonParams({
22
- deviceId: devId,
23
- reqType: WifiMapEnum.query
24
- });
25
- ty.device.sendMqttMessage(params);
26
- const {
27
- taskId
28
- } = params.message;
29
- return normalResolve(WifiMapEnum.query, taskId);
30
- } catch (error) {
31
- return Promise.reject(error instanceof Error ? error : new Error('Failed to request WiFi map'));
32
- }
27
+ return new Promise((resolve, reject) => {
28
+ try {
29
+ sendStructuredMessage(WifiMapEnum.query, {}, resolve, error => reject(handleMqttError(error, 'Failed to request WiFi map')));
30
+ } catch (error) {
31
+ reject(handleMqttError(error, 'Failed to request WiFi map'));
32
+ }
33
+ });
33
34
  },
34
- setWifiMap: () => {
35
- try {
36
- const params = createSetCommonParams({
37
- deviceId: devId,
38
- reqType: WifiMapEnum.set,
39
- message: {
40
- taskId: String(Date.now())
41
- }
42
- });
43
- ty.device.sendMqttMessage(params);
44
- const {
45
- taskId
46
- } = params.message;
47
- return normalResolve(WifiMapEnum.rst, taskId);
48
- } catch (error) {
49
- throw error instanceof Error ? error : new Error('Failed to set WiFi map');
50
- }
35
+ setWifiMap: function () {
36
+ let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
37
+ return new Promise((resolve, reject) => {
38
+ try {
39
+ // 如果没有提供 taskId,自动生成
40
+ const wifiMapData = {
41
+ taskId: data.taskId || String(Date.now())
42
+ };
43
+
44
+ // 使用 TypeBox Schema 进行参数验证
45
+ const validatedData = validator.validate('set_wifi_map', wifiMapData);
46
+ sendStructuredMessage(WifiMapEnum.set, validatedData, resolve, error => reject(handleMqttError(error, 'Failed to set WiFi map')), WifiMapEnum.rst // 响应类型是 rst,不是 set
47
+ );
48
+ } catch (error) {
49
+ reject(handleMqttError(error, 'Failed to set WiFi map'));
50
+ }
51
+ });
51
52
  }
52
53
  };
53
54
  };
@@ -1,28 +1,9 @@
1
- import { BaseResponse, ZoneCleanEnum, RoomPreference } from './type';
2
- import { Point, Zone } from '@ray-js/robot-protocol';
3
- interface ZoneCleanResponse extends BaseResponse {
4
- reqType: ZoneCleanEnum.query;
5
- polygons: string[];
6
- names?: string[];
7
- suctions?: string[];
8
- cisterns?: string[];
9
- cleanCounts?: number[];
10
- yMops?: number[];
11
- sweepMopModes?: string[];
12
- }
13
- interface SetZoneCleanParams extends Partial<Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes'>> {
14
- zones: Zone[];
15
- origin: Point;
16
- }
17
- type TRequestZoneClean = () => Promise<ZoneCleanResponse>;
18
- type TSetZoneClean = (params: SetZoneCleanParams) => Promise<ZoneCleanResponse>;
1
+ import { type TRequestZoneClean, type TSetZoneClean } from './type/protocols';
19
2
  /**
20
3
  * 自定义 Hook,用于划区清扫
21
- * @param devId 设备ID
22
4
  * @returns 包含 requestZoneClean 和 setZoneClean 函数的对象
23
5
  */
24
- export declare const useZoneClean: (devId: string) => {
6
+ export declare const useZoneClean: () => {
25
7
  requestZoneClean: TRequestZoneClean;
26
8
  setZoneClean: TSetZoneClean;
27
9
  };
28
- export {};
@@ -1,35 +1,25 @@
1
- import "core-js/modules/esnext.iterator.constructor.js";
2
- import "core-js/modules/esnext.iterator.for-each.js";
3
1
  import "core-js/modules/esnext.iterator.map.js";
4
2
  // 划区清扫
5
- import { isArray } from 'lodash-es';
6
- import { createSetCommonParams } from './createCommonOptions';
7
- import { normalResolve } from './promise';
8
- import { ZoneCleanEnum } from './type';
9
- import { useContext } from 'react';
10
- import { SingletonContext } from './mqttProvider';
11
3
  import { encodeZoneClean0x3a, requestZoneClean0x3b } from '@ray-js/robot-protocol';
4
+ import { useContext } from 'react';
12
5
  import { pointsToString } from '../utils';
13
-
14
- // 划区清扫响应类型
15
-
16
- // 设置划区清扫参数类型
17
-
18
- // 请求划区清扫函数类型定义
19
-
20
- // 设置划区清扫函数类型定义
21
-
6
+ import { handleMqttError, useStructuredMessage } from './hooks/useStructuredMessage';
7
+ import { SingletonContext } from './mqttProvider';
8
+ import { ZoneCleanEnum } from './type';
9
+ import { validator } from './type/fun';
22
10
  /**
23
11
  * 自定义 Hook,用于划区清扫
24
- * @param devId 设备ID
25
12
  * @returns 包含 requestZoneClean 和 setZoneClean 函数的对象
26
13
  */
27
- export const useZoneClean = devId => {
14
+ export const useZoneClean = () => {
28
15
  const {
29
16
  useMqtt,
30
17
  commandVersion,
31
18
  devices
32
19
  } = useContext(SingletonContext);
20
+ const {
21
+ sendStructuredMessage
22
+ } = useStructuredMessage();
33
23
 
34
24
  /**
35
25
  * 请求划区清扫信息
@@ -46,53 +36,42 @@ export const useZoneClean = devId => {
46
36
 
47
37
  return {
48
38
  requestZoneClean: () => {
49
- try {
50
- if (useMqtt) {
51
- const params = createSetCommonParams({
52
- deviceId: devId,
53
- reqType: ZoneCleanEnum.query
54
- });
55
- ty.device.sendMqttMessage(params);
56
- const {
57
- taskId
58
- } = params.message;
59
- return normalResolve(ZoneCleanEnum.query, taskId);
60
- }
39
+ return new Promise((resolve, reject) => {
40
+ try {
41
+ if (useMqtt) {
42
+ sendStructuredMessage(ZoneCleanEnum.query, {}, resolve, error => reject(handleMqttError(error, 'Failed to request zone clean')));
43
+ return;
44
+ }
61
45
 
62
- // 非 MQTT 模式:使用命令传输
63
- devices.common.model.actions.command_trans.set(requestZoneClean0x3b({
64
- version: commandVersion
65
- }));
46
+ // 非 MQTT 模式:使用命令传输
47
+ devices.common.model.actions.command_trans.set(requestZoneClean0x3b({
48
+ version: commandVersion
49
+ }));
66
50
 
67
- // 非 MQTT 模式下无法立即获取响应数据,返回默认响应
68
- return Promise.resolve({
69
- success: true,
70
- errCode: 0,
71
- reqType: ZoneCleanEnum.query,
72
- version: commandVersion,
73
- taskId: `${Date.now()}`,
74
- polygons: [],
75
- names: []
76
- });
77
- } catch (error) {
78
- return Promise.reject(error instanceof Error ? error : new Error('Failed to request zone clean'));
79
- }
51
+ // 非 MQTT 模式下无法立即获取响应数据,返回默认响应
52
+ resolve({
53
+ success: true,
54
+ errCode: 0,
55
+ reqType: ZoneCleanEnum.query,
56
+ version: commandVersion,
57
+ taskId: `${Date.now()}`,
58
+ polygons: [],
59
+ names: []
60
+ });
61
+ } catch (error) {
62
+ reject(handleMqttError(error, 'Failed to request zone clean'));
63
+ }
64
+ });
80
65
  },
81
66
  setZoneClean: params => {
82
- const {
83
- zones,
84
- origin
85
- } = params;
67
+ return new Promise((resolve, reject) => {
68
+ try {
69
+ const {
70
+ zones,
71
+ origin
72
+ } = params;
86
73
 
87
- // 参数验证
88
- if (!isArray(zones) || zones.length === 0) {
89
- throw new Error('zones is required and must be a non-empty array');
90
- }
91
- if (!origin || typeof origin.x !== 'number' || typeof origin.y !== 'number') {
92
- throw new Error('origin is required and must be a valid Point object with x and y properties');
93
- }
94
- try {
95
- if (useMqtt) {
74
+ // 将业务参数转换为协议数据格式
96
75
  const num = zones.length;
97
76
  const {
98
77
  suctions = new Array(num).fill(''),
@@ -101,88 +80,97 @@ export const useZoneClean = devId => {
101
80
  yMops = new Array(num).fill(-1),
102
81
  sweepMopModes = new Array(num).fill('only_sweep')
103
82
  } = params;
104
- if (suctions && !isArray(suctions)) {
105
- throw new Error('suctions is illegal');
106
- }
107
- if (cisterns && !isArray(cisterns)) {
108
- throw new Error('cisterns is illegal');
109
- }
110
- if (cleanCounts && !isArray(cleanCounts)) {
111
- throw new Error('cleanCounts is illegal');
112
- }
113
- if (yMops && !isArray(yMops)) {
114
- throw new Error('yMops is illegal');
115
- }
116
- if (sweepMopModes && !isArray(sweepMopModes)) {
117
- throw new Error('sweepMopModes is illegal');
118
- }
119
- if (num !== suctions.length || num !== cisterns.length || num !== cleanCounts.length || num !== yMops.length || num !== sweepMopModes.length) {
120
- throw new Error('The length of the parameters is inconsistent');
121
- }
122
- const polygons = [];
123
- const names = [];
124
- zones.forEach(_ref => {
125
- let {
126
- points,
127
- name
128
- } = _ref;
129
- polygons.push(pointsToString(points, origin));
130
- names.push(name || '');
131
- });
132
- const mqttParams = createSetCommonParams({
133
- deviceId: devId,
134
- reqType: ZoneCleanEnum.set,
135
- message: {
83
+
84
+ // 构建符合 SetZoneCleanData 格式的数据
85
+ const zoneCleanData = {
86
+ zones: zones.map(_ref => {
87
+ let {
88
+ points,
89
+ name,
90
+ advanced
91
+ } = _ref;
92
+ return {
93
+ points,
94
+ name,
95
+ advanced
96
+ };
97
+ }),
98
+ origin,
99
+ suctions,
100
+ cisterns,
101
+ cleanCounts,
102
+ yMops,
103
+ sweepMopModes
104
+ };
105
+
106
+ // 使用 TypeBox Schema 进行参数验证
107
+ const validatedData = validator.validate('set_zone_clean', zoneCleanData);
108
+ if (useMqtt) {
109
+ // zones 转换为 polygons 字符串格式(用于 MQTT 消息)
110
+ const polygons = zones.map(_ref2 => {
111
+ let {
112
+ points
113
+ } = _ref2;
114
+ return pointsToString(points, origin);
115
+ });
116
+ const names = zones.map(_ref3 => {
117
+ let {
118
+ name
119
+ } = _ref3;
120
+ return name || '';
121
+ });
122
+ sendStructuredMessage(ZoneCleanEnum.set, {
136
123
  num: zones.length,
137
124
  switchGo: true,
138
125
  polygons,
139
- suctions,
140
- cisterns,
141
- cleanCounts,
142
- yMops,
143
- sweepMopModes,
126
+ suctions: validatedData.suctions,
127
+ cisterns: validatedData.cisterns,
128
+ cleanCounts: validatedData.cleanCounts,
129
+ yMops: validatedData.yMops,
130
+ sweepMopModes: validatedData.sweepMopModes,
144
131
  names
145
- }
132
+ }, resolve, error => reject(handleMqttError(error, 'Failed to set zone clean')), ZoneCleanEnum.query // 响应类型是 query,不是 set
133
+ );
134
+ return;
135
+ }
136
+
137
+ // 非 MQTT 模式:使用命令传输
138
+ const command = encodeZoneClean0x3a({
139
+ protocolVersion: 1,
140
+ version: commandVersion,
141
+ origin: validatedData.origin,
142
+ zones: validatedData.zones.map(zone => ({
143
+ points: zone.points,
144
+ name: zone.name,
145
+ advanced: zone.advanced
146
+ }))
146
147
  });
147
- ty.device.sendMqttMessage(mqttParams);
148
- const {
149
- taskId
150
- } = mqttParams.message;
151
- return normalResolve(ZoneCleanEnum.query, taskId);
148
+ devices.common.model.actions.command_trans.set(command);
149
+ const polygons = zones.map(_ref4 => {
150
+ let {
151
+ points
152
+ } = _ref4;
153
+ return pointsToString(points, origin);
154
+ });
155
+ const names = zones.map(_ref5 => {
156
+ let {
157
+ name
158
+ } = _ref5;
159
+ return name || '';
160
+ });
161
+ resolve({
162
+ success: true,
163
+ errCode: 0,
164
+ reqType: ZoneCleanEnum.query,
165
+ version: commandVersion,
166
+ taskId: `${Date.now()}`,
167
+ polygons,
168
+ names
169
+ });
170
+ } catch (error) {
171
+ reject(handleMqttError(error, 'Failed to set zone clean'));
152
172
  }
153
-
154
- // 非 MQTT 模式:使用命令传输
155
- const command = encodeZoneClean0x3a({
156
- protocolVersion: 1,
157
- version: commandVersion,
158
- origin,
159
- zones
160
- });
161
- devices.common.model.actions.command_trans.set(command);
162
- const polygons = zones.map(_ref2 => {
163
- let {
164
- points
165
- } = _ref2;
166
- return pointsToString(points, origin);
167
- });
168
- const names = zones.map(_ref3 => {
169
- let {
170
- name
171
- } = _ref3;
172
- return name || '';
173
- });
174
- return Promise.resolve({
175
- success: true,
176
- errCode: 0,
177
- reqType: ZoneCleanEnum.query,
178
- version: commandVersion,
179
- taskId: `${Date.now()}`,
180
- polygons,
181
- names
182
- });
183
- } catch (error) {
184
- throw error instanceof Error ? error : new Error('Failed to set zone clean');
185
- }
173
+ });
186
174
  }
187
175
  };
188
176
  };
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "main": "./index.cjs",
4
+ "module": "./index.js",
5
+ "types": "./index.d.cts"
6
+ }
@@ -0,0 +1 @@
1
+ export * from "../v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../v4/mini/index.js";