@ray-js/robot-data-stream 0.0.13-beta-6 → 0.0.13-beta-7

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 (55) hide show
  1. package/lib/api/index.d.ts +12 -2
  2. package/lib/api/index.js +172 -1
  3. package/lib/api/p2pApi.d.ts +27 -8
  4. package/lib/api/p2pApi.js +169 -271
  5. package/lib/api/sweeperP2p.d.ts +21 -54
  6. package/lib/api/sweeperP2p.js +245 -324
  7. package/lib/constant.d.ts +52 -0
  8. package/lib/constant.js +54 -0
  9. package/lib/index.d.ts +1 -11
  10. package/lib/index.js +2 -166
  11. package/lib/mqtt/createCommonOptions.d.ts +56 -15
  12. package/lib/mqtt/createCommonOptions.js +44 -8
  13. package/lib/mqtt/mqttProvider.d.ts +23 -15
  14. package/lib/mqtt/mqttProvider.js +63 -26
  15. package/lib/mqtt/promise.js +8 -3
  16. package/lib/mqtt/type/index.d.ts +9 -0
  17. package/lib/mqtt/type/index.js +8 -0
  18. package/lib/mqtt/type/requestType.d.ts +3 -0
  19. package/lib/mqtt/type/requestType.js +4 -0
  20. package/lib/mqtt/useDevInfo.d.ts +2 -7
  21. package/lib/mqtt/useDevInfo.js +25 -9
  22. package/lib/mqtt/useHistoryMap.d.ts +13 -21
  23. package/lib/mqtt/useHistoryMap.js +82 -32
  24. package/lib/mqtt/usePartDivision.d.ts +5 -7
  25. package/lib/mqtt/usePartDivision.js +41 -16
  26. package/lib/mqtt/usePartMerge.d.ts +5 -7
  27. package/lib/mqtt/usePartMerge.js +36 -18
  28. package/lib/mqtt/usePassword.js +59 -28
  29. package/lib/mqtt/useQuiteHours.d.ts +9 -24
  30. package/lib/mqtt/useQuiteHours.js +95 -52
  31. package/lib/mqtt/useResetMap.d.ts +10 -7
  32. package/lib/mqtt/useResetMap.js +40 -11
  33. package/lib/mqtt/useRoomProperty.js +23 -16
  34. package/lib/mqtt/useSchedule.d.ts +17 -4
  35. package/lib/mqtt/useSchedule.js +101 -49
  36. package/lib/mqtt/useSelectRoomClean.d.ts +20 -16
  37. package/lib/mqtt/useSelectRoomClean.js +145 -49
  38. package/lib/mqtt/useSpotClean.d.ts +3 -3
  39. package/lib/mqtt/useSpotClean.js +71 -50
  40. package/lib/mqtt/useVirtualArea.d.ts +6 -9
  41. package/lib/mqtt/useVirtualArea.js +112 -42
  42. package/lib/mqtt/useVirtualWall.d.ts +13 -10
  43. package/lib/mqtt/useVirtualWall.js +97 -34
  44. package/lib/mqtt/useVoice.d.ts +3 -6
  45. package/lib/mqtt/useVoice.js +73 -33
  46. package/lib/mqtt/useWifiMap.js +34 -18
  47. package/lib/mqtt/useZoneClean.d.ts +13 -13
  48. package/lib/mqtt/useZoneClean.js +149 -76
  49. package/lib/ttt/index.d.ts +153 -0
  50. package/lib/ttt/index.js +458 -0
  51. package/lib/utils/index.d.ts +20 -1
  52. package/lib/utils/index.js +19 -0
  53. package/package.json +1 -1
  54. package/lib/mqtt/myError.d.ts +0 -4
  55. package/lib/mqtt/myError.js +0 -6
@@ -1,6 +1,3 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- const _excluded = ["startTime", "endTime"];
4
1
  // 勿扰模式
5
2
  import { useContext } from 'react';
6
3
  import { createSetCommonParams } from './createCommonOptions';
@@ -9,8 +6,14 @@ import { QuietHoursEnum } from './type';
9
6
  import { SingletonContext } from './mqttProvider';
10
7
  import { encodeDoNotDisturb0x32 } from '@ray-js/robot-protocol';
11
8
 
9
+ // 勿扰模式响应类型
10
+
11
+ // 设置勿扰模式参数类型
12
+
12
13
  // 设置勿扰模式函数类型定义
13
14
 
15
+ // 请求勿扰模式函数类型定义
16
+
14
17
  /**
15
18
  * 自定义 Hook,用于勿扰模式
16
19
  * @param devId 设备ID
@@ -24,69 +27,109 @@ export const useQuiteHours = devId => {
24
27
  } = useContext(SingletonContext);
25
28
  /**
26
29
  * 请求勿扰模式数据
27
- * @returns Promise<{ time: string[]; day: number; active: number }> 响应结果
30
+ * @returns Promise<QuietHoursResponse> 响应结果
28
31
  */
29
32
 
30
33
  /**
31
34
  * 设置勿扰模式
32
- * @param message 包含勿扰模式设置参数的对象
33
- * @returns Promise<Response> 响应结果
35
+ * @param params 包含勿扰模式设置参数的对象
36
+ * @returns Promise<QuietHoursResponse> 响应结果
34
37
  */
35
38
 
36
39
  return {
37
- setQuiteHours: message => {
40
+ setQuiteHours: params => {
38
41
  const {
39
- startTime,
40
- endTime
41
- } = message,
42
- others = _objectWithoutProperties(message, _excluded);
43
- if (useMqtt) {
44
- if (!startTime || !endTime) {
45
- throw new Error('Invalid time');
46
- }
47
- const {
48
- hour: h0,
49
- minute: m0
50
- } = startTime;
51
- const {
52
- hour: h1,
53
- minute: m1
54
- } = endTime;
55
- if (h0 > 23 || h0 < 0 || h1 > 23 || h1 < 0 || m0 > 59 || m0 < 0 || m1 > 59 || m1 < 0) {
56
- throw new Error('Invalid time');
42
+ startTime,
43
+ endTime,
44
+ active,
45
+ day
46
+ } = params;
47
+
48
+ // 参数验证
49
+ if (!startTime || typeof startTime.hour !== 'number' || typeof startTime.minute !== 'number') {
50
+ throw new Error('startTime is required and must be an object with hour and minute properties');
51
+ }
52
+ if (!endTime || typeof endTime.hour !== 'number' || typeof endTime.minute !== 'number') {
53
+ throw new Error('endTime is required and must be an object with hour and minute properties');
54
+ }
55
+ if (typeof active !== 'number' || active !== 0 && active !== 1) {
56
+ throw new Error('active is required and must be 0 or 1');
57
+ }
58
+ if (typeof day !== 'number') {
59
+ throw new Error('day is required and must be a number');
60
+ }
61
+ const {
62
+ hour: h0,
63
+ minute: m0
64
+ } = startTime;
65
+ const {
66
+ hour: h1,
67
+ minute: m1
68
+ } = endTime;
69
+ if (h0 < 0 || h0 > 23 || m0 < 0 || m0 > 59) {
70
+ throw new Error('startTime is invalid: hour must be 0-23, minute must be 0-59');
71
+ }
72
+ if (h1 < 0 || h1 > 23 || m1 < 0 || m1 > 59) {
73
+ throw new Error('endTime is invalid: hour must be 0-23, minute must be 0-59');
74
+ }
75
+ try {
76
+ if (useMqtt) {
77
+ const mqttParams = createSetCommonParams({
78
+ deviceId: devId,
79
+ reqType: QuietHoursEnum.set,
80
+ message: {
81
+ time: [`${h0},${m0}`, `${h1},${m1}`],
82
+ active,
83
+ day
84
+ }
85
+ });
86
+ ty.device.sendMqttMessage(mqttParams);
87
+ const {
88
+ taskId
89
+ } = mqttParams.message;
90
+ return normalResolve(QuietHoursEnum.query, taskId);
57
91
  }
92
+
93
+ // 非 MQTT 模式:使用命令传输
94
+ const command = encodeDoNotDisturb0x32({
95
+ version: commandVersion,
96
+ startHour: h0,
97
+ startMinute: m0,
98
+ endHour: h1,
99
+ endMinute: m1
100
+ });
101
+ devices.common.model.actions.disturb_time_set.set(command);
102
+ return Promise.resolve({
103
+ success: true,
104
+ errCode: 0,
105
+ reqType: QuietHoursEnum.query,
106
+ version: commandVersion,
107
+ taskId: `${Date.now()}`,
108
+ active,
109
+ time: [`${h0},${m0}`, `${h1},${m1}`],
110
+ day
111
+ });
112
+ } catch (error) {
113
+ throw error instanceof Error ? error : new Error('Failed to set quiet hours');
114
+ }
115
+ },
116
+ requestQuiteHours: () => {
117
+ if (!useMqtt) {
118
+ return Promise.reject(new Error('useMqtt is not used'));
119
+ }
120
+ try {
58
121
  const params = createSetCommonParams({
59
122
  deviceId: devId,
60
- reqType: QuietHoursEnum.set,
61
- message: _objectSpread({
62
- time: [`${h0},${m0}`, `${h1},${m1}`]
63
- }, others)
123
+ reqType: QuietHoursEnum.query
64
124
  });
65
125
  ty.device.sendMqttMessage(params);
66
- return normalResolve(QuietHoursEnum.query, params.message.taskId);
126
+ const {
127
+ taskId
128
+ } = params.message;
129
+ return normalResolve(QuietHoursEnum.query, taskId);
130
+ } catch (error) {
131
+ return Promise.reject(error instanceof Error ? error : new Error('Failed to request quiet hours'));
67
132
  }
68
- const command = encodeDoNotDisturb0x32({
69
- version: commandVersion,
70
- startHour: startTime.hour,
71
- startMinute: startTime.minute,
72
- endHour: endTime.hour,
73
- endMinute: endTime.minute
74
- });
75
- devices.common.model.actions.disturb_time_set.set(command);
76
- return Promise.resolve({
77
- success: true
78
- });
79
- },
80
- requestQuiteHours: () => {
81
- const params = createSetCommonParams({
82
- deviceId: devId,
83
- reqType: QuietHoursEnum.query
84
- });
85
- ty.device.sendMqttMessage(params);
86
- const {
87
- taskId
88
- } = params.message;
89
- return normalResolve(QuietHoursEnum.query, taskId);
90
133
  }
91
134
  };
92
135
  };
@@ -1,10 +1,13 @@
1
- type TSetResetMap = () => Promise<{
2
- success: boolean;
3
- errCode: number;
4
- reqType: string;
5
- version: string;
6
- taskId: string;
7
- } | void>;
1
+ import { BaseResponse, ResetCurrMapEnum } from './type';
2
+ interface ResetMapResponse extends BaseResponse {
3
+ reqType: ResetCurrMapEnum.query;
4
+ }
5
+ type TSetResetMap = () => Promise<ResetMapResponse>;
6
+ /**
7
+ * 自定义 Hook,用于重置地图
8
+ * @param devId 设备ID
9
+ * @returns 包含 setResetMap 函数的对象
10
+ */
8
11
  export declare const useResetMap: (devId: string) => {
9
12
  setResetMap: TSetResetMap;
10
13
  };
@@ -1,31 +1,60 @@
1
+ // 重置地图
1
2
  import { useContext } from 'react';
2
3
  import { createSetCommonParams } from './createCommonOptions';
3
4
  import { normalResolve } from './promise';
4
5
  import { ResetCurrMapEnum } from './type';
5
6
  import { SingletonContext } from './mqttProvider';
6
7
  import { encodeResetMap0x42 } from '@ray-js/robot-protocol';
8
+
9
+ // 重置地图响应类型
10
+
11
+ // 设置重置地图函数类型定义
12
+
13
+ /**
14
+ * 自定义 Hook,用于重置地图
15
+ * @param devId 设备ID
16
+ * @returns 包含 setResetMap 函数的对象
17
+ */
7
18
  export const useResetMap = devId => {
8
19
  const {
9
20
  useMqtt,
10
21
  devices,
11
22
  commandVersion
12
23
  } = useContext(SingletonContext);
13
- // 重置地图
24
+ /**
25
+ * 重置地图
26
+ * @returns Promise<ResetMapResponse> 响应结果
27
+ */
14
28
 
15
29
  return {
16
30
  setResetMap: () => {
17
- if (useMqtt) {
18
- const params = createSetCommonParams({
19
- deviceId: devId,
20
- reqType: ResetCurrMapEnum.set
31
+ try {
32
+ if (useMqtt) {
33
+ const params = createSetCommonParams({
34
+ deviceId: devId,
35
+ reqType: ResetCurrMapEnum.set
36
+ });
37
+ ty.device.sendMqttMessage(params);
38
+ const {
39
+ taskId
40
+ } = params.message;
41
+ return normalResolve(ResetCurrMapEnum.query, taskId);
42
+ }
43
+
44
+ // 非 MQTT 模式:使用命令传输
45
+ devices.common.model.actions.command_trans.set(encodeResetMap0x42({
46
+ version: commandVersion
47
+ }));
48
+ return Promise.resolve({
49
+ success: true,
50
+ errCode: 0,
51
+ reqType: ResetCurrMapEnum.query,
52
+ version: commandVersion,
53
+ taskId: `${Date.now()}`
21
54
  });
22
- ty.device.sendMqttMessage(params);
23
- return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
55
+ } catch (error) {
56
+ throw error instanceof Error ? error : new Error('Failed to reset map');
24
57
  }
25
- devices.common.model.actions.command_trans.set(encodeResetMap0x42({
26
- version: commandVersion
27
- }));
28
- return Promise.resolve();
29
58
  }
30
59
  };
31
60
  };
@@ -24,16 +24,12 @@ export const useRoomProperty = devId => {
24
24
  return normalResolve(RoomPropertyEnum.query, params.message.taskId);
25
25
  },
26
26
  setRoomProperty: message => {
27
- const params = createSetCommonParams({
28
- deviceId: devId,
29
- reqType: RoomPropertyEnum.set,
30
- message
31
- });
27
+ // 参数验证
32
28
  const {
33
29
  ids
34
30
  } = message;
35
31
  if (!isArray(ids) || isArray(ids) && ids.length === 0) {
36
- return Promise.reject(new Error('ids is required'));
32
+ throw new Error('ids is required and must be a non-empty array');
37
33
  }
38
34
  const len = ids.length;
39
35
  const {
@@ -45,29 +41,40 @@ export const useRoomProperty = devId => {
45
41
  names = new Array(len).fill('')
46
42
  } = message;
47
43
  if (suctions && !isArray(suctions)) {
48
- // 设置超时定时器
49
- return Promise.reject(new Error('cisterns is illegal'));
44
+ throw new Error('suctions is illegal');
50
45
  }
51
46
  if (cisterns && !isArray(cisterns)) {
52
- return Promise.reject(new Error('cisterns is illegal'));
47
+ throw new Error('cisterns is illegal');
53
48
  }
54
49
  if (cleanCounts && !isArray(cleanCounts)) {
55
- return Promise.reject(new Error('cleanCounts is illegal'));
50
+ throw new Error('cleanCounts is illegal');
56
51
  }
57
52
  if (yMops && !isArray(yMops)) {
58
- return Promise.reject(new Error('yMops is illegal'));
53
+ throw new Error('yMops is illegal');
59
54
  }
60
55
  if (sweepMopModes && !isArray(sweepMopModes)) {
61
- return Promise.reject(new Error('sweepMopModes is illegal'));
56
+ throw new Error('sweepMopModes is illegal');
62
57
  }
63
58
  if (names && !isArray(names)) {
64
- return Promise.reject(new Error('names is illegal'));
59
+ throw new Error('names is illegal');
65
60
  }
66
61
  if (len !== suctions.length || len !== cisterns.length || len !== cleanCounts.length || len !== yMops.length || len !== sweepMopModes.length || len !== names.length) {
67
- return Promise.reject(new Error('The length of the parameters is inconsistent'));
62
+ throw new Error('The length of the parameters is inconsistent');
63
+ }
64
+ try {
65
+ const params = createSetCommonParams({
66
+ deviceId: devId,
67
+ reqType: RoomPropertyEnum.set,
68
+ message
69
+ });
70
+ ty.device.sendMqttMessage(params);
71
+ const {
72
+ taskId
73
+ } = params.message;
74
+ return normalResolve(RoomPropertyEnum.query, taskId);
75
+ } catch (error) {
76
+ throw error instanceof Error ? error : new Error('Failed to set room property');
68
77
  }
69
- ty.device.sendMqttMessage(params);
70
- return normalResolve(RoomPropertyEnum.query, params.message.taskId);
71
78
  }
72
79
  };
73
80
  };
@@ -1,4 +1,4 @@
1
- import { RoomPreference, BaseResponse } from './type';
1
+ import { ScheduleEnum, RoomPreference, BaseResponse } from './type';
2
2
  type ScheduleItem = Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes' | 'ids'> & {
3
3
  active: number;
4
4
  cycle: number[];
@@ -9,9 +9,22 @@ interface Schedule {
9
9
  num: number;
10
10
  version?: string;
11
11
  }
12
- type Response = BaseResponse & Schedule;
12
+ interface ScheduleResponse extends BaseResponse {
13
+ reqType: ScheduleEnum.query;
14
+ list: Array<ScheduleItem>;
15
+ num: number;
16
+ }
17
+ type TRequestSchedule = (message?: {
18
+ version?: string;
19
+ }) => Promise<ScheduleResponse>;
20
+ type TSetSchedule = (message: Schedule) => Promise<ScheduleResponse>;
21
+ /**
22
+ * 自定义 Hook,用于定时任务
23
+ * @param devId 设备ID
24
+ * @returns 包含 requestSchedule 和 setSchedule 函数的对象
25
+ */
13
26
  export declare const useSchedule: (devId: string) => {
14
- requestSchedule: () => Promise<Response>;
15
- setSchedule: (message: Schedule) => Promise<Response | void>;
27
+ requestSchedule: TRequestSchedule;
28
+ setSchedule: TSetSchedule;
16
29
  };
17
30
  export {};
@@ -8,39 +8,51 @@ import { SingletonContext } from './mqttProvider';
8
8
  import { encodeDeviceTimer0x30 } from '@ray-js/robot-protocol';
9
9
  import { CISTERN_MAP, CLEAN_MODE_MAP, SUCTION_MAP } from '../constant';
10
10
 
11
- // 定时任务
11
+ // 定时任务项
12
12
 
13
+ // 定时任务数据
14
+
15
+ // 定时任务响应类型
16
+
17
+ // 请求定时数据函数类型定义
18
+
19
+ // 设置定时数据函数类型定义
20
+
21
+ /**
22
+ * 自定义 Hook,用于定时任务
23
+ * @param devId 设备ID
24
+ * @returns 包含 requestSchedule 和 setSchedule 函数的对象
25
+ */
13
26
  export const useSchedule = devId => {
14
27
  const {
15
28
  useMqtt,
16
29
  devices,
17
30
  commandVersion
18
31
  } = useContext(SingletonContext);
19
- // 请求定时数据
32
+ /**
33
+ * 请求定时数据
34
+ * @param message 可选参数,包含版本号
35
+ * @returns Promise<ScheduleResponse> 响应结果
36
+ */
20
37
 
21
- // 下发定时数据
38
+ /**
39
+ * 设置定时数据
40
+ * @param message 定时任务数据
41
+ * @returns Promise<ScheduleResponse> 响应结果
42
+ */
22
43
 
23
44
  return {
24
45
  requestSchedule: function () {
25
46
  let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
26
47
  version: '1.0.0'
27
48
  };
28
- const params = createSetCommonParams({
29
- deviceId: devId,
30
- reqType: ScheduleEnum.query,
31
- message
32
- });
33
- ty.device.sendMqttMessage(params);
34
- const {
35
- taskId
36
- } = params.message;
37
- return normalResolve(ScheduleEnum.query, taskId);
38
- },
39
- setSchedule: message => {
40
- if (useMqtt) {
49
+ if (!useMqtt) {
50
+ return Promise.reject(new Error('useMqtt is not used'));
51
+ }
52
+ try {
41
53
  const params = createSetCommonParams({
42
54
  deviceId: devId,
43
- reqType: ScheduleEnum.set,
55
+ reqType: ScheduleEnum.query,
44
56
  message
45
57
  });
46
58
  ty.device.sendMqttMessage(params);
@@ -48,39 +60,79 @@ export const useSchedule = devId => {
48
60
  taskId
49
61
  } = params.message;
50
62
  return normalResolve(ScheduleEnum.query, taskId);
63
+ } catch (error) {
64
+ return Promise.reject(error instanceof Error ? error : new Error('Failed to request schedule'));
65
+ }
66
+ },
67
+ setSchedule: message => {
68
+ // 参数验证
69
+ if (!message || typeof message.num !== 'number') {
70
+ throw new Error('message.num is required and must be a number');
71
+ }
72
+ if (!Array.isArray(message.list)) {
73
+ throw new Error('message.list is required and must be an array');
74
+ }
75
+ if (message.num !== message.list.length) {
76
+ throw new Error('message.num must equal message.list.length');
77
+ }
78
+ try {
79
+ if (useMqtt) {
80
+ const params = createSetCommonParams({
81
+ deviceId: devId,
82
+ reqType: ScheduleEnum.set,
83
+ message
84
+ });
85
+ ty.device.sendMqttMessage(params);
86
+ const {
87
+ taskId
88
+ } = params.message;
89
+ return normalResolve(ScheduleEnum.query, taskId);
90
+ }
91
+
92
+ // 非 MQTT 模式:使用命令传输
93
+ const command = encodeDeviceTimer0x30({
94
+ version: commandVersion,
95
+ number: message.num,
96
+ list: message.list.map(_ref => {
97
+ let {
98
+ active,
99
+ suctions,
100
+ sweepMopModes,
101
+ ids,
102
+ cleanCounts,
103
+ cycle,
104
+ cisterns,
105
+ time
106
+ } = _ref;
107
+ return {
108
+ effectiveness: active,
109
+ cleanMode: CLEAN_MODE_MAP[sweepMopModes[0]],
110
+ fanLevel: SUCTION_MAP[suctions[0]],
111
+ waterLevel: CISTERN_MAP[cisterns[0]],
112
+ time: {
113
+ hour: time[0],
114
+ minute: time[1]
115
+ },
116
+ week: cycle,
117
+ sweepCount: cleanCounts[0],
118
+ roomIds: ids,
119
+ roomNum: ids.length
120
+ };
121
+ })
122
+ });
123
+ devices.common.model.actions.device_timer.set(command);
124
+ return Promise.resolve({
125
+ success: true,
126
+ errCode: 0,
127
+ reqType: ScheduleEnum.query,
128
+ version: commandVersion,
129
+ taskId: `${Date.now()}`,
130
+ list: message.list,
131
+ num: message.num
132
+ });
133
+ } catch (error) {
134
+ throw error instanceof Error ? error : new Error('Failed to set schedule');
51
135
  }
52
- const command = encodeDeviceTimer0x30({
53
- version: commandVersion,
54
- number: message.num,
55
- list: message.list.map(_ref => {
56
- let {
57
- active,
58
- suctions,
59
- sweepMopModes,
60
- ids,
61
- cleanCounts,
62
- cycle,
63
- cisterns,
64
- time
65
- } = _ref;
66
- return {
67
- effectiveness: active,
68
- cleanMode: CLEAN_MODE_MAP[sweepMopModes[0]],
69
- fanLevel: SUCTION_MAP[suctions[0]],
70
- waterLevel: CISTERN_MAP[cisterns[0]],
71
- time: {
72
- hour: time[0],
73
- minute: time[1]
74
- },
75
- week: cycle,
76
- sweepCount: cleanCounts[0],
77
- roomIds: ids,
78
- roomNum: ids.length
79
- };
80
- })
81
- });
82
- devices.common.model.actions.device_timer.set(command);
83
- return Promise.resolve();
84
136
  }
85
137
  };
86
138
  };
@@ -1,26 +1,30 @@
1
- type Response = {
2
- reqType: string;
3
- version: string;
4
- success: boolean;
5
- errCode: number;
6
- taskId: string;
7
- ids: number[];
8
- suctions?: string[];
9
- cisterns?: string[];
10
- cleanCounts?: number[];
11
- yMops?: number[];
12
- sweepMopModes?: string[];
13
- };
14
- type TSetRoomClean = (rooms: {
1
+ import { BaseResponse, RoomCleanSetEnum } from './type';
2
+ interface RoomInfo {
15
3
  roomId: number;
16
4
  suction?: string;
17
5
  cistern: string;
18
6
  cleanTimes?: number;
19
7
  yMop?: number;
20
8
  sweepMopMode?: string;
21
- }[]) => Promise<Response> | Promise<void>;
9
+ }
10
+ interface RoomCleanResponse extends BaseResponse {
11
+ reqType: RoomCleanSetEnum.query;
12
+ ids: number[];
13
+ suctions?: string[];
14
+ cisterns?: string[];
15
+ cleanCounts?: number[];
16
+ yMops?: number[];
17
+ sweepMopModes?: string[];
18
+ }
19
+ type TSetRoomClean = (rooms: RoomInfo[]) => Promise<RoomCleanResponse>;
20
+ type TRequestSelectRoomClean = () => Promise<RoomCleanResponse>;
21
+ /**
22
+ * 自定义 Hook,用于选区清扫
23
+ * @param devId 设备ID
24
+ * @returns 包含 requestSelectRoomClean 和 setRoomClean 函数的对象
25
+ */
22
26
  export declare const useSelectRoomClean: (devId: string) => {
23
- requestSelectRoomClean: () => Promise<Response>;
27
+ requestSelectRoomClean: TRequestSelectRoomClean;
24
28
  setRoomClean: TSetRoomClean;
25
29
  };
26
30
  export {};