@ray-js/robot-data-stream 0.0.10-beta-11 → 0.0.10-beta-12
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/deleteMultipleMapFile.d.ts +1 -0
- package/lib/api/deleteMultipleMapFile.js +9 -0
- package/lib/api/request.d.ts +2 -0
- package/lib/api/request.js +29 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +4 -2
- package/lib/mqtt/createCommonOptions.d.ts +24 -0
- package/lib/mqtt/createCommonOptions.js +28 -0
- package/lib/mqtt/index.d.ts +17 -0
- package/lib/mqtt/index.js +17 -0
- package/lib/mqtt/mqttProvider.d.ts +6 -0
- package/lib/mqtt/mqttProvider.js +61 -0
- package/lib/mqtt/myError.d.ts +4 -0
- package/lib/mqtt/myError.js +6 -0
- package/lib/mqtt/promise.d.ts +13 -0
- package/lib/mqtt/promise.js +47 -0
- package/lib/mqtt/type/index.d.ts +26 -0
- package/lib/mqtt/type/index.js +11 -0
- package/lib/mqtt/type/requestType.d.ts +67 -0
- package/lib/mqtt/type/requestType.js +101 -0
- package/lib/mqtt/useDevInfo.d.ts +4 -0
- package/lib/mqtt/useDevInfo.js +22 -0
- package/lib/mqtt/useHistoryMap.d.ts +7 -0
- package/lib/mqtt/useHistoryMap.js +62 -0
- package/lib/mqtt/usePartDivision.d.ts +12 -0
- package/lib/mqtt/usePartDivision.js +38 -0
- package/lib/mqtt/usePartMerge.d.ts +11 -0
- package/lib/mqtt/usePartMerge.js +33 -0
- package/lib/mqtt/usePassword.d.ts +17 -0
- package/lib/mqtt/usePassword.js +56 -0
- package/lib/mqtt/useQuiteHours.d.ts +24 -0
- package/lib/mqtt/useQuiteHours.js +71 -0
- package/lib/mqtt/useResetMap.d.ts +3 -0
- package/lib/mqtt/useResetMap.js +17 -0
- package/lib/mqtt/useRoomProperty.d.ts +12 -0
- package/lib/mqtt/useRoomProperty.js +66 -0
- package/lib/mqtt/useSchedule.d.ts +16 -0
- package/lib/mqtt/useSchedule.js +38 -0
- package/lib/mqtt/useSelectRoomClean.d.ts +11 -0
- package/lib/mqtt/useSelectRoomClean.js +70 -0
- package/lib/mqtt/useSpotClean.d.ts +14 -0
- package/lib/mqtt/useSpotClean.js +81 -0
- package/lib/mqtt/useVirtualArea.d.ts +4 -0
- package/lib/mqtt/useVirtualArea.js +29 -0
- package/lib/mqtt/useVirtualWall.d.ts +4 -0
- package/lib/mqtt/useVirtualWall.js +36 -0
- package/lib/mqtt/useVoice.d.ts +18 -0
- package/lib/mqtt/useVoice.js +66 -0
- package/lib/mqtt/useZoneClean.d.ts +14 -0
- package/lib/mqtt/useZoneClean.js +81 -0
- package/lib/utils/index.d.ts +8 -0
- package/lib/utils/index.js +47 -0
- package/package.json +5 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
type TSetPartMerge = (ids: number[]) => PromiseWithRejection;
|
|
3
|
+
/**
|
|
4
|
+
* 自定义 Hook,用于分区合并
|
|
5
|
+
* @param devId 设备ID
|
|
6
|
+
* @returns 包含 setPartMerge 函数的对象
|
|
7
|
+
*/
|
|
8
|
+
export declare const usePartMerge: (devId: string) => {
|
|
9
|
+
setPartMerge: TSetPartMerge;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// 分区合并
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { PartMergeEnum } from './type';
|
|
5
|
+
|
|
6
|
+
// 设置分区合并函数类型定义
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 自定义 Hook,用于分区合并
|
|
10
|
+
* @param devId 设备ID
|
|
11
|
+
* @returns 包含 setPartMerge 函数的对象
|
|
12
|
+
*/
|
|
13
|
+
export const usePartMerge = devId => {
|
|
14
|
+
/**
|
|
15
|
+
* 设置分区合并
|
|
16
|
+
* @param ids 要合并的分区ID数组
|
|
17
|
+
* @returns Promise<Response> 响应结果
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
setPartMerge: ids => {
|
|
22
|
+
const params = createSetCommonParams({
|
|
23
|
+
deviceId: devId,
|
|
24
|
+
reqType: PartMergeEnum.set,
|
|
25
|
+
message: {
|
|
26
|
+
ids
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
ty.device.sendMqttMessage(params);
|
|
30
|
+
return normalResolve(PartMergeEnum.query, params.message.taskId);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
type TRequestPassword = () => PromiseWithRejection;
|
|
3
|
+
type TSetPassword = (params: {
|
|
4
|
+
password: string;
|
|
5
|
+
oldPassword?: string;
|
|
6
|
+
taskId?: string;
|
|
7
|
+
}) => PromiseWithRejection;
|
|
8
|
+
type TCheckPassword = (params: {
|
|
9
|
+
password: string;
|
|
10
|
+
taskId?: string;
|
|
11
|
+
}) => PromiseWithRejection;
|
|
12
|
+
export declare const usePassword: (devId: string) => {
|
|
13
|
+
requestPassword: TRequestPassword;
|
|
14
|
+
setPassword: TSetPassword;
|
|
15
|
+
checkPassword: TCheckPassword;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import md5 from 'crypto-js/md5';
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { PasswordEnum } from './type';
|
|
5
|
+
export const usePassword = devId => {
|
|
6
|
+
// 请求密码状态
|
|
7
|
+
|
|
8
|
+
// 设置密码
|
|
9
|
+
|
|
10
|
+
// 校验密码
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
requestPassword: () => {
|
|
14
|
+
const params = createSetCommonParams({
|
|
15
|
+
deviceId: devId,
|
|
16
|
+
reqType: PasswordEnum.query
|
|
17
|
+
});
|
|
18
|
+
ty.device.sendMqttMessage(params);
|
|
19
|
+
return normalResolve(PasswordEnum.query, params.message.taskId);
|
|
20
|
+
},
|
|
21
|
+
setPassword: _ref => {
|
|
22
|
+
let {
|
|
23
|
+
password,
|
|
24
|
+
oldPassword,
|
|
25
|
+
taskId
|
|
26
|
+
} = _ref;
|
|
27
|
+
const params = createSetCommonParams({
|
|
28
|
+
deviceId: devId,
|
|
29
|
+
reqType: PasswordEnum.set,
|
|
30
|
+
message: {
|
|
31
|
+
taskId: taskId !== null && taskId !== void 0 ? taskId : String(Date.now()),
|
|
32
|
+
password: md5(password).toString(),
|
|
33
|
+
oldPassword: oldPassword ? md5(oldPassword).toString() : undefined
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
ty.device.sendMqttMessage(params);
|
|
37
|
+
return normalResolve(PasswordEnum.rst, params.message.taskId);
|
|
38
|
+
},
|
|
39
|
+
checkPassword: _ref2 => {
|
|
40
|
+
let {
|
|
41
|
+
password,
|
|
42
|
+
taskId
|
|
43
|
+
} = _ref2;
|
|
44
|
+
const params = createSetCommonParams({
|
|
45
|
+
deviceId: devId,
|
|
46
|
+
reqType: PasswordEnum.check,
|
|
47
|
+
message: {
|
|
48
|
+
taskId: taskId !== null && taskId !== void 0 ? taskId : String(Date.now()),
|
|
49
|
+
password: md5(password).toString()
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
ty.device.sendMqttMessage(params);
|
|
53
|
+
return normalResolve(PasswordEnum.checkRst, params.message.taskId);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
type TSetQuiteHours = (params: {
|
|
3
|
+
startTime: {
|
|
4
|
+
hour: number;
|
|
5
|
+
minute: number;
|
|
6
|
+
};
|
|
7
|
+
endTime: {
|
|
8
|
+
hour: number;
|
|
9
|
+
minute: number;
|
|
10
|
+
};
|
|
11
|
+
active: number;
|
|
12
|
+
day: number;
|
|
13
|
+
version?: string;
|
|
14
|
+
}) => PromiseWithRejection;
|
|
15
|
+
/**
|
|
16
|
+
* 自定义 Hook,用于勿扰模式
|
|
17
|
+
* @param devId 设备ID
|
|
18
|
+
* @returns 包含 setQuiteHours 和 requestQuiteHours 函数的对象
|
|
19
|
+
*/
|
|
20
|
+
export declare const useQuiteHours: (devId: string) => {
|
|
21
|
+
setQuiteHours: TSetQuiteHours;
|
|
22
|
+
requestQuiteHours: () => PromiseWithRejection;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["startTime", "endTime"];
|
|
4
|
+
// 勿扰模式
|
|
5
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
6
|
+
import { normalResolve } from './promise';
|
|
7
|
+
import { QuietHoursEnum } from './type';
|
|
8
|
+
|
|
9
|
+
// 设置勿扰模式函数类型定义
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 自定义 Hook,用于勿扰模式
|
|
13
|
+
* @param devId 设备ID
|
|
14
|
+
* @returns 包含 setQuiteHours 和 requestQuiteHours 函数的对象
|
|
15
|
+
*/
|
|
16
|
+
export const useQuiteHours = devId => {
|
|
17
|
+
/**
|
|
18
|
+
* 请求勿扰模式数据
|
|
19
|
+
* @returns Promise<{ time: string[]; day: number; active: number }> 响应结果
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 设置勿扰模式
|
|
24
|
+
* @param message 包含勿扰模式设置参数的对象
|
|
25
|
+
* @returns Promise<Response> 响应结果
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
setQuiteHours: message => {
|
|
30
|
+
const {
|
|
31
|
+
startTime,
|
|
32
|
+
endTime
|
|
33
|
+
} = message,
|
|
34
|
+
others = _objectWithoutProperties(message, _excluded);
|
|
35
|
+
if (!startTime || !endTime) {
|
|
36
|
+
throw new Error('Invalid time');
|
|
37
|
+
}
|
|
38
|
+
const {
|
|
39
|
+
hour: h0,
|
|
40
|
+
minute: m0
|
|
41
|
+
} = startTime;
|
|
42
|
+
const {
|
|
43
|
+
hour: h1,
|
|
44
|
+
minute: m1
|
|
45
|
+
} = endTime;
|
|
46
|
+
if (h0 > 23 || h0 < 0 || h1 > 23 || h1 < 0 || m0 > 59 || m0 < 0 || m1 > 59 || m1 < 0) {
|
|
47
|
+
throw new Error('Invalid time');
|
|
48
|
+
}
|
|
49
|
+
const params = createSetCommonParams({
|
|
50
|
+
deviceId: devId,
|
|
51
|
+
reqType: QuietHoursEnum.set,
|
|
52
|
+
message: _objectSpread({
|
|
53
|
+
time: [`${h0},${m0}`, `${h1},${m1}`]
|
|
54
|
+
}, others)
|
|
55
|
+
});
|
|
56
|
+
ty.device.sendMqttMessage(params);
|
|
57
|
+
return normalResolve(QuietHoursEnum.query, params.message.taskId);
|
|
58
|
+
},
|
|
59
|
+
requestQuiteHours: () => {
|
|
60
|
+
const params = createSetCommonParams({
|
|
61
|
+
deviceId: devId,
|
|
62
|
+
reqType: QuietHoursEnum.query
|
|
63
|
+
});
|
|
64
|
+
ty.device.sendMqttMessage(params);
|
|
65
|
+
const {
|
|
66
|
+
taskId
|
|
67
|
+
} = params.message;
|
|
68
|
+
return normalResolve(QuietHoursEnum.query, taskId);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
2
|
+
import { normalResolve } from './promise';
|
|
3
|
+
import { ResetCurrMapEnum } from './type';
|
|
4
|
+
export const useResetMap = devId => {
|
|
5
|
+
// 重置地图
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
setResetMap: () => {
|
|
9
|
+
const params = createSetCommonParams({
|
|
10
|
+
deviceId: devId,
|
|
11
|
+
reqType: ResetCurrMapEnum.set
|
|
12
|
+
});
|
|
13
|
+
ty.device.sendMqttMessage(params);
|
|
14
|
+
return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
import { BaseResponse, RoomPreference } from './type';
|
|
3
|
+
type Response = BaseResponse & RoomPreference & {
|
|
4
|
+
num: number;
|
|
5
|
+
mapId: number;
|
|
6
|
+
};
|
|
7
|
+
type TSetRoomProperty = (message: Pick<Response, 'num' | 'suctions' | 'cisterns' | 'floorTypes' | 'names' | 'orders' | 'yMops' | 'sweepMopModes' | 'cleanCounts' | 'ids'>) => Promise<RoomPreference>;
|
|
8
|
+
export declare const useRoomProperty: (devId: string) => {
|
|
9
|
+
requestRoomProperty: () => PromiseWithRejection;
|
|
10
|
+
setRoomProperty: TSetRoomProperty;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { isArray } from 'lodash-es';
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { RoomPropertyEnum } from './type';
|
|
5
|
+
export const useRoomProperty = devId => {
|
|
6
|
+
// 请求房间属性
|
|
7
|
+
|
|
8
|
+
// 设置房间属性
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
requestRoomProperty: () => {
|
|
12
|
+
const params = createSetCommonParams({
|
|
13
|
+
deviceId: devId,
|
|
14
|
+
reqType: RoomPropertyEnum.query
|
|
15
|
+
});
|
|
16
|
+
ty.device.sendMqttMessage(params);
|
|
17
|
+
return normalResolve(RoomPropertyEnum.query, params.message.taskId);
|
|
18
|
+
},
|
|
19
|
+
setRoomProperty: message => {
|
|
20
|
+
const params = createSetCommonParams({
|
|
21
|
+
deviceId: devId,
|
|
22
|
+
reqType: RoomPropertyEnum.set,
|
|
23
|
+
message
|
|
24
|
+
});
|
|
25
|
+
const {
|
|
26
|
+
ids
|
|
27
|
+
} = message;
|
|
28
|
+
if (!isArray(ids) || isArray(ids) && ids.length === 0) {
|
|
29
|
+
return Promise.reject(new Error('ids is required'));
|
|
30
|
+
}
|
|
31
|
+
const len = ids.length;
|
|
32
|
+
const {
|
|
33
|
+
suctions = new Array(len).fill('closed'),
|
|
34
|
+
cisterns = new Array(len).fill('closed'),
|
|
35
|
+
cleanCounts = new Array(len).fill(1),
|
|
36
|
+
yMops = new Array(len).fill(-1),
|
|
37
|
+
sweepMopModes = new Array(len).fill('only_sweep'),
|
|
38
|
+
names = new Array(len).fill('')
|
|
39
|
+
} = message;
|
|
40
|
+
if (suctions && !isArray(suctions)) {
|
|
41
|
+
// 设置超时定时器
|
|
42
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
43
|
+
}
|
|
44
|
+
if (cisterns && !isArray(cisterns)) {
|
|
45
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
46
|
+
}
|
|
47
|
+
if (cleanCounts && !isArray(cleanCounts)) {
|
|
48
|
+
return Promise.reject(new Error('cleanCounts is illegal'));
|
|
49
|
+
}
|
|
50
|
+
if (yMops && !isArray(yMops)) {
|
|
51
|
+
return Promise.reject(new Error('yMops is illegal'));
|
|
52
|
+
}
|
|
53
|
+
if (sweepMopModes && !isArray(sweepMopModes)) {
|
|
54
|
+
return Promise.reject(new Error('sweepMopModes is illegal'));
|
|
55
|
+
}
|
|
56
|
+
if (names && !isArray(names)) {
|
|
57
|
+
return Promise.reject(new Error('names is illegal'));
|
|
58
|
+
}
|
|
59
|
+
if (len !== suctions.length || len !== cisterns.length || len !== cleanCounts.length || len !== yMops.length || len !== sweepMopModes.length || len !== names.length) {
|
|
60
|
+
return Promise.reject(new Error('The length of the parameters is inconsistent'));
|
|
61
|
+
}
|
|
62
|
+
ty.device.sendMqttMessage(params);
|
|
63
|
+
return normalResolve(RoomPropertyEnum.query, params.message.taskId);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
import { RoomPreference } from './type';
|
|
3
|
+
type ScheduleItem = Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes' | 'ids'> & {
|
|
4
|
+
active: number;
|
|
5
|
+
cycle: number[];
|
|
6
|
+
time: number[];
|
|
7
|
+
};
|
|
8
|
+
interface Schedule {
|
|
9
|
+
list: Array<ScheduleItem>;
|
|
10
|
+
num: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const useSchedule: (devId: string) => {
|
|
13
|
+
requestSchedule: () => PromiseWithRejection;
|
|
14
|
+
setSchedule: (message: Schedule) => PromiseWithRejection;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// 定时
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { ScheduleEnum } from './type';
|
|
5
|
+
|
|
6
|
+
// 定时任务
|
|
7
|
+
|
|
8
|
+
export const useSchedule = devId => {
|
|
9
|
+
// 请求定时数据
|
|
10
|
+
|
|
11
|
+
// 下发定时数据
|
|
12
|
+
|
|
13
|
+
return {
|
|
14
|
+
requestSchedule: () => {
|
|
15
|
+
const params = createSetCommonParams({
|
|
16
|
+
deviceId: devId,
|
|
17
|
+
reqType: ScheduleEnum.query
|
|
18
|
+
});
|
|
19
|
+
ty.device.sendMqttMessage(params);
|
|
20
|
+
const {
|
|
21
|
+
taskId
|
|
22
|
+
} = params.message;
|
|
23
|
+
return normalResolve(ScheduleEnum.query, taskId);
|
|
24
|
+
},
|
|
25
|
+
setSchedule: message => {
|
|
26
|
+
const params = createSetCommonParams({
|
|
27
|
+
deviceId: devId,
|
|
28
|
+
reqType: ScheduleEnum.set,
|
|
29
|
+
message
|
|
30
|
+
});
|
|
31
|
+
ty.device.sendMqttMessage(params);
|
|
32
|
+
const {
|
|
33
|
+
taskId
|
|
34
|
+
} = params.message;
|
|
35
|
+
return normalResolve(ScheduleEnum.query, taskId);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const useSelectRoomClean: (devId: string) => {
|
|
2
|
+
requestSelectRoomClean: () => import("./promise").PromiseWithRejection;
|
|
3
|
+
setRoomClean: (message: {
|
|
4
|
+
ids: number[];
|
|
5
|
+
suctions?: string[] | undefined;
|
|
6
|
+
cisterns?: string[] | undefined;
|
|
7
|
+
cleanCounts?: number[] | undefined;
|
|
8
|
+
yMops?: number[] | undefined;
|
|
9
|
+
sweepMopModes?: string[] | undefined;
|
|
10
|
+
}) => Promise<never> | import("./promise").PromiseWithRejection;
|
|
11
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// 选区清扫
|
|
2
|
+
import { isArray } from 'lodash-es';
|
|
3
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
4
|
+
import { RoomCleanSetEnum } from './type';
|
|
5
|
+
import { normalResolve } from './promise';
|
|
6
|
+
export const useSelectRoomClean = devId => {
|
|
7
|
+
// 请求选区清扫信息
|
|
8
|
+
|
|
9
|
+
// 设置选区清扫
|
|
10
|
+
// 选区清扫的清扫属性,当全局模式下使用全局的清扫属性,当自定义模式下,使用房间自定义的清扫属性
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
requestSelectRoomClean: () => {
|
|
14
|
+
const params = createSetCommonParams({
|
|
15
|
+
deviceId: devId,
|
|
16
|
+
reqType: RoomCleanSetEnum.query
|
|
17
|
+
});
|
|
18
|
+
ty.device.sendMqttMessage(params);
|
|
19
|
+
return normalResolve(RoomCleanSetEnum.query, params.message.taskId);
|
|
20
|
+
},
|
|
21
|
+
setRoomClean: message => {
|
|
22
|
+
const {
|
|
23
|
+
ids
|
|
24
|
+
} = message;
|
|
25
|
+
if (!isArray(ids) || isArray(ids) && ids.length === 0) {
|
|
26
|
+
return Promise.reject(new Error('ids is required'));
|
|
27
|
+
}
|
|
28
|
+
const num = ids.length;
|
|
29
|
+
const {
|
|
30
|
+
suctions = new Array(num).fill(''),
|
|
31
|
+
cisterns = new Array(num).fill(''),
|
|
32
|
+
cleanCounts = new Array(num).fill(1),
|
|
33
|
+
yMops = new Array(num).fill(-1),
|
|
34
|
+
sweepMopModes = new Array(num).fill('only_sweep')
|
|
35
|
+
} = message;
|
|
36
|
+
if (suctions && !isArray(suctions)) {
|
|
37
|
+
return Promise.reject(new Error('suctions is illegal'));
|
|
38
|
+
}
|
|
39
|
+
if (cisterns && !isArray(cisterns)) {
|
|
40
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
41
|
+
}
|
|
42
|
+
if (cleanCounts && !isArray(cleanCounts)) {
|
|
43
|
+
return Promise.reject(new Error('cleanCounts is illegal'));
|
|
44
|
+
}
|
|
45
|
+
if (yMops && !isArray(yMops)) {
|
|
46
|
+
return Promise.reject(new Error('yMops is illegal'));
|
|
47
|
+
}
|
|
48
|
+
if (sweepMopModes && !isArray(sweepMopModes)) {
|
|
49
|
+
return Promise.reject(new Error('sweepMopModes is illegal'));
|
|
50
|
+
}
|
|
51
|
+
if (num !== suctions.length || num !== cisterns.length || num !== cleanCounts.length || num !== yMops.length || num !== sweepMopModes.length) {
|
|
52
|
+
return Promise.reject(new Error('The length of the parameters is inconsistent'));
|
|
53
|
+
}
|
|
54
|
+
const params = createSetCommonParams({
|
|
55
|
+
deviceId: devId,
|
|
56
|
+
reqType: RoomCleanSetEnum.set,
|
|
57
|
+
message: {
|
|
58
|
+
ids,
|
|
59
|
+
suctions,
|
|
60
|
+
cisterns,
|
|
61
|
+
cleanCounts,
|
|
62
|
+
yMops,
|
|
63
|
+
sweepMopModes
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
ty.device.sendMqttMessage(params);
|
|
67
|
+
return normalResolve(RoomCleanSetEnum.query, params.message.taskId);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RoomPreference } from './type';
|
|
2
|
+
type TSetSpotClean = (message: Partial<Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes'>> & {
|
|
3
|
+
polygons: string[];
|
|
4
|
+
names?: string[];
|
|
5
|
+
}) => Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* 定点清扫
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare const useSpotClean: (devId: string) => {
|
|
11
|
+
requestSpotClean: () => Promise<void>;
|
|
12
|
+
setSpotClean: TSetSpotClean;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// 定点清扫
|
|
2
|
+
|
|
3
|
+
import { isArray } from 'lodash-es';
|
|
4
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
5
|
+
import { normalResolve } from './promise';
|
|
6
|
+
import { SpotCleanEnum } from './type';
|
|
7
|
+
/**
|
|
8
|
+
* 定点清扫
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const useSpotClean = devId => {
|
|
12
|
+
// 请求定点清扫数据
|
|
13
|
+
|
|
14
|
+
// 设置定点清扫
|
|
15
|
+
// 定点清扫的清扫属性,使用全局的清扫属性
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
requestSpotClean: () => {
|
|
19
|
+
const params = createSetCommonParams({
|
|
20
|
+
deviceId: devId,
|
|
21
|
+
reqType: SpotCleanEnum.query
|
|
22
|
+
});
|
|
23
|
+
ty.device.sendMqttMessage(params);
|
|
24
|
+
return normalResolve(SpotCleanEnum.query, params.message.taskId);
|
|
25
|
+
},
|
|
26
|
+
setSpotClean: message => {
|
|
27
|
+
const {
|
|
28
|
+
polygons
|
|
29
|
+
} = message;
|
|
30
|
+
if (!isArray(polygons) || isArray(polygons) && polygons.length === 0) {
|
|
31
|
+
return Promise.reject(new Error('message is required'));
|
|
32
|
+
}
|
|
33
|
+
const num = polygons.length;
|
|
34
|
+
const {
|
|
35
|
+
suctions = new Array(num).fill(''),
|
|
36
|
+
cisterns = new Array(num).fill(''),
|
|
37
|
+
cleanCounts = new Array(num).fill(1),
|
|
38
|
+
yMops = new Array(num).fill(-1),
|
|
39
|
+
sweepMopModes = new Array(num).fill('only_sweep'),
|
|
40
|
+
names = new Array(num).fill('')
|
|
41
|
+
} = message;
|
|
42
|
+
if (suctions && !isArray(suctions)) {
|
|
43
|
+
return Promise.reject(new Error('suctions is illegal'));
|
|
44
|
+
}
|
|
45
|
+
if (cisterns && !isArray(cisterns)) {
|
|
46
|
+
return Promise.reject(new Error('cisterns is illegal'));
|
|
47
|
+
}
|
|
48
|
+
if (cleanCounts && !isArray(cleanCounts)) {
|
|
49
|
+
return Promise.reject(new Error('cleanCounts is illegal'));
|
|
50
|
+
}
|
|
51
|
+
if (yMops && !isArray(yMops)) {
|
|
52
|
+
return Promise.reject(new Error('yMops is illegal'));
|
|
53
|
+
}
|
|
54
|
+
if (sweepMopModes && !isArray(sweepMopModes)) {
|
|
55
|
+
return Promise.reject(new Error('sweepMopModes is illegal'));
|
|
56
|
+
}
|
|
57
|
+
if (names && !isArray(names)) {
|
|
58
|
+
return Promise.reject(new Error('names is illegal'));
|
|
59
|
+
}
|
|
60
|
+
if (num !== suctions.length || num !== cisterns.length || num !== cleanCounts.length || num !== yMops.length || num !== sweepMopModes.length || num !== names.length) {
|
|
61
|
+
return Promise.reject(new Error('The length of the parameters is inconsistent'));
|
|
62
|
+
}
|
|
63
|
+
const params = createSetCommonParams({
|
|
64
|
+
deviceId: devId,
|
|
65
|
+
reqType: SpotCleanEnum.set,
|
|
66
|
+
message: {
|
|
67
|
+
num,
|
|
68
|
+
polygons,
|
|
69
|
+
suctions,
|
|
70
|
+
cisterns,
|
|
71
|
+
cleanCounts,
|
|
72
|
+
yMops,
|
|
73
|
+
sweepMopModes,
|
|
74
|
+
names
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
ty.device.sendMqttMessage(params);
|
|
78
|
+
return normalResolve(SpotCleanEnum.query, params.message.taskId);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// 添加禁区
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { VirtualAreaEnum } from './type';
|
|
5
|
+
// 禁区
|
|
6
|
+
|
|
7
|
+
export const useVirtualArea = devId => {
|
|
8
|
+
// 请求禁区数据
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
requestVirtualArea: () => {
|
|
12
|
+
const params = createSetCommonParams({
|
|
13
|
+
deviceId: devId,
|
|
14
|
+
reqType: VirtualAreaEnum.query
|
|
15
|
+
});
|
|
16
|
+
ty.device.sendMqttMessage(params);
|
|
17
|
+
return normalResolve(VirtualAreaEnum.query, params.message.taskId);
|
|
18
|
+
},
|
|
19
|
+
setVirtualArea: message => {
|
|
20
|
+
const params = createSetCommonParams({
|
|
21
|
+
deviceId: devId,
|
|
22
|
+
reqType: VirtualAreaEnum.set,
|
|
23
|
+
message
|
|
24
|
+
});
|
|
25
|
+
ty.device.sendMqttMessage(params);
|
|
26
|
+
return normalResolve(VirtualAreaEnum.query, params.message.taskId);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
// 虚拟墙数据
|
|
3
|
+
|
|
4
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
5
|
+
import { normalResolve } from './promise';
|
|
6
|
+
import { VirtualWallEnum } from './type';
|
|
7
|
+
export const useVirtualWall = devId => {
|
|
8
|
+
// 请求虚拟墙数据
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 设置虚拟墙数据
|
|
12
|
+
* @param message 下发给设备的数据
|
|
13
|
+
* @param isVerify
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
requestVirtualWall: () => {
|
|
18
|
+
const params = createSetCommonParams({
|
|
19
|
+
deviceId: devId,
|
|
20
|
+
reqType: VirtualWallEnum.query
|
|
21
|
+
});
|
|
22
|
+
ty.device.sendMqttMessage(params);
|
|
23
|
+
return normalResolve(VirtualWallEnum.query, params.message.taskId);
|
|
24
|
+
},
|
|
25
|
+
setVirtualWall: message => {
|
|
26
|
+
const requestParams = _objectSpread({}, message);
|
|
27
|
+
const params = createSetCommonParams({
|
|
28
|
+
deviceId: devId,
|
|
29
|
+
reqType: VirtualWallEnum.set,
|
|
30
|
+
message: requestParams
|
|
31
|
+
});
|
|
32
|
+
ty.device.sendMqttMessage(params);
|
|
33
|
+
return normalResolve(VirtualWallEnum.query, params.message.taskId);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PromiseWithRejection } from './promise';
|
|
2
|
+
type TSetVoice = (message: {
|
|
3
|
+
id: number;
|
|
4
|
+
url: string;
|
|
5
|
+
md5: string;
|
|
6
|
+
}) => PromiseWithRejection;
|
|
7
|
+
type TRequestVoiceInUse = () => PromiseWithRejection;
|
|
8
|
+
/**
|
|
9
|
+
* 自定义 Hook,用于语音语言设置
|
|
10
|
+
* @param devId 设备ID
|
|
11
|
+
* @returns 包含 requestAllVoices, requestVoiceInUse 和 setVoice 函数的对象
|
|
12
|
+
*/
|
|
13
|
+
export declare const useVoice: (devId: string) => {
|
|
14
|
+
requestAllVoices: () => Promise<ty.GetVoiceListResponse>;
|
|
15
|
+
requestVoiceInUse: TRequestVoiceInUse;
|
|
16
|
+
setVoice: TSetVoice;
|
|
17
|
+
};
|
|
18
|
+
export {};
|