@ray-js/robot-data-stream 0.0.13-beta-10 → 0.0.13-beta-11
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/constant.d.ts +52 -0
- package/lib/constant.js +54 -0
- package/lib/mqtt/createCommonOptions.d.ts +56 -15
- package/lib/mqtt/createCommonOptions.js +44 -8
- package/lib/mqtt/index.d.ts +5 -1
- package/lib/mqtt/index.js +5 -1
- package/lib/mqtt/mqttProvider.d.ts +23 -15
- package/lib/mqtt/mqttProvider.js +63 -26
- package/lib/mqtt/promise.js +8 -3
- package/lib/mqtt/type/index.d.ts +9 -0
- package/lib/mqtt/type/index.js +8 -0
- package/lib/mqtt/type/requestType.d.ts +21 -0
- package/lib/mqtt/type/requestType.js +32 -0
- package/lib/mqtt/useCarpet.d.ts +39 -0
- package/lib/mqtt/useCarpet.js +169 -0
- package/lib/mqtt/useCarpetClean.d.ts +18 -0
- package/lib/mqtt/useCarpetClean.js +75 -0
- package/lib/mqtt/useDevInfo.d.ts +2 -7
- package/lib/mqtt/useDevInfo.js +25 -9
- package/lib/mqtt/useDeviceModel.d.ts +22 -0
- package/lib/mqtt/useDeviceModel.js +60 -0
- package/lib/mqtt/useFurnitureModel.d.ts +21 -0
- package/lib/mqtt/useFurnitureModel.js +61 -0
- package/lib/mqtt/useHistoryMap.d.ts +13 -21
- package/lib/mqtt/useHistoryMap.js +82 -32
- package/lib/mqtt/usePartDivision.d.ts +5 -7
- package/lib/mqtt/usePartDivision.js +41 -16
- package/lib/mqtt/usePartMerge.d.ts +5 -7
- package/lib/mqtt/usePartMerge.js +36 -18
- package/lib/mqtt/usePassword.js +59 -28
- package/lib/mqtt/useQuiteHours.d.ts +9 -24
- package/lib/mqtt/useQuiteHours.js +95 -52
- package/lib/mqtt/useResetMap.d.ts +10 -7
- package/lib/mqtt/useResetMap.js +40 -11
- package/lib/mqtt/useRoomProperty.js +23 -16
- package/lib/mqtt/useSchedule.d.ts +17 -4
- package/lib/mqtt/useSchedule.js +101 -49
- package/lib/mqtt/useSelectRoomClean.d.ts +20 -16
- package/lib/mqtt/useSelectRoomClean.js +145 -49
- package/lib/mqtt/useSpotClean.d.ts +3 -3
- package/lib/mqtt/useSpotClean.js +71 -7
- package/lib/mqtt/useVirtualArea.d.ts +6 -9
- package/lib/mqtt/useVirtualArea.js +112 -42
- package/lib/mqtt/useVirtualWall.d.ts +13 -10
- package/lib/mqtt/useVirtualWall.js +97 -34
- package/lib/mqtt/useVoice.d.ts +3 -6
- package/lib/mqtt/useVoice.js +73 -33
- package/lib/mqtt/useWifiMap.js +34 -18
- package/lib/mqtt/useZoneClean.d.ts +13 -13
- package/lib/mqtt/useZoneClean.js +149 -76
- package/lib/ttt/index.d.ts +153 -0
- package/lib/ttt/index.js +458 -0
- package/lib/utils/index.d.ts +21 -2
- package/lib/utils/index.js +20 -1
- package/package.json +1 -1
- package/lib/mqtt/myError.d.ts +0 -4
- package/lib/mqtt/myError.js +0 -6
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
|
2
|
+
import "core-js/modules/esnext.iterator.every.js";
|
|
3
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
4
|
+
import { normalResolve } from './promise';
|
|
5
|
+
import { CarpetEnum } from './type/requestType';
|
|
6
|
+
|
|
7
|
+
// 添加地毯的输入参数(批量添加)
|
|
8
|
+
|
|
9
|
+
// 添加地毯响应类型
|
|
10
|
+
|
|
11
|
+
// 更新地毯的输入参数
|
|
12
|
+
|
|
13
|
+
// 查询地毯响应类型
|
|
14
|
+
|
|
15
|
+
export const useCarpet = devId => {
|
|
16
|
+
/**
|
|
17
|
+
* 添加地毯(批量添加)
|
|
18
|
+
* @param carpetInfo 地毯信息,包含形状数组、轮廓点集合、数量、材质数组和清洁属性数组
|
|
19
|
+
* @returns Promise<AddCarpetResponse> 响应结果,包含返回的地毯ID
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 更新地毯
|
|
24
|
+
* @param carpetInfo 地毯信息(id 必填,shape、type、cleanMode 可选)
|
|
25
|
+
* @returns Promise<BaseResponse> 响应结果
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 删除地毯
|
|
30
|
+
* @param carpetId 地毯ID
|
|
31
|
+
* @returns Promise<BaseResponse> 响应结果
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 查询地毯
|
|
36
|
+
* @returns Promise<CarpetQueryResponse> 响应结果,包含地毯数量、轮廓点集合、清洁属性和形状等信息
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
addCarpet: carpetInfo => {
|
|
41
|
+
// 参数验证
|
|
42
|
+
if (!carpetInfo) {
|
|
43
|
+
throw new Error('carpetInfo is required');
|
|
44
|
+
}
|
|
45
|
+
if (!Array.isArray(carpetInfo.shape)) {
|
|
46
|
+
throw new Error('carpetInfo.shape is required and must be a non-empty array');
|
|
47
|
+
}
|
|
48
|
+
if (!carpetInfo.shape.every(s => ['rectangle', 'round'].includes(s))) {
|
|
49
|
+
throw new Error('carpetInfo.shape must contain only "rectangle" or "round"');
|
|
50
|
+
}
|
|
51
|
+
if (!Array.isArray(carpetInfo.polygons)) {
|
|
52
|
+
throw new Error('carpetInfo.polygons is required and must be a non-empty array');
|
|
53
|
+
}
|
|
54
|
+
if (typeof carpetInfo.num !== 'number') {
|
|
55
|
+
throw new Error('carpetInfo.num is required and must be a positive number');
|
|
56
|
+
}
|
|
57
|
+
if (!Array.isArray(carpetInfo.type)) {
|
|
58
|
+
throw new Error('carpetInfo.type is required and must be a non-empty array');
|
|
59
|
+
}
|
|
60
|
+
if (!Array.isArray(carpetInfo.cleanMode)) {
|
|
61
|
+
throw new Error('carpetInfo.cleanMode is required and must be a non-empty array');
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const sendData = {
|
|
65
|
+
shape: carpetInfo.shape,
|
|
66
|
+
polygons: carpetInfo.polygons,
|
|
67
|
+
num: carpetInfo.num,
|
|
68
|
+
type: carpetInfo.type,
|
|
69
|
+
cleanMode: carpetInfo.cleanMode
|
|
70
|
+
};
|
|
71
|
+
const params = createSetCommonParams({
|
|
72
|
+
deviceId: devId,
|
|
73
|
+
reqType: CarpetEnum.add,
|
|
74
|
+
message: {
|
|
75
|
+
carpetInfo: sendData
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
ty.device.sendMqttMessage(params);
|
|
79
|
+
const {
|
|
80
|
+
taskId
|
|
81
|
+
} = params.message;
|
|
82
|
+
return normalResolve(CarpetEnum.add, taskId);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
throw error instanceof Error ? error : new Error('Failed to add carpet');
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
updateCarpet: carpetInfo => {
|
|
88
|
+
// 参数验证:只验证 id,其他字段可选
|
|
89
|
+
if (!carpetInfo || !Array.isArray(carpetInfo.ids)) {
|
|
90
|
+
throw new Error('carpetInfo.ids is required and must be a array');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// 验证 shape 字段(如果提供)
|
|
94
|
+
if (carpetInfo.shape !== undefined && !carpetInfo.shape.every(s => ['rectangle', 'round'].includes(s))) {
|
|
95
|
+
throw new Error('carpetInfo.shape must be "rectangle" or "round"');
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
// 构建发送数据,只包含传入的字段
|
|
99
|
+
const sendData = {
|
|
100
|
+
ids: carpetInfo.ids
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// 可选字段:如果存在则添加
|
|
104
|
+
if (carpetInfo.shape !== undefined) {
|
|
105
|
+
sendData.shape = carpetInfo.shape;
|
|
106
|
+
}
|
|
107
|
+
if (carpetInfo.type !== undefined) {
|
|
108
|
+
sendData.type = carpetInfo.type;
|
|
109
|
+
}
|
|
110
|
+
if (carpetInfo.cleanMode !== undefined) {
|
|
111
|
+
sendData.cleanMode = carpetInfo.cleanMode;
|
|
112
|
+
}
|
|
113
|
+
const params = createSetCommonParams({
|
|
114
|
+
deviceId: devId,
|
|
115
|
+
reqType: CarpetEnum.update,
|
|
116
|
+
message: {
|
|
117
|
+
carpetInfo: sendData
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
ty.device.sendMqttMessage(params);
|
|
121
|
+
const {
|
|
122
|
+
taskId
|
|
123
|
+
} = params.message;
|
|
124
|
+
return normalResolve(CarpetEnum.update, taskId);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
throw error instanceof Error ? error : new Error('Failed to update carpet');
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
deleteCarpet: carpetIds => {
|
|
130
|
+
// 参数验证
|
|
131
|
+
if (!carpetIds || !Array.isArray(carpetIds)) {
|
|
132
|
+
throw new Error('carpetId is required and must be a number');
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const params = createSetCommonParams({
|
|
136
|
+
deviceId: devId,
|
|
137
|
+
reqType: CarpetEnum.delete,
|
|
138
|
+
message: {
|
|
139
|
+
carpetInfo: {
|
|
140
|
+
ids: carpetIds
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
ty.device.sendMqttMessage(params);
|
|
145
|
+
const {
|
|
146
|
+
taskId
|
|
147
|
+
} = params.message;
|
|
148
|
+
return normalResolve(CarpetEnum.delete, taskId);
|
|
149
|
+
} catch (error) {
|
|
150
|
+
throw error instanceof Error ? error : new Error('Failed to delete carpet');
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
queryCarpet: () => {
|
|
154
|
+
try {
|
|
155
|
+
const params = createSetCommonParams({
|
|
156
|
+
deviceId: devId,
|
|
157
|
+
reqType: CarpetEnum.query
|
|
158
|
+
});
|
|
159
|
+
ty.device.sendMqttMessage(params);
|
|
160
|
+
const {
|
|
161
|
+
taskId
|
|
162
|
+
} = params.message;
|
|
163
|
+
return normalResolve(CarpetEnum.query, taskId);
|
|
164
|
+
} catch (error) {
|
|
165
|
+
throw error instanceof Error ? error : new Error('Failed to query carpet');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseResponse } from './type';
|
|
2
|
+
import { CarpetCleanEnum } from './type/requestType';
|
|
3
|
+
interface CarpetCleanResponse extends BaseResponse {
|
|
4
|
+
reqType: CarpetCleanEnum;
|
|
5
|
+
ids: number[];
|
|
6
|
+
}
|
|
7
|
+
type TSetCarpetClean = (carpetIds: number[]) => Promise<CarpetCleanResponse>;
|
|
8
|
+
type TRequestCarpetClean = () => Promise<CarpetCleanResponse>;
|
|
9
|
+
/**
|
|
10
|
+
* 自定义 Hook,用于地毯清扫
|
|
11
|
+
* @param devId 设备ID
|
|
12
|
+
* @returns 包含 requestCarpetClean 和 setCarpetClean 函数的对象
|
|
13
|
+
*/
|
|
14
|
+
export declare const useCarpetClean: (devId: string) => {
|
|
15
|
+
requestCarpetClean: TRequestCarpetClean;
|
|
16
|
+
setCarpetClean: TSetCarpetClean;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
|
2
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
|
3
|
+
// 地毯清扫
|
|
4
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
5
|
+
import { CarpetCleanEnum } from './type/requestType';
|
|
6
|
+
import { normalResolve } from './promise';
|
|
7
|
+
|
|
8
|
+
// 地毯清扫响应类型
|
|
9
|
+
|
|
10
|
+
// 设置地毯清扫函数类型定义
|
|
11
|
+
|
|
12
|
+
// 请求地毯清扫函数类型定义
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 自定义 Hook,用于地毯清扫
|
|
16
|
+
* @param devId 设备ID
|
|
17
|
+
* @returns 包含 requestCarpetClean 和 setCarpetClean 函数的对象
|
|
18
|
+
*/
|
|
19
|
+
export const useCarpetClean = devId => {
|
|
20
|
+
/**
|
|
21
|
+
* 请求地毯清扫信息
|
|
22
|
+
* @returns Promise<CarpetCleanResponse> 响应结果
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 设置地毯清扫
|
|
27
|
+
* @param carpetIds 地毯ID数组
|
|
28
|
+
* @returns Promise<CarpetCleanResponse> 响应结果
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
requestCarpetClean: () => {
|
|
33
|
+
try {
|
|
34
|
+
const params = createSetCommonParams({
|
|
35
|
+
deviceId: devId,
|
|
36
|
+
reqType: CarpetCleanEnum.query
|
|
37
|
+
});
|
|
38
|
+
ty.device.sendMqttMessage(params);
|
|
39
|
+
const {
|
|
40
|
+
taskId
|
|
41
|
+
} = params.message;
|
|
42
|
+
return normalResolve(CarpetCleanEnum.query, taskId);
|
|
43
|
+
} catch (error) {
|
|
44
|
+
return Promise.reject(error instanceof Error ? error : new Error('Failed to request carpet clean'));
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
setCarpetClean: carpetIds => {
|
|
48
|
+
// 参数验证
|
|
49
|
+
if (!Array.isArray(carpetIds) || carpetIds.length === 0) {
|
|
50
|
+
throw new Error('carpetIds is required and must be a non-empty array');
|
|
51
|
+
}
|
|
52
|
+
carpetIds.forEach((id, index) => {
|
|
53
|
+
if (typeof id !== 'number') {
|
|
54
|
+
throw new Error(`carpetIds[${index}] must be a number`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
try {
|
|
58
|
+
const params = createSetCommonParams({
|
|
59
|
+
deviceId: devId,
|
|
60
|
+
reqType: CarpetCleanEnum.set,
|
|
61
|
+
message: {
|
|
62
|
+
ids: carpetIds
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
ty.device.sendMqttMessage(params);
|
|
66
|
+
const {
|
|
67
|
+
taskId
|
|
68
|
+
} = params.message;
|
|
69
|
+
return normalResolve(CarpetCleanEnum.set, taskId);
|
|
70
|
+
} catch (error) {
|
|
71
|
+
throw error instanceof Error ? error : new Error('Failed to set carpet clean');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
};
|
package/lib/mqtt/useDevInfo.d.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
version?: string;
|
|
1
|
+
import { BaseResponse } from './type';
|
|
2
|
+
export interface DevInfoResponse extends BaseResponse {
|
|
4
3
|
info: string;
|
|
5
|
-
success?: boolean;
|
|
6
|
-
errCode?: number;
|
|
7
|
-
taskId?: string;
|
|
8
4
|
}
|
|
9
5
|
export declare const useDevInfo: (devId: string) => {
|
|
10
6
|
requestDevInfo: () => Promise<DevInfoResponse>;
|
|
11
7
|
};
|
|
12
|
-
export {};
|
package/lib/mqtt/useDevInfo.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { hexToUriDecodedString } from '@ray-js/robot-protocol';
|
|
1
2
|
import { useContext } from 'react';
|
|
2
3
|
import { createSetCommonParams } from './createCommonOptions';
|
|
3
4
|
import { SingletonContext } from './mqttProvider';
|
|
4
5
|
import { normalResolve } from './promise';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}(DevInfoEnum || {});
|
|
6
|
+
import { DevInfoEnum } from './type';
|
|
7
|
+
|
|
8
|
+
// 设备信息响应类型
|
|
9
|
+
|
|
10
10
|
// 请求设备信息
|
|
11
11
|
export const useDevInfo = devId => {
|
|
12
12
|
const {
|
|
@@ -27,10 +27,26 @@ export const useDevInfo = devId => {
|
|
|
27
27
|
} = params.message;
|
|
28
28
|
return normalResolve(DevInfoEnum.query, taskId);
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
|
|
31
|
+
// 非 MQTT 模式:从设备属性中获取设备信息
|
|
32
|
+
try {
|
|
33
|
+
var _devices$common$model;
|
|
34
|
+
const dpDevInfo = (_devices$common$model = devices.common.model.props) === null || _devices$common$model === void 0 ? void 0 : _devices$common$model.device_info;
|
|
35
|
+
if (!dpDevInfo) {
|
|
36
|
+
return Promise.reject(new Error('Device info is not available in device properties'));
|
|
37
|
+
}
|
|
38
|
+
const info = hexToUriDecodedString(dpDevInfo);
|
|
39
|
+
return Promise.resolve({
|
|
40
|
+
info,
|
|
41
|
+
success: true,
|
|
42
|
+
errCode: 0,
|
|
43
|
+
reqType: DevInfoEnum.query,
|
|
44
|
+
version: '1.0.0',
|
|
45
|
+
taskId: `${Date.now()}`
|
|
46
|
+
});
|
|
47
|
+
} catch (error) {
|
|
48
|
+
return Promise.reject(error instanceof Error ? error : new Error('Failed to get device info from device properties'));
|
|
49
|
+
}
|
|
34
50
|
}
|
|
35
51
|
};
|
|
36
52
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseResponse } from './type';
|
|
2
|
+
import { DeviceModelEnum } from './type/requestType';
|
|
3
|
+
interface DeviceModelInfo {
|
|
4
|
+
id: number;
|
|
5
|
+
modelType: number;
|
|
6
|
+
scale: number;
|
|
7
|
+
size: [number, number, number];
|
|
8
|
+
rotation: [number, number, number];
|
|
9
|
+
position: [number, number, number];
|
|
10
|
+
subDevId: string;
|
|
11
|
+
}
|
|
12
|
+
interface DeviceModelResponse extends BaseResponse {
|
|
13
|
+
reqType: DeviceModelEnum.query;
|
|
14
|
+
modelInfo: DeviceModelInfo[];
|
|
15
|
+
}
|
|
16
|
+
type TRequestDeviceList = () => Promise<DeviceModelResponse>;
|
|
17
|
+
type TSetDeviceModel = (modelInfos: DeviceModelInfo[]) => Promise<DeviceModelResponse>;
|
|
18
|
+
export declare const useDeviceModel: (devId: string) => {
|
|
19
|
+
requestDeviceList: TRequestDeviceList;
|
|
20
|
+
setDeviceModel: TSetDeviceModel;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
2
|
+
import { normalResolve } from './promise';
|
|
3
|
+
import { DeviceModelEnum } from './type/requestType';
|
|
4
|
+
|
|
5
|
+
// 请求设备列表函数定义
|
|
6
|
+
|
|
7
|
+
// 设置设备模型函数定义
|
|
8
|
+
|
|
9
|
+
export const useDeviceModel = devId => {
|
|
10
|
+
/**
|
|
11
|
+
* 请求设备列表
|
|
12
|
+
* @returns Promise<DeviceModelResponse> 响应结果
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 设置设备模型
|
|
17
|
+
* @param modelInfos 设备模型信息数组
|
|
18
|
+
* @returns Promise<DeviceModelResponse> 响应结果
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
requestDeviceList: () => {
|
|
23
|
+
try {
|
|
24
|
+
const params = createSetCommonParams({
|
|
25
|
+
deviceId: devId,
|
|
26
|
+
reqType: DeviceModelEnum.query
|
|
27
|
+
});
|
|
28
|
+
const {
|
|
29
|
+
taskId
|
|
30
|
+
} = params.message;
|
|
31
|
+
ty.device.sendMqttMessage(params);
|
|
32
|
+
return normalResolve(DeviceModelEnum.query, taskId);
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return Promise.reject(error instanceof Error ? error : new Error('Failed to request device list'));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
setDeviceModel: modelInfos => {
|
|
38
|
+
// 参数验证
|
|
39
|
+
if (!Array.isArray(modelInfos)) {
|
|
40
|
+
throw new Error('modelInfos is required and must be an array');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const params = createSetCommonParams({
|
|
44
|
+
deviceId: devId,
|
|
45
|
+
reqType: DeviceModelEnum.set,
|
|
46
|
+
message: {
|
|
47
|
+
modelInfos
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
ty.device.sendMqttMessage(params);
|
|
51
|
+
const {
|
|
52
|
+
taskId
|
|
53
|
+
} = params.message;
|
|
54
|
+
return normalResolve(DeviceModelEnum.query, taskId);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
throw error instanceof Error ? error : new Error('Failed to set device model');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseResponse } from './type';
|
|
2
|
+
import { FurnitureModelEnum } from './type/requestType';
|
|
3
|
+
interface FurnitureModelInfo {
|
|
4
|
+
id: number;
|
|
5
|
+
modelType: number;
|
|
6
|
+
scale: number;
|
|
7
|
+
size: [number, number, number];
|
|
8
|
+
rotation: [number, number, number];
|
|
9
|
+
position: [number, number, number];
|
|
10
|
+
}
|
|
11
|
+
interface FurnitureModelResponse extends BaseResponse {
|
|
12
|
+
reqType: FurnitureModelEnum.query;
|
|
13
|
+
modelInfo: FurnitureModelInfo[];
|
|
14
|
+
}
|
|
15
|
+
type TRequestFurnitureList = () => Promise<FurnitureModelResponse>;
|
|
16
|
+
type TSetFurnitureModel = (modelInfos: FurnitureModelInfo[]) => Promise<FurnitureModelResponse>;
|
|
17
|
+
export declare const useFurnitureModel: (devId: string) => {
|
|
18
|
+
requestFurnitureList: TRequestFurnitureList;
|
|
19
|
+
setFurnitureModel: TSetFurnitureModel;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createSetCommonParams } from './createCommonOptions';
|
|
2
|
+
import { normalResolve } from './promise';
|
|
3
|
+
import { FurnitureModelEnum } from './type/requestType';
|
|
4
|
+
|
|
5
|
+
// 请求家具列表函数定义
|
|
6
|
+
|
|
7
|
+
// 设置家具模型函数定义
|
|
8
|
+
|
|
9
|
+
export const useFurnitureModel = devId => {
|
|
10
|
+
/**
|
|
11
|
+
* 请求家具列表
|
|
12
|
+
* @returns Promise<FurnitureModelResponse> 响应结果
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 设置家具模型
|
|
17
|
+
* @param modelInfos 家具模型信息数组
|
|
18
|
+
* @returns Promise<FurnitureModelResponse> 响应结果
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
requestFurnitureList: () => {
|
|
23
|
+
try {
|
|
24
|
+
const params = createSetCommonParams({
|
|
25
|
+
deviceId: devId,
|
|
26
|
+
reqType: FurnitureModelEnum.query
|
|
27
|
+
});
|
|
28
|
+
const {
|
|
29
|
+
taskId
|
|
30
|
+
} = params.message;
|
|
31
|
+
ty.device.sendMqttMessage(params);
|
|
32
|
+
return normalResolve(FurnitureModelEnum.query, taskId);
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return Promise.reject(error instanceof Error ? error : new Error('Failed to request furniture list'));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
setFurnitureModel: modelInfos => {
|
|
38
|
+
// 参数验证
|
|
39
|
+
if (!Array.isArray(modelInfos)) {
|
|
40
|
+
throw new Error('modelInfos is required and must be an array');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const params = createSetCommonParams({
|
|
44
|
+
deviceId: devId,
|
|
45
|
+
reqType: FurnitureModelEnum.set,
|
|
46
|
+
message: {
|
|
47
|
+
modelInfos
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
console.log('========================params', params);
|
|
51
|
+
ty.device.sendMqttMessage(params);
|
|
52
|
+
const {
|
|
53
|
+
taskId
|
|
54
|
+
} = params.message;
|
|
55
|
+
return normalResolve(FurnitureModelEnum.query, taskId);
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw error instanceof Error ? error : new Error('Failed to set furniture model');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
};
|
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}>;
|
|
8
|
-
type TChangeCurrentMap = (mapId: number, url: string) => Promise<{
|
|
9
|
-
success: boolean;
|
|
10
|
-
errCode: number;
|
|
11
|
-
reqType: string;
|
|
1
|
+
import { BaseResponse, DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
|
|
2
|
+
interface DeleteMapResponse extends BaseResponse {
|
|
3
|
+
reqType: DeleteMapEnum.rst;
|
|
4
|
+
}
|
|
5
|
+
interface SaveMapResponse extends BaseResponse {
|
|
6
|
+
reqType: SaveCurrentMapEnum.query;
|
|
12
7
|
mapId: number;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
type TSaveMap = () => Promise<{
|
|
17
|
-
success: boolean;
|
|
18
|
-
errCode: number;
|
|
19
|
-
reqType: string;
|
|
8
|
+
}
|
|
9
|
+
interface UseMapResponse extends BaseResponse {
|
|
10
|
+
reqType: UseMapEnum.query;
|
|
20
11
|
mapId: number;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
}
|
|
13
|
+
type TDeleteHistoryMap = (mapId: number) => Promise<DeleteMapResponse>;
|
|
14
|
+
type TSaveMap = () => Promise<SaveMapResponse>;
|
|
15
|
+
type TChangeCurrentMap = (mapId: number, url: string) => Promise<UseMapResponse>;
|
|
24
16
|
/**
|
|
25
17
|
* 自定义 Hook,用于管理历史地图
|
|
26
18
|
* @param devId 设备ID
|