@ray-js/robot-data-stream 0.0.13-beta-5 → 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.
- package/lib/api/index.d.ts +12 -2
- package/lib/api/index.js +172 -1
- package/lib/api/p2pApi.d.ts +27 -8
- package/lib/api/p2pApi.js +169 -271
- package/lib/api/sweeperP2p.d.ts +23 -49
- package/lib/api/sweeperP2p.js +248 -311
- package/lib/constant.d.ts +52 -0
- package/lib/constant.js +54 -0
- package/lib/index.d.ts +1 -10
- package/lib/index.js +2 -165
- package/lib/mqtt/createCommonOptions.d.ts +56 -15
- package/lib/mqtt/createCommonOptions.js +44 -8
- package/lib/mqtt/index.d.ts +2 -1
- package/lib/mqtt/index.js +2 -1
- package/lib/mqtt/mqttProvider.d.ts +23 -15
- package/lib/mqtt/mqttProvider.js +63 -26
- package/lib/mqtt/promise.js +8 -3
- package/lib/mqtt/type/index.d.ts +14 -0
- package/lib/mqtt/type/index.js +14 -0
- package/lib/mqtt/type/requestType.d.ts +8 -0
- package/lib/mqtt/type/requestType.js +10 -0
- package/lib/mqtt/useDevInfo.d.ts +2 -7
- package/lib/mqtt/useDevInfo.js +25 -9
- package/lib/mqtt/useHistoryMap.d.ts +13 -21
- package/lib/mqtt/useHistoryMap.js +82 -32
- package/lib/mqtt/usePartDivision.d.ts +5 -7
- package/lib/mqtt/usePartDivision.js +41 -16
- package/lib/mqtt/usePartMerge.d.ts +5 -7
- package/lib/mqtt/usePartMerge.js +36 -18
- package/lib/mqtt/usePassword.js +59 -28
- package/lib/mqtt/useQuiteHours.d.ts +9 -24
- package/lib/mqtt/useQuiteHours.js +95 -52
- package/lib/mqtt/useResetMap.d.ts +10 -7
- package/lib/mqtt/useResetMap.js +40 -11
- package/lib/mqtt/useRoomProperty.js +23 -16
- package/lib/mqtt/useSchedule.d.ts +17 -4
- package/lib/mqtt/useSchedule.js +101 -49
- package/lib/mqtt/useSelectRoomClean.d.ts +20 -16
- package/lib/mqtt/useSelectRoomClean.js +145 -49
- package/lib/mqtt/useSpotClean.d.ts +3 -3
- package/lib/mqtt/useSpotClean.js +72 -50
- package/lib/mqtt/useVirtualArea.d.ts +6 -9
- package/lib/mqtt/useVirtualArea.js +112 -42
- package/lib/mqtt/useVirtualWall.d.ts +13 -10
- package/lib/mqtt/useVirtualWall.js +97 -34
- package/lib/mqtt/useVoice.d.ts +3 -6
- package/lib/mqtt/useVoice.js +73 -33
- package/lib/mqtt/useWifiMap.d.ts +8 -0
- package/lib/mqtt/useWifiMap.js +53 -0
- package/lib/mqtt/useZoneClean.d.ts +13 -13
- package/lib/mqtt/useZoneClean.js +149 -76
- package/lib/ttt/index.d.ts +153 -0
- package/lib/ttt/index.js +458 -0
- package/lib/utils/index.d.ts +20 -1
- package/lib/utils/index.js +19 -0
- package/package.json +1 -1
- package/lib/mqtt/myError.d.ts +0 -4
- package/lib/mqtt/myError.js +0 -6
package/lib/mqtt/usePassword.js
CHANGED
|
@@ -17,13 +17,22 @@ export const usePassword = devId => {
|
|
|
17
17
|
|
|
18
18
|
return {
|
|
19
19
|
requestPassword: () => {
|
|
20
|
-
if (!useMqtt)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
if (!useMqtt) {
|
|
21
|
+
return Promise.reject(new Error('useMqtt is not used'));
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const params = createSetCommonParams({
|
|
25
|
+
deviceId: devId,
|
|
26
|
+
reqType: PasswordEnum.query
|
|
27
|
+
});
|
|
28
|
+
ty.device.sendMqttMessage(params);
|
|
29
|
+
const {
|
|
30
|
+
taskId
|
|
31
|
+
} = params.message;
|
|
32
|
+
return normalResolve(PasswordEnum.query, taskId);
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return Promise.reject(error instanceof Error ? error : new Error('Failed to request password'));
|
|
35
|
+
}
|
|
27
36
|
},
|
|
28
37
|
setPassword: _ref => {
|
|
29
38
|
let {
|
|
@@ -31,33 +40,55 @@ export const usePassword = devId => {
|
|
|
31
40
|
oldPassword,
|
|
32
41
|
taskId
|
|
33
42
|
} = _ref;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
// 参数验证
|
|
44
|
+
if (!password || typeof password !== 'string') {
|
|
45
|
+
throw new Error('password is required and must be a string');
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const params = createSetCommonParams({
|
|
49
|
+
deviceId: devId,
|
|
50
|
+
reqType: PasswordEnum.set,
|
|
51
|
+
message: {
|
|
52
|
+
taskId: taskId !== null && taskId !== void 0 ? taskId : String(Date.now()),
|
|
53
|
+
password: md5(password).toString(),
|
|
54
|
+
oldPassword: oldPassword ? md5(oldPassword).toString() : undefined
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
ty.device.sendMqttMessage(params);
|
|
58
|
+
const {
|
|
59
|
+
taskId: finalTaskId
|
|
60
|
+
} = params.message;
|
|
61
|
+
return normalResolve(PasswordEnum.rst, finalTaskId);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
throw error instanceof Error ? error : new Error('Failed to set password');
|
|
64
|
+
}
|
|
45
65
|
},
|
|
46
66
|
checkPassword: _ref2 => {
|
|
47
67
|
let {
|
|
48
68
|
password,
|
|
49
69
|
taskId
|
|
50
70
|
} = _ref2;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
// 参数验证
|
|
72
|
+
if (!password || typeof password !== 'string') {
|
|
73
|
+
throw new Error('password is required and must be a string');
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const params = createSetCommonParams({
|
|
77
|
+
deviceId: devId,
|
|
78
|
+
reqType: PasswordEnum.check,
|
|
79
|
+
message: {
|
|
80
|
+
taskId: taskId !== null && taskId !== void 0 ? taskId : String(Date.now()),
|
|
81
|
+
password: md5(password).toString()
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
ty.device.sendMqttMessage(params);
|
|
85
|
+
const {
|
|
86
|
+
taskId: finalTaskId
|
|
87
|
+
} = params.message;
|
|
88
|
+
return normalResolve(PasswordEnum.checkRst, finalTaskId);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
throw error instanceof Error ? error : new Error('Failed to check password');
|
|
91
|
+
}
|
|
61
92
|
}
|
|
62
93
|
};
|
|
63
94
|
};
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* 版本号
|
|
5
|
-
*/
|
|
6
|
-
version: string;
|
|
1
|
+
import { BaseResponse, QuietHoursEnum } from './type';
|
|
2
|
+
interface QuietHoursResponse extends BaseResponse {
|
|
3
|
+
reqType: QuietHoursEnum.query;
|
|
7
4
|
/**
|
|
8
5
|
* 是否激活
|
|
9
6
|
* 0 表示未激活,1 表示激活
|
|
@@ -17,20 +14,8 @@ type Response = {
|
|
|
17
14
|
* 星期几,1 表示星期一,2 表示星期二,以此类推
|
|
18
15
|
*/
|
|
19
16
|
day: number;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
success: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* 错误代码,0 表示无错误
|
|
26
|
-
*/
|
|
27
|
-
errCode: number;
|
|
28
|
-
/**
|
|
29
|
-
* 任务ID
|
|
30
|
-
*/
|
|
31
|
-
taskId: string;
|
|
32
|
-
};
|
|
33
|
-
type TSetQuiteHours = (params: {
|
|
17
|
+
}
|
|
18
|
+
interface SetQuiteHoursParams {
|
|
34
19
|
startTime: {
|
|
35
20
|
hour: number;
|
|
36
21
|
minute: number;
|
|
@@ -42,9 +27,9 @@ type TSetQuiteHours = (params: {
|
|
|
42
27
|
active: number;
|
|
43
28
|
day: number;
|
|
44
29
|
version?: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
}
|
|
31
|
+
type TSetQuiteHours = (params: SetQuiteHoursParams) => Promise<QuietHoursResponse>;
|
|
32
|
+
type TRequestQuiteHours = () => Promise<QuietHoursResponse>;
|
|
48
33
|
/**
|
|
49
34
|
* 自定义 Hook,用于勿扰模式
|
|
50
35
|
* @param devId 设备ID
|
|
@@ -52,6 +37,6 @@ type TSetQuiteHours = (params: {
|
|
|
52
37
|
*/
|
|
53
38
|
export declare const useQuiteHours: (devId: string) => {
|
|
54
39
|
setQuiteHours: TSetQuiteHours;
|
|
55
|
-
requestQuiteHours:
|
|
40
|
+
requestQuiteHours: TRequestQuiteHours;
|
|
56
41
|
};
|
|
57
42
|
export {};
|
|
@@ -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<
|
|
30
|
+
* @returns Promise<QuietHoursResponse> 响应结果
|
|
28
31
|
*/
|
|
29
32
|
|
|
30
33
|
/**
|
|
31
34
|
* 设置勿扰模式
|
|
32
|
-
* @param
|
|
33
|
-
* @returns Promise<
|
|
35
|
+
* @param params 包含勿扰模式设置参数的对象
|
|
36
|
+
* @returns Promise<QuietHoursResponse> 响应结果
|
|
34
37
|
*/
|
|
35
38
|
|
|
36
39
|
return {
|
|
37
|
-
setQuiteHours:
|
|
40
|
+
setQuiteHours: params => {
|
|
38
41
|
const {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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.
|
|
61
|
-
message: _objectSpread({
|
|
62
|
-
time: [`${h0},${m0}`, `${h1},${m1}`]
|
|
63
|
-
}, others)
|
|
123
|
+
reqType: QuietHoursEnum.query
|
|
64
124
|
});
|
|
65
125
|
ty.device.sendMqttMessage(params);
|
|
66
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
};
|
package/lib/mqtt/useResetMap.js
CHANGED
|
@@ -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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
47
|
+
throw new Error('cisterns is illegal');
|
|
53
48
|
}
|
|
54
49
|
if (cleanCounts && !isArray(cleanCounts)) {
|
|
55
|
-
|
|
50
|
+
throw new Error('cleanCounts is illegal');
|
|
56
51
|
}
|
|
57
52
|
if (yMops && !isArray(yMops)) {
|
|
58
|
-
|
|
53
|
+
throw new Error('yMops is illegal');
|
|
59
54
|
}
|
|
60
55
|
if (sweepMopModes && !isArray(sweepMopModes)) {
|
|
61
|
-
|
|
56
|
+
throw new Error('sweepMopModes is illegal');
|
|
62
57
|
}
|
|
63
58
|
if (names && !isArray(names)) {
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
15
|
-
setSchedule:
|
|
27
|
+
requestSchedule: TRequestSchedule;
|
|
28
|
+
setSchedule: TSetSchedule;
|
|
16
29
|
};
|
|
17
30
|
export {};
|