@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.
Files changed (53) hide show
  1. package/lib/api/deleteMultipleMapFile.d.ts +1 -0
  2. package/lib/api/deleteMultipleMapFile.js +9 -0
  3. package/lib/api/request.d.ts +2 -0
  4. package/lib/api/request.js +29 -0
  5. package/lib/index.d.ts +2 -0
  6. package/lib/index.js +4 -2
  7. package/lib/mqtt/createCommonOptions.d.ts +24 -0
  8. package/lib/mqtt/createCommonOptions.js +28 -0
  9. package/lib/mqtt/index.d.ts +17 -0
  10. package/lib/mqtt/index.js +17 -0
  11. package/lib/mqtt/mqttProvider.d.ts +6 -0
  12. package/lib/mqtt/mqttProvider.js +61 -0
  13. package/lib/mqtt/myError.d.ts +4 -0
  14. package/lib/mqtt/myError.js +6 -0
  15. package/lib/mqtt/promise.d.ts +13 -0
  16. package/lib/mqtt/promise.js +47 -0
  17. package/lib/mqtt/type/index.d.ts +26 -0
  18. package/lib/mqtt/type/index.js +11 -0
  19. package/lib/mqtt/type/requestType.d.ts +67 -0
  20. package/lib/mqtt/type/requestType.js +101 -0
  21. package/lib/mqtt/useDevInfo.d.ts +12 -0
  22. package/lib/mqtt/useDevInfo.js +23 -0
  23. package/lib/mqtt/useHistoryMap.d.ts +34 -0
  24. package/lib/mqtt/useHistoryMap.js +91 -0
  25. package/lib/mqtt/usePartDivision.d.ts +17 -0
  26. package/lib/mqtt/usePartDivision.js +38 -0
  27. package/lib/mqtt/usePartMerge.d.ts +16 -0
  28. package/lib/mqtt/usePartMerge.js +41 -0
  29. package/lib/mqtt/usePassword.d.ts +17 -0
  30. package/lib/mqtt/usePassword.js +56 -0
  31. package/lib/mqtt/useQuiteHours.d.ts +55 -0
  32. package/lib/mqtt/useQuiteHours.js +71 -0
  33. package/lib/mqtt/useResetMap.d.ts +11 -0
  34. package/lib/mqtt/useResetMap.js +17 -0
  35. package/lib/mqtt/useRoomProperty.d.ts +11 -0
  36. package/lib/mqtt/useRoomProperty.js +66 -0
  37. package/lib/mqtt/useSchedule.d.ts +16 -0
  38. package/lib/mqtt/useSchedule.js +38 -0
  39. package/lib/mqtt/useSelectRoomClean.d.ts +26 -0
  40. package/lib/mqtt/useSelectRoomClean.js +70 -0
  41. package/lib/mqtt/useSpotClean.d.ts +18 -0
  42. package/lib/mqtt/useSpotClean.js +81 -0
  43. package/lib/mqtt/useVirtualArea.d.ts +24 -0
  44. package/lib/mqtt/useVirtualArea.js +79 -0
  45. package/lib/mqtt/useVirtualWall.d.ts +22 -0
  46. package/lib/mqtt/useVirtualWall.js +65 -0
  47. package/lib/mqtt/useVoice.d.ts +27 -0
  48. package/lib/mqtt/useVoice.js +66 -0
  49. package/lib/mqtt/useZoneClean.d.ts +27 -0
  50. package/lib/mqtt/useZoneClean.js +81 -0
  51. package/lib/utils/index.d.ts +8 -0
  52. package/lib/utils/index.js +47 -0
  53. 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,11 @@
1
+ type TSetResetMap = () => Promise<{
2
+ success: boolean;
3
+ errCode: number;
4
+ reqType: string;
5
+ version: string;
6
+ taskId: string;
7
+ }>;
8
+ export declare const useResetMap: (devId: string) => {
9
+ setResetMap: TSetResetMap;
10
+ };
11
+ export {};
@@ -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
+ };