@ray-js/robot-data-stream 0.0.10-beta-14 → 0.0.10-beta-15
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 +3 -0
- package/lib/constant.js +29 -0
- package/lib/mqtt/mqttProvider.d.ts +18 -3
- package/lib/mqtt/mqttProvider.js +14 -4
- package/lib/mqtt/promise.js +1 -0
- package/lib/mqtt/useDevInfo.d.ts +5 -5
- package/lib/mqtt/useDevInfo.js +22 -9
- package/lib/mqtt/useHistoryMap.d.ts +1 -1
- package/lib/mqtt/useHistoryMap.js +61 -34
- package/lib/mqtt/usePartDivision.d.ts +1 -1
- package/lib/mqtt/usePartDivision.js +29 -10
- package/lib/mqtt/usePartMerge.d.ts +1 -1
- package/lib/mqtt/usePartMerge.js +24 -8
- package/lib/mqtt/usePassword.js +7 -0
- package/lib/mqtt/useQuiteHours.d.ts +3 -1
- package/lib/mqtt/useQuiteHours.js +42 -21
- package/lib/mqtt/useResetMap.d.ts +1 -1
- package/lib/mqtt/useResetMap.js +20 -6
- package/lib/mqtt/useRoomProperty.js +7 -0
- package/lib/mqtt/useSchedule.d.ts +1 -1
- package/lib/mqtt/useSchedule.js +53 -9
- package/lib/mqtt/useSelectRoomClean.d.ts +8 -8
- package/lib/mqtt/useSelectRoomClean.js +62 -53
- package/lib/mqtt/useSpotClean.d.ts +4 -3
- package/lib/mqtt/useSpotClean.js +68 -48
- package/lib/mqtt/useVirtualArea.d.ts +4 -5
- package/lib/mqtt/useVirtualArea.js +60 -49
- package/lib/mqtt/useVirtualWall.d.ts +5 -5
- package/lib/mqtt/useVirtualWall.js +45 -40
- package/lib/mqtt/useVoice.js +23 -9
- package/lib/mqtt/useZoneClean.d.ts +4 -3
- package/lib/mqtt/useZoneClean.js +89 -55
- package/package.json +6 -4
package/lib/constant.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// 吸力
|
|
2
|
+
export const SUCTION_MAP = {
|
|
3
|
+
closed: 0,
|
|
4
|
+
gentle: 1,
|
|
5
|
+
normal: 2,
|
|
6
|
+
strong: 3,
|
|
7
|
+
max: 4
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// 水量
|
|
11
|
+
export const CISTERN_MAP = {
|
|
12
|
+
closed: 0,
|
|
13
|
+
low: 1,
|
|
14
|
+
middle: 2,
|
|
15
|
+
high: 3
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// 清扫模式
|
|
19
|
+
export const CLEAN_MODE_MAP = {
|
|
20
|
+
// 扫拖
|
|
21
|
+
both_work: 0,
|
|
22
|
+
// 仅扫
|
|
23
|
+
only_sweep: 1,
|
|
24
|
+
// 仅拖
|
|
25
|
+
only_mop: 2,
|
|
26
|
+
// 先扫后拖
|
|
27
|
+
clean_before_mop: 3,
|
|
28
|
+
sweep_after_mop: 3
|
|
29
|
+
};
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export declare
|
|
3
|
-
|
|
2
|
+
export declare const SingletonContext: React.Context<{
|
|
3
|
+
useStructuredMode: boolean;
|
|
4
|
+
commandVersion: '0' | '1';
|
|
5
|
+
devices: {
|
|
6
|
+
common: any;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
export declare function useMqtt(): {
|
|
10
|
+
useStructuredMode: boolean;
|
|
11
|
+
commandVersion: "0" | "1";
|
|
12
|
+
devices: {
|
|
13
|
+
common: any;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare function MqttProvider({ children, useStructuredMode, commandVersion, devices }: {
|
|
4
17
|
children: any;
|
|
5
|
-
|
|
18
|
+
useStructuredMode: any;
|
|
19
|
+
commandVersion: any;
|
|
20
|
+
devices: any;
|
|
6
21
|
}): React.JSX.Element;
|
package/lib/mqtt/mqttProvider.js
CHANGED
|
@@ -2,8 +2,9 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import { get, isNil } from 'lodash-es';
|
|
3
3
|
import React, { createContext, useCallback, useContext, useRef, useState } from 'react';
|
|
4
4
|
import { emitter } from '../utils';
|
|
5
|
+
|
|
5
6
|
// 创建一个Context
|
|
6
|
-
const SingletonContext = /*#__PURE__*/createContext(null);
|
|
7
|
+
export const SingletonContext = /*#__PURE__*/createContext(null);
|
|
7
8
|
|
|
8
9
|
// 创建一个自定义Hook来使用这个Context
|
|
9
10
|
export function useMqtt() {
|
|
@@ -16,7 +17,9 @@ export function useMqtt() {
|
|
|
16
17
|
export function MqttProvider(_ref) {
|
|
17
18
|
let {
|
|
18
19
|
children,
|
|
19
|
-
|
|
20
|
+
useStructuredMode,
|
|
21
|
+
commandVersion,
|
|
22
|
+
devices
|
|
20
23
|
} = _ref;
|
|
21
24
|
const [instance, setInstance] = useState(null);
|
|
22
25
|
const onMqttMessageReceived = useCallback(data => {
|
|
@@ -36,6 +39,9 @@ export function MqttProvider(_ref) {
|
|
|
36
39
|
// 使用ref确保实例只被创建一次
|
|
37
40
|
const instanceRef = useRef(null);
|
|
38
41
|
if (instanceRef.current === null) {
|
|
42
|
+
const {
|
|
43
|
+
devId
|
|
44
|
+
} = devices.common.getDevInfo();
|
|
39
45
|
ty.device.registerMQTTProtocolListener({
|
|
40
46
|
protocol: 65,
|
|
41
47
|
success: () => {
|
|
@@ -48,8 +54,12 @@ export function MqttProvider(_ref) {
|
|
|
48
54
|
}
|
|
49
55
|
});
|
|
50
56
|
instanceRef.current = {
|
|
51
|
-
//
|
|
52
|
-
|
|
57
|
+
// 是否结构化数据(mqtt)
|
|
58
|
+
useStructuredMode,
|
|
59
|
+
// 指令协议版本(1byte or 4bytes)
|
|
60
|
+
commandVersion,
|
|
61
|
+
// sdm
|
|
62
|
+
devices
|
|
53
63
|
};
|
|
54
64
|
setInstance(instanceRef.current);
|
|
55
65
|
}
|
package/lib/mqtt/promise.js
CHANGED
package/lib/mqtt/useDevInfo.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
interface DevInfoResponse {
|
|
2
|
-
reqType
|
|
3
|
-
version
|
|
2
|
+
reqType?: string;
|
|
3
|
+
version?: string;
|
|
4
4
|
info: string;
|
|
5
|
-
success
|
|
6
|
-
errCode
|
|
7
|
-
taskId
|
|
5
|
+
success?: boolean;
|
|
6
|
+
errCode?: number;
|
|
7
|
+
taskId?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare const useDevInfo: (devId: string) => {
|
|
10
10
|
requestDevInfo: () => Promise<DevInfoResponse>;
|
package/lib/mqtt/useDevInfo.js
CHANGED
|
@@ -1,23 +1,36 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
1
2
|
import { createSetCommonParams } from './createCommonOptions';
|
|
3
|
+
import { SingletonContext } from './mqttProvider';
|
|
2
4
|
import { normalResolve } from './promise';
|
|
5
|
+
import { hexToUTF8 } from '@ray-js/robot-protocol';
|
|
3
6
|
var DevInfoEnum = /*#__PURE__*/function (DevInfoEnum) {
|
|
4
7
|
DevInfoEnum["query"] = "devInfoQry";
|
|
5
8
|
return DevInfoEnum;
|
|
6
9
|
}(DevInfoEnum || {});
|
|
7
10
|
// 请求设备信息
|
|
8
11
|
export const useDevInfo = devId => {
|
|
12
|
+
const {
|
|
13
|
+
useStructuredMode,
|
|
14
|
+
devices
|
|
15
|
+
} = useContext(SingletonContext);
|
|
9
16
|
return {
|
|
10
17
|
requestDevInfo: () => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
if (useStructuredMode) {
|
|
19
|
+
const params = createSetCommonParams({
|
|
20
|
+
deviceId: devId,
|
|
21
|
+
reqType: DevInfoEnum.query,
|
|
22
|
+
message: {}
|
|
23
|
+
});
|
|
24
|
+
ty.device.sendMqttMessage(params);
|
|
25
|
+
const {
|
|
26
|
+
taskId
|
|
27
|
+
} = params.message;
|
|
28
|
+
return normalResolve(DevInfoEnum.query, taskId);
|
|
29
|
+
}
|
|
30
|
+
const dpDevInfo = devices.common.model.props.device_info;
|
|
31
|
+
return Promise.resolve({
|
|
32
|
+
info: hexToUTF8(dpDevInfo)
|
|
15
33
|
});
|
|
16
|
-
ty.device.sendMqttMessage(params);
|
|
17
|
-
const {
|
|
18
|
-
taskId
|
|
19
|
-
} = params.message;
|
|
20
|
-
return normalResolve(DevInfoEnum.query, taskId);
|
|
21
34
|
}
|
|
22
35
|
};
|
|
23
36
|
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
1
2
|
import { deleteMultipleMapFile } from '../api/deleteMultipleMapFile';
|
|
2
3
|
import { createSetCommonParams } from './createCommonOptions';
|
|
3
4
|
import { normalResolve } from './promise';
|
|
4
5
|
import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
|
|
6
|
+
import { SingletonContext } from './mqttProvider';
|
|
7
|
+
import { encodeDeleteMap0x2c, encodeSaveMap0x2a, encodeUseMap0x2e } from '@ray-js/robot-protocol';
|
|
5
8
|
|
|
6
9
|
// 删除历史地图函数类型定义
|
|
7
10
|
|
|
@@ -13,6 +16,10 @@ import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
|
|
|
13
16
|
* @returns 包含删除历史地图、更改当前地图和保存地图的函数
|
|
14
17
|
*/
|
|
15
18
|
export const useHistoryMap = devId => {
|
|
19
|
+
const {
|
|
20
|
+
useStructuredMode,
|
|
21
|
+
devices
|
|
22
|
+
} = useContext(SingletonContext);
|
|
16
23
|
/**
|
|
17
24
|
* 删除历史地图
|
|
18
25
|
* @param mapId 地图ID
|
|
@@ -38,54 +45,74 @@ export const useHistoryMap = devId => {
|
|
|
38
45
|
return Promise.reject(new Error('mapId is required'));
|
|
39
46
|
}
|
|
40
47
|
await deleteMultipleMapFile(mapId, devId);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
if (useStructuredMode) {
|
|
49
|
+
const params = createSetCommonParams({
|
|
50
|
+
deviceId: devId,
|
|
51
|
+
reqType: DeleteMapEnum.set,
|
|
52
|
+
message: {
|
|
53
|
+
mapId
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
ty.device.sendMqttMessage(params);
|
|
57
|
+
const {
|
|
58
|
+
taskId
|
|
59
|
+
} = params.message;
|
|
60
|
+
return normalResolve(DeleteMapEnum.rst, taskId);
|
|
61
|
+
}
|
|
62
|
+
const command = encodeDeleteMap0x2c({
|
|
63
|
+
id: mapId
|
|
47
64
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
taskId
|
|
51
|
-
} = params.message;
|
|
52
|
-
return await normalResolve(DeleteMapEnum.rst, taskId);
|
|
65
|
+
devices.common.model.actions.command_trans.set(command);
|
|
66
|
+
return Promise.resolve();
|
|
53
67
|
} catch (err) {
|
|
54
68
|
return Promise.reject(err);
|
|
55
69
|
}
|
|
56
70
|
},
|
|
57
71
|
changeCurrentMap: async (mapId, url) => {
|
|
58
72
|
try {
|
|
59
|
-
|
|
60
|
-
|
|
73
|
+
if (useStructuredMode) {
|
|
74
|
+
const sendData = {
|
|
75
|
+
reqType: UseMapEnum.set,
|
|
76
|
+
mapId,
|
|
77
|
+
url,
|
|
78
|
+
urlLen: url.length
|
|
79
|
+
};
|
|
80
|
+
const params = createSetCommonParams({
|
|
81
|
+
deviceId: devId,
|
|
82
|
+
reqType: UseMapEnum.set,
|
|
83
|
+
message: sendData
|
|
84
|
+
});
|
|
85
|
+
ty.device.sendMqttMessage(params);
|
|
86
|
+
const {
|
|
87
|
+
taskId
|
|
88
|
+
} = params.message;
|
|
89
|
+
return normalResolve(UseMapEnum.query, taskId);
|
|
90
|
+
}
|
|
91
|
+
const command = encodeUseMap0x2e({
|
|
61
92
|
mapId,
|
|
62
|
-
url
|
|
63
|
-
urlLen: url.length
|
|
64
|
-
};
|
|
65
|
-
const params = createSetCommonParams({
|
|
66
|
-
deviceId: devId,
|
|
67
|
-
reqType: UseMapEnum.set,
|
|
68
|
-
message: sendData
|
|
93
|
+
url
|
|
69
94
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
taskId
|
|
73
|
-
} = params.message;
|
|
74
|
-
return await normalResolve(UseMapEnum.query, taskId);
|
|
95
|
+
devices.common.model.actions.command_trans.set(command);
|
|
96
|
+
return Promise.resolve();
|
|
75
97
|
} catch (err) {
|
|
76
98
|
return Promise.reject(err);
|
|
77
99
|
}
|
|
78
100
|
},
|
|
79
101
|
saveMap: () => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
102
|
+
if (useStructuredMode) {
|
|
103
|
+
const params = createSetCommonParams({
|
|
104
|
+
deviceId: devId,
|
|
105
|
+
reqType: SaveCurrentMapEnum.set,
|
|
106
|
+
message: {
|
|
107
|
+
oper: 0
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
ty.device.sendMqttMessage(params);
|
|
111
|
+
return normalResolve(SaveCurrentMapEnum.query, params.message.taskId);
|
|
112
|
+
}
|
|
113
|
+
const command = encodeSaveMap0x2a(1);
|
|
114
|
+
devices.common.model.actions.command_trans.set(command);
|
|
115
|
+
return Promise.resolve();
|
|
89
116
|
}
|
|
90
117
|
};
|
|
91
118
|
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// 房间分隔
|
|
2
|
+
import { useContext } from 'react';
|
|
2
3
|
import { pointsToString } from '../utils';
|
|
3
4
|
import { createSetCommonParams } from './createCommonOptions';
|
|
4
5
|
import { normalResolve } from './promise';
|
|
5
6
|
import { PartDivisionEnum } from './type';
|
|
7
|
+
import { SingletonContext } from './mqttProvider';
|
|
8
|
+
import { encodePartitionDivision0x1c } from '@ray-js/robot-protocol';
|
|
6
9
|
|
|
7
10
|
// 设置房间分隔函数类型定义
|
|
8
11
|
|
|
@@ -12,6 +15,12 @@ import { PartDivisionEnum } from './type';
|
|
|
12
15
|
* @returns 包含 setPartDivision 函数的对象
|
|
13
16
|
*/
|
|
14
17
|
export const usePartDivision = devId => {
|
|
18
|
+
const {
|
|
19
|
+
useStructuredMode,
|
|
20
|
+
devices,
|
|
21
|
+
commandVersion
|
|
22
|
+
} = useContext(SingletonContext);
|
|
23
|
+
|
|
15
24
|
/**
|
|
16
25
|
* 设置房间分隔
|
|
17
26
|
* @param points 分隔点数组,SDK方法抛出来的坐标直接传入即可
|
|
@@ -22,17 +31,27 @@ export const usePartDivision = devId => {
|
|
|
22
31
|
|
|
23
32
|
return {
|
|
24
33
|
setPartDivision: (points, roomId, origin) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
if (useStructuredMode) {
|
|
35
|
+
const pointStr = pointsToString(points, origin);
|
|
36
|
+
const params = createSetCommonParams({
|
|
37
|
+
deviceId: devId,
|
|
38
|
+
reqType: PartDivisionEnum.set,
|
|
39
|
+
message: {
|
|
40
|
+
lines: [pointStr],
|
|
41
|
+
ids: [roomId]
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
ty.device.sendMqttMessage(params);
|
|
45
|
+
return normalResolve(PartDivisionEnum.query, params.message.taskId);
|
|
46
|
+
}
|
|
47
|
+
const command = encodePartitionDivision0x1c({
|
|
48
|
+
version: commandVersion,
|
|
49
|
+
origin,
|
|
50
|
+
points,
|
|
51
|
+
roomId
|
|
33
52
|
});
|
|
34
|
-
|
|
35
|
-
return
|
|
53
|
+
devices.common.model.actions.command_trans.set(command);
|
|
54
|
+
return Promise.resolve();
|
|
36
55
|
}
|
|
37
56
|
};
|
|
38
57
|
};
|
package/lib/mqtt/usePartMerge.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import "core-js/modules/esnext.iterator.constructor.js";
|
|
2
2
|
import "core-js/modules/esnext.iterator.some.js";
|
|
3
3
|
// 分区合并
|
|
4
|
+
import { useContext } from 'react';
|
|
4
5
|
import { createSetCommonParams } from './createCommonOptions';
|
|
5
6
|
import { normalResolve } from './promise';
|
|
6
7
|
import { PartMergeEnum } from './type';
|
|
8
|
+
import { SingletonContext } from './mqttProvider';
|
|
9
|
+
import { encodePartitionMerge0x1e } from '@ray-js/robot-protocol';
|
|
7
10
|
|
|
8
11
|
// 设置分区合并函数类型定义
|
|
9
12
|
|
|
@@ -13,6 +16,11 @@ import { PartMergeEnum } from './type';
|
|
|
13
16
|
* @returns 包含 setPartMerge 函数的对象
|
|
14
17
|
*/
|
|
15
18
|
export const usePartMerge = devId => {
|
|
19
|
+
const {
|
|
20
|
+
useStructuredMode,
|
|
21
|
+
devices,
|
|
22
|
+
commandVersion
|
|
23
|
+
} = useContext(SingletonContext);
|
|
16
24
|
/**
|
|
17
25
|
* 设置分区合并
|
|
18
26
|
* @param ids 要合并的分区ID数组
|
|
@@ -27,15 +35,23 @@ export const usePartMerge = devId => {
|
|
|
27
35
|
if (ids.some(id => typeof id !== 'number')) {
|
|
28
36
|
return Promise.reject(new Error('ids must be an array of numbers'));
|
|
29
37
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
if (useStructuredMode) {
|
|
39
|
+
const params = createSetCommonParams({
|
|
40
|
+
deviceId: devId,
|
|
41
|
+
reqType: PartMergeEnum.set,
|
|
42
|
+
message: {
|
|
43
|
+
ids
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
ty.device.sendMqttMessage(params);
|
|
47
|
+
return normalResolve(PartMergeEnum.query, params.message.taskId);
|
|
48
|
+
}
|
|
49
|
+
const command = encodePartitionMerge0x1e({
|
|
50
|
+
version: commandVersion,
|
|
51
|
+
roomIds: ids
|
|
36
52
|
});
|
|
37
|
-
|
|
38
|
-
return
|
|
53
|
+
devices.common.model.actions.command_trans.set(command);
|
|
54
|
+
return Promise.resolve();
|
|
39
55
|
}
|
|
40
56
|
};
|
|
41
57
|
};
|
package/lib/mqtt/usePassword.js
CHANGED
|
@@ -2,7 +2,13 @@ import md5 from 'crypto-js/md5';
|
|
|
2
2
|
import { createSetCommonParams } from './createCommonOptions';
|
|
3
3
|
import { normalResolve } from './promise';
|
|
4
4
|
import { PasswordEnum } from './type';
|
|
5
|
+
import { useContext } from 'react';
|
|
6
|
+
import { SingletonContext } from './mqttProvider';
|
|
5
7
|
export const usePassword = devId => {
|
|
8
|
+
const {
|
|
9
|
+
useStructuredMode
|
|
10
|
+
} = useContext(SingletonContext);
|
|
11
|
+
|
|
6
12
|
// 请求密码状态
|
|
7
13
|
|
|
8
14
|
// 设置密码
|
|
@@ -11,6 +17,7 @@ export const usePassword = devId => {
|
|
|
11
17
|
|
|
12
18
|
return {
|
|
13
19
|
requestPassword: () => {
|
|
20
|
+
if (!useStructuredMode) return null;
|
|
14
21
|
const params = createSetCommonParams({
|
|
15
22
|
deviceId: devId,
|
|
16
23
|
reqType: PasswordEnum.query
|
|
@@ -2,9 +2,12 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
3
|
const _excluded = ["startTime", "endTime"];
|
|
4
4
|
// 勿扰模式
|
|
5
|
+
import { useContext } from 'react';
|
|
5
6
|
import { createSetCommonParams } from './createCommonOptions';
|
|
6
7
|
import { normalResolve } from './promise';
|
|
7
8
|
import { QuietHoursEnum } from './type';
|
|
9
|
+
import { SingletonContext } from './mqttProvider';
|
|
10
|
+
import { encodeDoNotDisturb0x32 } from '@ray-js/robot-protocol';
|
|
8
11
|
|
|
9
12
|
// 设置勿扰模式函数类型定义
|
|
10
13
|
|
|
@@ -14,6 +17,11 @@ import { QuietHoursEnum } from './type';
|
|
|
14
17
|
* @returns 包含 setQuiteHours 和 requestQuiteHours 函数的对象
|
|
15
18
|
*/
|
|
16
19
|
export const useQuiteHours = devId => {
|
|
20
|
+
const {
|
|
21
|
+
useStructuredMode,
|
|
22
|
+
devices,
|
|
23
|
+
commandVersion
|
|
24
|
+
} = useContext(SingletonContext);
|
|
17
25
|
/**
|
|
18
26
|
* 请求勿扰模式数据
|
|
19
27
|
* @returns Promise<{ time: string[]; day: number; active: number }> 响应结果
|
|
@@ -32,29 +40,42 @@ export const useQuiteHours = devId => {
|
|
|
32
40
|
endTime
|
|
33
41
|
} = message,
|
|
34
42
|
others = _objectWithoutProperties(message, _excluded);
|
|
35
|
-
if (
|
|
36
|
-
|
|
43
|
+
if (useStructuredMode) {
|
|
44
|
+
if (!startTime || !endTime) {
|
|
45
|
+
throw new Error('Invalid time');
|
|
46
|
+
}
|
|
47
|
+
const {
|
|
48
|
+
hour: h0,
|
|
49
|
+
minute: m0
|
|
50
|
+
} = startTime;
|
|
51
|
+
const {
|
|
52
|
+
hour: h1,
|
|
53
|
+
minute: m1
|
|
54
|
+
} = endTime;
|
|
55
|
+
if (h0 > 23 || h0 < 0 || h1 > 23 || h1 < 0 || m0 > 59 || m0 < 0 || m1 > 59 || m1 < 0) {
|
|
56
|
+
throw new Error('Invalid time');
|
|
57
|
+
}
|
|
58
|
+
const params = createSetCommonParams({
|
|
59
|
+
deviceId: devId,
|
|
60
|
+
reqType: QuietHoursEnum.set,
|
|
61
|
+
message: _objectSpread({
|
|
62
|
+
time: [`${h0},${m0}`, `${h1},${m1}`]
|
|
63
|
+
}, others)
|
|
64
|
+
});
|
|
65
|
+
ty.device.sendMqttMessage(params);
|
|
66
|
+
return normalResolve(QuietHoursEnum.query, params.message.taskId);
|
|
37
67
|
}
|
|
38
|
-
const {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
const params = createSetCommonParams({
|
|
50
|
-
deviceId: devId,
|
|
51
|
-
reqType: QuietHoursEnum.set,
|
|
52
|
-
message: _objectSpread({
|
|
53
|
-
time: [`${h0},${m0}`, `${h1},${m1}`]
|
|
54
|
-
}, others)
|
|
68
|
+
const command = encodeDoNotDisturb0x32({
|
|
69
|
+
version: commandVersion,
|
|
70
|
+
startHour: startTime.hour,
|
|
71
|
+
startMinute: startTime.minute,
|
|
72
|
+
endHour: endTime.hour,
|
|
73
|
+
endMinute: endTime.minute
|
|
74
|
+
});
|
|
75
|
+
devices.common.model.actions.disturb_time_set.set(command);
|
|
76
|
+
return Promise.resolve({
|
|
77
|
+
success: true
|
|
55
78
|
});
|
|
56
|
-
ty.device.sendMqttMessage(params);
|
|
57
|
-
return normalResolve(QuietHoursEnum.query, params.message.taskId);
|
|
58
79
|
},
|
|
59
80
|
requestQuiteHours: () => {
|
|
60
81
|
const params = createSetCommonParams({
|
package/lib/mqtt/useResetMap.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
1
2
|
import { createSetCommonParams } from './createCommonOptions';
|
|
2
3
|
import { normalResolve } from './promise';
|
|
3
4
|
import { ResetCurrMapEnum } from './type';
|
|
5
|
+
import { SingletonContext } from './mqttProvider';
|
|
6
|
+
import { encodeResetMap0x42 } from '@ray-js/robot-protocol';
|
|
4
7
|
export const useResetMap = devId => {
|
|
8
|
+
const {
|
|
9
|
+
useStructuredMode,
|
|
10
|
+
devices,
|
|
11
|
+
commandVersion
|
|
12
|
+
} = useContext(SingletonContext);
|
|
5
13
|
// 重置地图
|
|
6
14
|
|
|
7
15
|
return {
|
|
8
16
|
setResetMap: () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
if (useStructuredMode) {
|
|
18
|
+
const params = createSetCommonParams({
|
|
19
|
+
deviceId: devId,
|
|
20
|
+
reqType: ResetCurrMapEnum.set
|
|
21
|
+
});
|
|
22
|
+
ty.device.sendMqttMessage(params);
|
|
23
|
+
return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
|
|
24
|
+
}
|
|
25
|
+
devices.common.model.actions.command_trans.set(encodeResetMap0x42({
|
|
26
|
+
version: commandVersion
|
|
27
|
+
}));
|
|
28
|
+
return Promise.resolve();
|
|
15
29
|
}
|
|
16
30
|
};
|
|
17
31
|
};
|
|
@@ -2,13 +2,20 @@ import { isArray } from 'lodash-es';
|
|
|
2
2
|
import { createSetCommonParams } from './createCommonOptions';
|
|
3
3
|
import { normalResolve } from './promise';
|
|
4
4
|
import { RoomPropertyEnum } from './type';
|
|
5
|
+
import { useContext } from 'react';
|
|
6
|
+
import { SingletonContext } from './mqttProvider';
|
|
5
7
|
export const useRoomProperty = devId => {
|
|
8
|
+
const {
|
|
9
|
+
useStructuredMode
|
|
10
|
+
} = useContext(SingletonContext);
|
|
11
|
+
|
|
6
12
|
// 请求房间属性
|
|
7
13
|
|
|
8
14
|
// 设置房间属性
|
|
9
15
|
|
|
10
16
|
return {
|
|
11
17
|
requestRoomProperty: () => {
|
|
18
|
+
if (!useStructuredMode) return null;
|
|
12
19
|
const params = createSetCommonParams({
|
|
13
20
|
deviceId: devId,
|
|
14
21
|
reqType: RoomPropertyEnum.query
|
|
@@ -11,6 +11,6 @@ interface Schedule {
|
|
|
11
11
|
type Response = BaseResponse & Schedule;
|
|
12
12
|
export declare const useSchedule: (devId: string) => {
|
|
13
13
|
requestSchedule: () => Promise<Response>;
|
|
14
|
-
setSchedule: (message: Schedule) => Promise<Response>;
|
|
14
|
+
setSchedule: (message: Schedule) => Promise<Response | void>;
|
|
15
15
|
};
|
|
16
16
|
export {};
|