@ray-js/robot-data-stream 0.0.13-beta-7 → 0.0.13-beta-8
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 +2 -12
- package/lib/api/index.js +1 -172
- package/lib/api/p2pApi.d.ts +8 -27
- package/lib/api/p2pApi.js +271 -169
- package/lib/api/sweeperP2p.d.ts +54 -21
- package/lib/api/sweeperP2p.js +324 -245
- package/lib/constant.d.ts +0 -52
- package/lib/constant.js +0 -54
- package/lib/index.d.ts +11 -1
- package/lib/index.js +166 -2
- package/lib/mqtt/createCommonOptions.d.ts +15 -56
- package/lib/mqtt/createCommonOptions.js +8 -44
- package/lib/mqtt/mqttProvider.d.ts +15 -23
- package/lib/mqtt/mqttProvider.js +26 -63
- package/lib/mqtt/myError.d.ts +4 -0
- package/lib/mqtt/myError.js +6 -0
- package/lib/mqtt/promise.js +3 -8
- package/lib/mqtt/type/index.d.ts +0 -9
- package/lib/mqtt/type/index.js +0 -8
- package/lib/mqtt/type/requestType.d.ts +0 -3
- package/lib/mqtt/type/requestType.js +0 -4
- package/lib/mqtt/useDevInfo.d.ts +7 -2
- package/lib/mqtt/useDevInfo.js +9 -25
- package/lib/mqtt/useHistoryMap.d.ts +21 -13
- package/lib/mqtt/useHistoryMap.js +32 -82
- package/lib/mqtt/usePartDivision.d.ts +7 -5
- package/lib/mqtt/usePartDivision.js +16 -41
- package/lib/mqtt/usePartMerge.d.ts +7 -5
- package/lib/mqtt/usePartMerge.js +18 -36
- package/lib/mqtt/usePassword.js +28 -59
- package/lib/mqtt/useQuiteHours.d.ts +24 -9
- package/lib/mqtt/useQuiteHours.js +52 -95
- package/lib/mqtt/useResetMap.d.ts +7 -10
- package/lib/mqtt/useResetMap.js +11 -40
- package/lib/mqtt/useRoomProperty.js +16 -23
- package/lib/mqtt/useSchedule.d.ts +4 -17
- package/lib/mqtt/useSchedule.js +49 -101
- package/lib/mqtt/useSelectRoomClean.d.ts +16 -20
- package/lib/mqtt/useSelectRoomClean.js +49 -145
- package/lib/mqtt/useSpotClean.d.ts +3 -3
- package/lib/mqtt/useSpotClean.js +51 -71
- package/lib/mqtt/useVirtualArea.d.ts +9 -6
- package/lib/mqtt/useVirtualArea.js +42 -112
- package/lib/mqtt/useVirtualWall.d.ts +10 -13
- package/lib/mqtt/useVirtualWall.js +34 -97
- package/lib/mqtt/useVoice.d.ts +6 -3
- package/lib/mqtt/useVoice.js +33 -73
- package/lib/mqtt/useWifiMap.js +18 -34
- package/lib/mqtt/useZoneClean.d.ts +13 -13
- package/lib/mqtt/useZoneClean.js +76 -149
- package/lib/utils/index.d.ts +1 -20
- package/lib/utils/index.js +0 -19
- package/package.json +1 -1
- package/lib/ttt/index.d.ts +0 -153
- package/lib/ttt/index.js +0 -458
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type Response = {
|
|
2
|
+
reqType: string;
|
|
3
|
+
/**
|
|
4
|
+
* 版本号
|
|
5
|
+
*/
|
|
6
|
+
version: string;
|
|
4
7
|
/**
|
|
5
8
|
* 是否激活
|
|
6
9
|
* 0 表示未激活,1 表示激活
|
|
@@ -14,8 +17,20 @@ interface QuietHoursResponse extends BaseResponse {
|
|
|
14
17
|
* 星期几,1 表示星期一,2 表示星期二,以此类推
|
|
15
18
|
*/
|
|
16
19
|
day: number;
|
|
17
|
-
|
|
18
|
-
|
|
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: {
|
|
19
34
|
startTime: {
|
|
20
35
|
hour: number;
|
|
21
36
|
minute: number;
|
|
@@ -27,9 +42,9 @@ interface SetQuiteHoursParams {
|
|
|
27
42
|
active: number;
|
|
28
43
|
day: number;
|
|
29
44
|
version?: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
45
|
+
}) => Promise<Response> | Promise<{
|
|
46
|
+
success: boolean;
|
|
47
|
+
}>;
|
|
33
48
|
/**
|
|
34
49
|
* 自定义 Hook,用于勿扰模式
|
|
35
50
|
* @param devId 设备ID
|
|
@@ -37,6 +52,6 @@ type TRequestQuiteHours = () => Promise<QuietHoursResponse>;
|
|
|
37
52
|
*/
|
|
38
53
|
export declare const useQuiteHours: (devId: string) => {
|
|
39
54
|
setQuiteHours: TSetQuiteHours;
|
|
40
|
-
requestQuiteHours:
|
|
55
|
+
requestQuiteHours: () => Promise<Response>;
|
|
41
56
|
};
|
|
42
57
|
export {};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["startTime", "endTime"];
|
|
1
4
|
// 勿扰模式
|
|
2
5
|
import { useContext } from 'react';
|
|
3
6
|
import { createSetCommonParams } from './createCommonOptions';
|
|
@@ -6,14 +9,8 @@ import { QuietHoursEnum } from './type';
|
|
|
6
9
|
import { SingletonContext } from './mqttProvider';
|
|
7
10
|
import { encodeDoNotDisturb0x32 } from '@ray-js/robot-protocol';
|
|
8
11
|
|
|
9
|
-
// 勿扰模式响应类型
|
|
10
|
-
|
|
11
|
-
// 设置勿扰模式参数类型
|
|
12
|
-
|
|
13
12
|
// 设置勿扰模式函数类型定义
|
|
14
13
|
|
|
15
|
-
// 请求勿扰模式函数类型定义
|
|
16
|
-
|
|
17
14
|
/**
|
|
18
15
|
* 自定义 Hook,用于勿扰模式
|
|
19
16
|
* @param devId 设备ID
|
|
@@ -27,109 +24,69 @@ export const useQuiteHours = devId => {
|
|
|
27
24
|
} = useContext(SingletonContext);
|
|
28
25
|
/**
|
|
29
26
|
* 请求勿扰模式数据
|
|
30
|
-
* @returns Promise<
|
|
27
|
+
* @returns Promise<{ time: string[]; day: number; active: number }> 响应结果
|
|
31
28
|
*/
|
|
32
29
|
|
|
33
30
|
/**
|
|
34
31
|
* 设置勿扰模式
|
|
35
|
-
* @param
|
|
36
|
-
* @returns Promise<
|
|
32
|
+
* @param message 包含勿扰模式设置参数的对象
|
|
33
|
+
* @returns Promise<Response> 响应结果
|
|
37
34
|
*/
|
|
38
35
|
|
|
39
36
|
return {
|
|
40
|
-
setQuiteHours:
|
|
37
|
+
setQuiteHours: message => {
|
|
41
38
|
const {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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);
|
|
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');
|
|
91
57
|
}
|
|
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 {
|
|
121
58
|
const params = createSetCommonParams({
|
|
122
59
|
deviceId: devId,
|
|
123
|
-
reqType: QuietHoursEnum.
|
|
60
|
+
reqType: QuietHoursEnum.set,
|
|
61
|
+
message: _objectSpread({
|
|
62
|
+
time: [`${h0},${m0}`, `${h1},${m1}`]
|
|
63
|
+
}, others)
|
|
124
64
|
});
|
|
125
65
|
ty.device.sendMqttMessage(params);
|
|
126
|
-
|
|
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'));
|
|
66
|
+
return normalResolve(QuietHoursEnum.query, params.message.taskId);
|
|
132
67
|
}
|
|
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);
|
|
133
90
|
}
|
|
134
91
|
};
|
|
135
92
|
};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* @param devId 设备ID
|
|
9
|
-
* @returns 包含 setResetMap 函数的对象
|
|
10
|
-
*/
|
|
1
|
+
type TSetResetMap = () => Promise<{
|
|
2
|
+
success: boolean;
|
|
3
|
+
errCode: number;
|
|
4
|
+
reqType: string;
|
|
5
|
+
version: string;
|
|
6
|
+
taskId: string;
|
|
7
|
+
} | void>;
|
|
11
8
|
export declare const useResetMap: (devId: string) => {
|
|
12
9
|
setResetMap: TSetResetMap;
|
|
13
10
|
};
|
package/lib/mqtt/useResetMap.js
CHANGED
|
@@ -1,60 +1,31 @@
|
|
|
1
|
-
// 重置地图
|
|
2
1
|
import { useContext } from 'react';
|
|
3
2
|
import { createSetCommonParams } from './createCommonOptions';
|
|
4
3
|
import { normalResolve } from './promise';
|
|
5
4
|
import { ResetCurrMapEnum } from './type';
|
|
6
5
|
import { SingletonContext } from './mqttProvider';
|
|
7
6
|
import { encodeResetMap0x42 } from '@ray-js/robot-protocol';
|
|
8
|
-
|
|
9
|
-
// 重置地图响应类型
|
|
10
|
-
|
|
11
|
-
// 设置重置地图函数类型定义
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 自定义 Hook,用于重置地图
|
|
15
|
-
* @param devId 设备ID
|
|
16
|
-
* @returns 包含 setResetMap 函数的对象
|
|
17
|
-
*/
|
|
18
7
|
export const useResetMap = devId => {
|
|
19
8
|
const {
|
|
20
9
|
useMqtt,
|
|
21
10
|
devices,
|
|
22
11
|
commandVersion
|
|
23
12
|
} = useContext(SingletonContext);
|
|
24
|
-
|
|
25
|
-
* 重置地图
|
|
26
|
-
* @returns Promise<ResetMapResponse> 响应结果
|
|
27
|
-
*/
|
|
13
|
+
// 重置地图
|
|
28
14
|
|
|
29
15
|
return {
|
|
30
16
|
setResetMap: () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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()}`
|
|
17
|
+
if (useMqtt) {
|
|
18
|
+
const params = createSetCommonParams({
|
|
19
|
+
deviceId: devId,
|
|
20
|
+
reqType: ResetCurrMapEnum.set
|
|
54
21
|
});
|
|
55
|
-
|
|
56
|
-
|
|
22
|
+
ty.device.sendMqttMessage(params);
|
|
23
|
+
return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
|
|
57
24
|
}
|
|
25
|
+
devices.common.model.actions.command_trans.set(encodeResetMap0x42({
|
|
26
|
+
version: commandVersion
|
|
27
|
+
}));
|
|
28
|
+
return Promise.resolve();
|
|
58
29
|
}
|
|
59
30
|
};
|
|
60
31
|
};
|
|
@@ -24,12 +24,16 @@ export const useRoomProperty = devId => {
|
|
|
24
24
|
return normalResolve(RoomPropertyEnum.query, params.message.taskId);
|
|
25
25
|
},
|
|
26
26
|
setRoomProperty: message => {
|
|
27
|
-
|
|
27
|
+
const params = createSetCommonParams({
|
|
28
|
+
deviceId: devId,
|
|
29
|
+
reqType: RoomPropertyEnum.set,
|
|
30
|
+
message
|
|
31
|
+
});
|
|
28
32
|
const {
|
|
29
33
|
ids
|
|
30
34
|
} = message;
|
|
31
35
|
if (!isArray(ids) || isArray(ids) && ids.length === 0) {
|
|
32
|
-
|
|
36
|
+
return Promise.reject(new Error('ids is required'));
|
|
33
37
|
}
|
|
34
38
|
const len = ids.length;
|
|
35
39
|
const {
|
|
@@ -41,40 +45,29 @@ export const useRoomProperty = devId => {
|
|
|
41
45
|
names = new Array(len).fill('')
|
|
42
46
|
} = message;
|
|
43
47
|
if (suctions && !isArray(suctions)) {
|
|
44
|
-
|
|
48
|
+
// 设置超时定时器
|
|
49
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
45
50
|
}
|
|
46
51
|
if (cisterns && !isArray(cisterns)) {
|
|
47
|
-
|
|
52
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
48
53
|
}
|
|
49
54
|
if (cleanCounts && !isArray(cleanCounts)) {
|
|
50
|
-
|
|
55
|
+
return Promise.reject(new Error('cleanCounts is illegal'));
|
|
51
56
|
}
|
|
52
57
|
if (yMops && !isArray(yMops)) {
|
|
53
|
-
|
|
58
|
+
return Promise.reject(new Error('yMops is illegal'));
|
|
54
59
|
}
|
|
55
60
|
if (sweepMopModes && !isArray(sweepMopModes)) {
|
|
56
|
-
|
|
61
|
+
return Promise.reject(new Error('sweepMopModes is illegal'));
|
|
57
62
|
}
|
|
58
63
|
if (names && !isArray(names)) {
|
|
59
|
-
|
|
64
|
+
return Promise.reject(new Error('names is illegal'));
|
|
60
65
|
}
|
|
61
66
|
if (len !== suctions.length || len !== cisterns.length || len !== cleanCounts.length || len !== yMops.length || len !== sweepMopModes.length || len !== names.length) {
|
|
62
|
-
|
|
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');
|
|
67
|
+
return Promise.reject(new Error('The length of the parameters is inconsistent'));
|
|
77
68
|
}
|
|
69
|
+
ty.device.sendMqttMessage(params);
|
|
70
|
+
return normalResolve(RoomPropertyEnum.query, params.message.taskId);
|
|
78
71
|
}
|
|
79
72
|
};
|
|
80
73
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { 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,22 +9,9 @@ interface Schedule {
|
|
|
9
9
|
num: number;
|
|
10
10
|
version?: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
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
|
-
*/
|
|
12
|
+
type Response = BaseResponse & Schedule;
|
|
26
13
|
export declare const useSchedule: (devId: string) => {
|
|
27
|
-
requestSchedule:
|
|
28
|
-
setSchedule:
|
|
14
|
+
requestSchedule: () => Promise<Response>;
|
|
15
|
+
setSchedule: (message: Schedule) => Promise<Response | void>;
|
|
29
16
|
};
|
|
30
17
|
export {};
|
package/lib/mqtt/useSchedule.js
CHANGED
|
@@ -8,51 +8,39 @@ 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
|
-
*/
|
|
26
13
|
export const useSchedule = devId => {
|
|
27
14
|
const {
|
|
28
15
|
useMqtt,
|
|
29
16
|
devices,
|
|
30
17
|
commandVersion
|
|
31
18
|
} = useContext(SingletonContext);
|
|
32
|
-
|
|
33
|
-
* 请求定时数据
|
|
34
|
-
* @param message 可选参数,包含版本号
|
|
35
|
-
* @returns Promise<ScheduleResponse> 响应结果
|
|
36
|
-
*/
|
|
19
|
+
// 请求定时数据
|
|
37
20
|
|
|
38
|
-
|
|
39
|
-
* 设置定时数据
|
|
40
|
-
* @param message 定时任务数据
|
|
41
|
-
* @returns Promise<ScheduleResponse> 响应结果
|
|
42
|
-
*/
|
|
21
|
+
// 下发定时数据
|
|
43
22
|
|
|
44
23
|
return {
|
|
45
24
|
requestSchedule: function () {
|
|
46
25
|
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
47
26
|
version: '1.0.0'
|
|
48
27
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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) {
|
|
53
41
|
const params = createSetCommonParams({
|
|
54
42
|
deviceId: devId,
|
|
55
|
-
reqType: ScheduleEnum.
|
|
43
|
+
reqType: ScheduleEnum.set,
|
|
56
44
|
message
|
|
57
45
|
});
|
|
58
46
|
ty.device.sendMqttMessage(params);
|
|
@@ -60,79 +48,39 @@ export const useSchedule = devId => {
|
|
|
60
48
|
taskId
|
|
61
49
|
} = params.message;
|
|
62
50
|
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');
|
|
135
51
|
}
|
|
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();
|
|
136
84
|
}
|
|
137
85
|
};
|
|
138
86
|
};
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
yMop?: number;
|
|
8
|
-
sweepMopMode?: string;
|
|
9
|
-
}
|
|
10
|
-
interface RoomCleanResponse extends BaseResponse {
|
|
11
|
-
reqType: RoomCleanSetEnum.query;
|
|
1
|
+
type Response = {
|
|
2
|
+
reqType: string;
|
|
3
|
+
version: string;
|
|
4
|
+
success: boolean;
|
|
5
|
+
errCode: number;
|
|
6
|
+
taskId: string;
|
|
12
7
|
ids: number[];
|
|
13
8
|
suctions?: string[];
|
|
14
9
|
cisterns?: string[];
|
|
15
10
|
cleanCounts?: number[];
|
|
16
11
|
yMops?: number[];
|
|
17
12
|
sweepMopModes?: string[];
|
|
18
|
-
}
|
|
19
|
-
type TSetRoomClean = (rooms:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
};
|
|
14
|
+
type TSetRoomClean = (rooms: {
|
|
15
|
+
roomId: number;
|
|
16
|
+
suction?: string;
|
|
17
|
+
cistern: string;
|
|
18
|
+
cleanTimes?: number;
|
|
19
|
+
yMop?: number;
|
|
20
|
+
sweepMopMode?: string;
|
|
21
|
+
}[]) => Promise<Response> | Promise<void>;
|
|
26
22
|
export declare const useSelectRoomClean: (devId: string) => {
|
|
27
|
-
requestSelectRoomClean:
|
|
23
|
+
requestSelectRoomClean: () => Promise<Response>;
|
|
28
24
|
setRoomClean: TSetRoomClean;
|
|
29
25
|
};
|
|
30
26
|
export {};
|