@ray-js/robot-data-stream 0.0.10-beta-11 → 0.0.10-beta-13
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 +12 -0
- package/lib/mqtt/useDevInfo.js +23 -0
- package/lib/mqtt/useHistoryMap.d.ts +34 -0
- package/lib/mqtt/useHistoryMap.js +91 -0
- package/lib/mqtt/usePartDivision.d.ts +17 -0
- package/lib/mqtt/usePartDivision.js +38 -0
- package/lib/mqtt/usePartMerge.d.ts +16 -0
- package/lib/mqtt/usePartMerge.js +41 -0
- package/lib/mqtt/usePassword.d.ts +17 -0
- package/lib/mqtt/usePassword.js +56 -0
- package/lib/mqtt/useQuiteHours.d.ts +55 -0
- package/lib/mqtt/useQuiteHours.js +71 -0
- package/lib/mqtt/useResetMap.d.ts +11 -0
- package/lib/mqtt/useResetMap.js +17 -0
- package/lib/mqtt/useRoomProperty.d.ts +11 -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 +26 -0
- package/lib/mqtt/useSelectRoomClean.js +70 -0
- package/lib/mqtt/useSpotClean.d.ts +18 -0
- package/lib/mqtt/useSpotClean.js +81 -0
- package/lib/mqtt/useVirtualArea.d.ts +24 -0
- package/lib/mqtt/useVirtualArea.js +79 -0
- package/lib/mqtt/useVirtualWall.d.ts +22 -0
- package/lib/mqtt/useVirtualWall.js +65 -0
- package/lib/mqtt/useVoice.d.ts +27 -0
- package/lib/mqtt/useVoice.js +66 -0
- package/lib/mqtt/useZoneClean.d.ts +27 -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,91 @@
|
|
|
1
|
+
import { deleteMultipleMapFile } from '../api/deleteMultipleMapFile';
|
|
2
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { normalResolve } from './promise';
|
|
4
|
+
import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
|
|
5
|
+
|
|
6
|
+
// 删除历史地图函数类型定义
|
|
7
|
+
|
|
8
|
+
// 更改当前使用的地图函数类型定义
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 自定义 Hook,用于管理历史地图
|
|
12
|
+
* @param devId 设备ID
|
|
13
|
+
* @returns 包含删除历史地图、更改当前地图和保存地图的函数
|
|
14
|
+
*/
|
|
15
|
+
export const useHistoryMap = devId => {
|
|
16
|
+
/**
|
|
17
|
+
* 删除历史地图
|
|
18
|
+
* @param mapId 地图ID
|
|
19
|
+
* @returns Promise<{ success: boolean; errCode: number; reqType: string; version: string; taskId: string; }> 响应结果
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 保存当前地图
|
|
24
|
+
* @returns Promise<void> 响应结果
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 更改当前使用的地图
|
|
29
|
+
* @param mapId 地图ID
|
|
30
|
+
* @param url 地图URL
|
|
31
|
+
* @returns Promise<{ success: boolean; errCode: number; reqType: string; mapId: number; version: string; taskId: string; }> 响应结果
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
deleteHistoryMap: async mapId => {
|
|
36
|
+
try {
|
|
37
|
+
if (!mapId) {
|
|
38
|
+
return Promise.reject(new Error('mapId is required'));
|
|
39
|
+
}
|
|
40
|
+
await deleteMultipleMapFile(mapId, devId);
|
|
41
|
+
const params = createSetCommonParams({
|
|
42
|
+
deviceId: devId,
|
|
43
|
+
reqType: DeleteMapEnum.set,
|
|
44
|
+
message: {
|
|
45
|
+
mapId
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
ty.device.sendMqttMessage(params);
|
|
49
|
+
const {
|
|
50
|
+
taskId
|
|
51
|
+
} = params.message;
|
|
52
|
+
return await normalResolve(DeleteMapEnum.rst, taskId);
|
|
53
|
+
} catch (err) {
|
|
54
|
+
return Promise.reject(err);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
changeCurrentMap: async (mapId, url) => {
|
|
58
|
+
try {
|
|
59
|
+
const sendData = {
|
|
60
|
+
reqType: UseMapEnum.set,
|
|
61
|
+
mapId,
|
|
62
|
+
url,
|
|
63
|
+
urlLen: url.length
|
|
64
|
+
};
|
|
65
|
+
const params = createSetCommonParams({
|
|
66
|
+
deviceId: devId,
|
|
67
|
+
reqType: UseMapEnum.set,
|
|
68
|
+
message: sendData
|
|
69
|
+
});
|
|
70
|
+
ty.device.sendMqttMessage(params);
|
|
71
|
+
const {
|
|
72
|
+
taskId
|
|
73
|
+
} = params.message;
|
|
74
|
+
return await normalResolve(UseMapEnum.query, taskId);
|
|
75
|
+
} catch (err) {
|
|
76
|
+
return Promise.reject(err);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
saveMap: () => {
|
|
80
|
+
const params = createSetCommonParams({
|
|
81
|
+
deviceId: devId,
|
|
82
|
+
reqType: SaveCurrentMapEnum.set,
|
|
83
|
+
message: {
|
|
84
|
+
oper: 0
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
ty.device.sendMqttMessage(params);
|
|
88
|
+
return normalResolve(SaveCurrentMapEnum.query, params.message.taskId);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Point } from '../utils';
|
|
2
|
+
type TSetPartDivision = (points: Point[], roomId: number, origin: Point) => Promise<{
|
|
3
|
+
success: boolean;
|
|
4
|
+
errCode: number;
|
|
5
|
+
reqType: string;
|
|
6
|
+
version: string;
|
|
7
|
+
taskId: string;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* 自定义 Hook,用于房间分隔
|
|
11
|
+
* @param devId 设备ID
|
|
12
|
+
* @returns 包含 setPartDivision 函数的对象
|
|
13
|
+
*/
|
|
14
|
+
export declare const usePartDivision: (devId: string) => {
|
|
15
|
+
setPartDivision: TSetPartDivision;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// 房间分隔
|
|
2
|
+
import { pointsToString } from '../utils';
|
|
3
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
4
|
+
import { normalResolve } from './promise';
|
|
5
|
+
import { PartDivisionEnum } from './type';
|
|
6
|
+
|
|
7
|
+
// 设置房间分隔函数类型定义
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 自定义 Hook,用于房间分隔
|
|
11
|
+
* @param devId 设备ID
|
|
12
|
+
* @returns 包含 setPartDivision 函数的对象
|
|
13
|
+
*/
|
|
14
|
+
export const usePartDivision = devId => {
|
|
15
|
+
/**
|
|
16
|
+
* 设置房间分隔
|
|
17
|
+
* @param points 分隔点数组,SDK方法抛出来的坐标直接传入即可
|
|
18
|
+
* @param roomId 房间ID,当前要分隔的房间
|
|
19
|
+
* @param origin 地图原点坐标
|
|
20
|
+
* @returns Promise<Response> 响应结果
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
setPartDivision: (points, roomId, origin) => {
|
|
25
|
+
const pointStr = pointsToString(points, origin);
|
|
26
|
+
const params = createSetCommonParams({
|
|
27
|
+
deviceId: devId,
|
|
28
|
+
reqType: PartDivisionEnum.set,
|
|
29
|
+
message: {
|
|
30
|
+
lines: [pointStr],
|
|
31
|
+
ids: [roomId]
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
ty.device.sendMqttMessage(params);
|
|
35
|
+
return normalResolve(PartDivisionEnum.query, params.message.taskId);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type TSetPartMerge = (ids: number[]) => Promise<{
|
|
2
|
+
success: boolean;
|
|
3
|
+
errCode: number;
|
|
4
|
+
reqType: string;
|
|
5
|
+
version: string;
|
|
6
|
+
taskId: string;
|
|
7
|
+
}>;
|
|
8
|
+
/**
|
|
9
|
+
* 自定义 Hook,用于分区合并
|
|
10
|
+
* @param devId 设备ID
|
|
11
|
+
* @returns 包含 setPartMerge 函数的对象
|
|
12
|
+
*/
|
|
13
|
+
export declare const usePartMerge: (devId: string) => {
|
|
14
|
+
setPartMerge: TSetPartMerge;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
|
2
|
+
import "core-js/modules/esnext.iterator.some.js";
|
|
3
|
+
// 分区合并
|
|
4
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
5
|
+
import { normalResolve } from './promise';
|
|
6
|
+
import { PartMergeEnum } from './type';
|
|
7
|
+
|
|
8
|
+
// 设置分区合并函数类型定义
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 自定义 Hook,用于分区合并
|
|
12
|
+
* @param devId 设备ID
|
|
13
|
+
* @returns 包含 setPartMerge 函数的对象
|
|
14
|
+
*/
|
|
15
|
+
export const usePartMerge = devId => {
|
|
16
|
+
/**
|
|
17
|
+
* 设置分区合并
|
|
18
|
+
* @param ids 要合并的分区ID数组
|
|
19
|
+
* @returns Promise<Response> 响应结果
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
setPartMerge: ids => {
|
|
24
|
+
if (!ids || ids.length < 2) {
|
|
25
|
+
return Promise.reject(new Error('ids is required and length must be greater than 1'));
|
|
26
|
+
}
|
|
27
|
+
if (ids.some(id => typeof id !== 'number')) {
|
|
28
|
+
return Promise.reject(new Error('ids must be an array of numbers'));
|
|
29
|
+
}
|
|
30
|
+
const params = createSetCommonParams({
|
|
31
|
+
deviceId: devId,
|
|
32
|
+
reqType: PartMergeEnum.set,
|
|
33
|
+
message: {
|
|
34
|
+
ids
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
ty.device.sendMqttMessage(params);
|
|
38
|
+
return normalResolve(PartMergeEnum.query, params.message.taskId);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -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,55 @@
|
|
|
1
|
+
type Response = {
|
|
2
|
+
reqType: string;
|
|
3
|
+
/**
|
|
4
|
+
* 版本号
|
|
5
|
+
*/
|
|
6
|
+
version: string;
|
|
7
|
+
/**
|
|
8
|
+
* 是否激活
|
|
9
|
+
* 0 表示未激活,1 表示激活
|
|
10
|
+
*/
|
|
11
|
+
active: number;
|
|
12
|
+
/**
|
|
13
|
+
* 时间段数组,每个元素为 "开始时间, 结束时间" 的字符串
|
|
14
|
+
*/
|
|
15
|
+
time: string[];
|
|
16
|
+
/**
|
|
17
|
+
* 星期几,1 表示星期一,2 表示星期二,以此类推
|
|
18
|
+
*/
|
|
19
|
+
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: {
|
|
34
|
+
startTime: {
|
|
35
|
+
hour: number;
|
|
36
|
+
minute: number;
|
|
37
|
+
};
|
|
38
|
+
endTime: {
|
|
39
|
+
hour: number;
|
|
40
|
+
minute: number;
|
|
41
|
+
};
|
|
42
|
+
active: number;
|
|
43
|
+
day: number;
|
|
44
|
+
version?: string;
|
|
45
|
+
}) => Promise<Response>;
|
|
46
|
+
/**
|
|
47
|
+
* 自定义 Hook,用于勿扰模式
|
|
48
|
+
* @param devId 设备ID
|
|
49
|
+
* @returns 包含 setQuiteHours 和 requestQuiteHours 函数的对象
|
|
50
|
+
*/
|
|
51
|
+
export declare const useQuiteHours: (devId: string) => {
|
|
52
|
+
setQuiteHours: TSetQuiteHours;
|
|
53
|
+
requestQuiteHours: () => Promise<Response>;
|
|
54
|
+
};
|
|
55
|
+
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,11 @@
|
|
|
1
|
+
import { BaseResponse, RoomPreference } from './type';
|
|
2
|
+
type Response = BaseResponse & RoomPreference & {
|
|
3
|
+
num: number;
|
|
4
|
+
mapId: number;
|
|
5
|
+
};
|
|
6
|
+
type TSetRoomProperty = (message: Pick<Response, 'num' | 'suctions' | 'cisterns' | 'floorTypes' | 'names' | 'orders' | 'yMops' | 'sweepMopModes' | 'cleanCounts' | 'ids'>) => Promise<RoomPreference>;
|
|
7
|
+
export declare const useRoomProperty: (devId: string) => {
|
|
8
|
+
requestRoomProperty: () => Promise<Response>;
|
|
9
|
+
setRoomProperty: TSetRoomProperty;
|
|
10
|
+
};
|
|
11
|
+
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 { RoomPreference, BaseResponse } from './type';
|
|
2
|
+
type ScheduleItem = Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes' | 'ids'> & {
|
|
3
|
+
active: number;
|
|
4
|
+
cycle: number[];
|
|
5
|
+
time: number[];
|
|
6
|
+
};
|
|
7
|
+
interface Schedule {
|
|
8
|
+
list: Array<ScheduleItem>;
|
|
9
|
+
num: number;
|
|
10
|
+
}
|
|
11
|
+
type Response = BaseResponse & Schedule;
|
|
12
|
+
export declare const useSchedule: (devId: string) => {
|
|
13
|
+
requestSchedule: () => Promise<Response>;
|
|
14
|
+
setSchedule: (message: Schedule) => Promise<Response>;
|
|
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,26 @@
|
|
|
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 = (message: {
|
|
15
|
+
ids: number[];
|
|
16
|
+
suctions?: string[];
|
|
17
|
+
cisterns?: string[];
|
|
18
|
+
cleanCounts?: number[];
|
|
19
|
+
yMops?: number[];
|
|
20
|
+
sweepMopModes?: string[];
|
|
21
|
+
}) => Promise<Response>;
|
|
22
|
+
export declare const useSelectRoomClean: (devId: string) => {
|
|
23
|
+
requestSelectRoomClean: () => Promise<Response>;
|
|
24
|
+
setRoomClean: TSetRoomClean;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -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
|
+
};
|