scada-engine 1.0.0
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/LICENSE +21 -0
- package/README.md +193 -0
- package/dist/draco/gltf/draco_decoder.js +33 -0
- package/dist/draco/gltf/draco_decoder.wasm +0 -0
- package/dist/draco/gltf/draco_encoder.js +33 -0
- package/dist/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/dist/index.d.ts +3 -0
- package/dist/scada-engine.css +1 -0
- package/dist/scada-engine.es.js +22936 -0
- package/dist/scada-engine.umd.js +1356 -0
- package/dist/src/features/canvas/components/CanvasArea.d.ts +4 -0
- package/dist/src/features/canvas/components/CanvasConfigPanel.d.ts +2 -0
- package/dist/src/features/canvas/index.d.ts +9 -0
- package/dist/src/features/canvas/managers/configWatcher.d.ts +49 -0
- package/dist/src/features/canvas/managers/dataHandler.d.ts +70 -0
- package/dist/src/features/canvas/managers/layerManager.d.ts +88 -0
- package/dist/src/features/canvas/operations/edgeOperations.d.ts +52 -0
- package/dist/src/features/canvas/operations/graphOperations.d.ts +85 -0
- package/dist/src/features/canvas/operations/nodeOperations.d.ts +77 -0
- package/dist/src/features/data-source/components/DataSourceDialog.d.ts +26 -0
- package/dist/src/features/data-source/components/MappingConfigurator.d.ts +27 -0
- package/dist/src/features/data-source/index.d.ts +14 -0
- package/dist/src/features/data-source/services/dataBindingService.d.ts +86 -0
- package/dist/src/features/data-source/services/dataParser.d.ts +110 -0
- package/dist/src/features/data-source/services/dataSourceManager.d.ts +127 -0
- package/dist/src/features/data-source/services/httpService.d.ts +73 -0
- package/dist/src/features/data-source/services/mqttService.d.ts +110 -0
- package/dist/src/features/data-source/services/sseService.d.ts +75 -0
- package/dist/src/features/data-source/services/websocketService.d.ts +67 -0
- package/dist/src/features/data-source/types/dataAdapter.d.ts +184 -0
- package/dist/src/features/data-source/types/device.d.ts +131 -0
- package/dist/src/features/preview/Preview.d.ts +2 -0
- package/dist/src/features/preview/components/NodeTooltip.d.ts +62 -0
- package/dist/src/features/preview/index.d.ts +1 -0
- package/dist/src/features/property-panel/PropertyPanel.d.ts +45 -0
- package/dist/src/features/property-panel/cards/BindingCard.d.ts +39 -0
- package/dist/src/features/property-panel/cards/EventCard.d.ts +63 -0
- package/dist/src/features/property-panel/index.d.ts +6 -0
- package/dist/src/features/property-panel/tabs/BasicPropertiesTab.d.ts +51 -0
- package/dist/src/features/property-panel/tabs/DataPropertiesTab.d.ts +24 -0
- package/dist/src/features/property-panel/tabs/EdgePropertiesTab.d.ts +22 -0
- package/dist/src/features/workflow/WorkflowDialog.d.ts +37 -0
- package/dist/src/features/workflow/WorkflowEditor.d.ts +38 -0
- package/dist/src/features/workflow/components/AddNodeMenu.d.ts +32 -0
- package/dist/src/features/workflow/components/ElementSelector.d.ts +37 -0
- package/dist/src/features/workflow/components/PropertyPanel.d.ts +27 -0
- package/dist/src/features/workflow/components/WorkflowToolbar.d.ts +24 -0
- package/dist/src/features/workflow/components/node-configs/ClearTimerConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/ConditionConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/CustomCodeConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/GetPropertyConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/HttpRequestConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/SetPropertyConfig.d.ts +20 -0
- package/dist/src/features/workflow/components/node-configs/TimerConfig.d.ts +20 -0
- package/dist/src/features/workflow/config/nodeConfigRegistry.d.ts +5 -0
- package/dist/src/features/workflow/index.d.ts +6 -0
- package/dist/src/features/workflow/services/canvasElementService.d.ts +31 -0
- package/dist/src/features/workflow/types/element.d.ts +16 -0
- package/dist/src/features/workflow/types/node.d.ts +70 -0
- package/dist/src/index.d.ts +161 -0
- package/dist/src/main.d.ts +1 -0
- package/dist/src/scada-components/canvas/config.d.ts +17 -0
- package/dist/src/scada-components/canvas/index.d.ts +6 -0
- package/dist/src/scada-components/canvas/manager.d.ts +95 -0
- package/dist/src/scada-components/canvas/types.d.ts +77 -0
- package/dist/src/scada-components/chart/echarts-gauge/EChartsGauge.d.ts +14 -0
- package/dist/src/scada-components/chart/echarts-gauge/index.d.ts +6 -0
- package/dist/src/scada-components/chart/echarts-gauge/presets.d.ts +18 -0
- package/dist/src/scada-components/chart/echarts-line/EChartsLine.d.ts +14 -0
- package/dist/src/scada-components/chart/echarts-line/index.d.ts +6 -0
- package/dist/src/scada-components/chart/echarts-line/presets.d.ts +13 -0
- package/dist/src/scada-components/chart/index.d.ts +5 -0
- package/dist/src/scada-components/index.d.ts +7 -0
- package/dist/src/scada-components/registry.d.ts +117 -0
- package/dist/src/scada-components/types.d.ts +108 -0
- package/dist/src/shared/animation/animationEngine.d.ts +68 -0
- package/dist/src/shared/animation/animationScheduler.d.ts +85 -0
- package/dist/src/shared/animation/index.d.ts +2 -0
- package/dist/src/shared/components/ComponentLibrary.d.ts +34 -0
- package/dist/src/shared/components/ContextMenu.d.ts +63 -0
- package/dist/src/shared/components/Footer.d.ts +41 -0
- package/dist/src/shared/components/Header.d.ts +73 -0
- package/dist/src/shared/components/dialogs/AttributeConfigDialog.d.ts +39 -0
- package/dist/src/shared/components/dialogs/CustomCodeDialog.d.ts +30 -0
- package/dist/src/shared/components/dialogs/WorkflowSelectorDialog.d.ts +15 -0
- package/dist/src/shared/components/index.d.ts +8 -0
- package/dist/src/shared/components/selectors/ComponentPointSelector.d.ts +29 -0
- package/dist/src/shared/managers/contextMenuManager.d.ts +27 -0
- package/dist/src/shared/managers/eventManager.d.ts +62 -0
- package/dist/src/shared/managers/index.d.ts +3 -0
- package/dist/src/shared/managers/workerManager.d.ts +57 -0
- package/dist/src/shared/types/binding.d.ts +75 -0
- package/dist/src/shared/types/index.d.ts +2 -0
- package/dist/src/shared/types/workflow.d.ts +195 -0
- package/dist/src/shared/utils/commonUtils.d.ts +83 -0
- package/dist/src/shared/utils/edgeAnimationUtils.d.ts +16 -0
- package/dist/src/shared/utils/eventUtils.d.ts +43 -0
- package/dist/src/shared/utils/fileUtils.d.ts +43 -0
- package/dist/src/shared/utils/index.d.ts +7 -0
- package/dist/src/shared/utils/messageUtils.d.ts +56 -0
- package/dist/src/shared/utils/nodePropertyUtils.d.ts +33 -0
- package/dist/src/shared/utils/storageUtils.d.ts +32 -0
- package/dist/src/svg/core/index.d.ts +7 -0
- package/dist/src/svg/core/loader.d.ts +71 -0
- package/dist/src/svg/core/parser.d.ts +41 -0
- package/dist/src/svg/core/types.d.ts +297 -0
- package/dist/src/svg/helpers/demo.d.ts +20 -0
- package/dist/src/svg/helpers/index.d.ts +5 -0
- package/dist/src/svg/helpers/utils.d.ts +25 -0
- package/dist/src/svg/index.d.ts +9 -0
- package/dist/src/svg/rendering/SVGRenderer.d.ts +22 -0
- package/dist/src/svg/rendering/animationTemplates.d.ts +82 -0
- package/dist/src/svg/rendering/index.d.ts +6 -0
- package/dist/src/utils/authCrypto.d.ts +16 -0
- package/dist/src/utils/dracoLoader.d.ts +3 -0
- package/dist/src/utils/index.d.ts +29 -0
- package/dist/src/utils/viewportCulling.d.ts +63 -0
- package/dist/src/workers/dataProcessor.worker.d.ts +21 -0
- package/dist/utils-Ncgt7Dqu.js +1057 -0
- package/package.json +85 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据解析工具
|
|
3
|
+
* 提供通用的数据格式解析和转换功能
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 设备数据接口
|
|
7
|
+
*/
|
|
8
|
+
export interface DeviceData {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
points: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
name?: string;
|
|
14
|
+
value: any;
|
|
15
|
+
quality?: 'good' | 'bad' | 'uncertain';
|
|
16
|
+
timestamp?: string;
|
|
17
|
+
unit?: string;
|
|
18
|
+
dataType?: 'number' | 'boolean' | 'string';
|
|
19
|
+
}>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 数据解析器类
|
|
23
|
+
*/
|
|
24
|
+
export declare class DataParser {
|
|
25
|
+
/**
|
|
26
|
+
* 自动解析设备数据(支持多种格式)
|
|
27
|
+
* @param data 原始数据
|
|
28
|
+
* @param defaultDeviceId 默认设备ID(用于简化点位数组格式)
|
|
29
|
+
* @param defaultDeviceName 默认设备名称(用于简化点位数组格式)
|
|
30
|
+
*/
|
|
31
|
+
static parseDeviceData(data: any, defaultDeviceId?: string, defaultDeviceName?: string): DeviceData | null;
|
|
32
|
+
/**
|
|
33
|
+
* 检查是否为简化点位数组格式
|
|
34
|
+
*/
|
|
35
|
+
private static isSimplifiedPointsArray;
|
|
36
|
+
/**
|
|
37
|
+
* 解析简化点位数组格式
|
|
38
|
+
*/
|
|
39
|
+
private static parseSimplifiedPointsArray;
|
|
40
|
+
/**
|
|
41
|
+
* 检查是否为标准格式
|
|
42
|
+
*/
|
|
43
|
+
private static isStandardFormat;
|
|
44
|
+
/**
|
|
45
|
+
* 解析标准格式
|
|
46
|
+
*/
|
|
47
|
+
private static parseStandardFormat;
|
|
48
|
+
/**
|
|
49
|
+
* 检查是否为单点位格式
|
|
50
|
+
*/
|
|
51
|
+
private static isSinglePointFormat;
|
|
52
|
+
/**
|
|
53
|
+
* 解析单点位格式
|
|
54
|
+
*/
|
|
55
|
+
private static parseSinglePointFormat;
|
|
56
|
+
/**
|
|
57
|
+
* 检查是否为扁平化格式
|
|
58
|
+
*/
|
|
59
|
+
private static isFlatFormat;
|
|
60
|
+
/**
|
|
61
|
+
* 解析扁平化格式
|
|
62
|
+
*/
|
|
63
|
+
private static parseFlatFormat;
|
|
64
|
+
/**
|
|
65
|
+
* 检查是否为嵌套格式
|
|
66
|
+
*/
|
|
67
|
+
private static isNestedFormat;
|
|
68
|
+
/**
|
|
69
|
+
* 解析嵌套格式
|
|
70
|
+
*/
|
|
71
|
+
private static parseNestedFormat;
|
|
72
|
+
/**
|
|
73
|
+
* 推断数据类型
|
|
74
|
+
*/
|
|
75
|
+
private static inferDataType;
|
|
76
|
+
/**
|
|
77
|
+
* 创建自定义解析器
|
|
78
|
+
* @param mappingConfig 字段映射配置
|
|
79
|
+
* @returns 解析函数
|
|
80
|
+
*/
|
|
81
|
+
static createCustomParser(mappingConfig: {
|
|
82
|
+
deviceId: string | ((data: any) => string);
|
|
83
|
+
deviceName?: string | ((data: any) => string);
|
|
84
|
+
points: string | ((data: any) => any[]);
|
|
85
|
+
pointId?: string | ((data: any, point: any) => string);
|
|
86
|
+
pointValue?: string | ((data: any, point: any) => any);
|
|
87
|
+
}): (data: any) => DeviceData;
|
|
88
|
+
/**
|
|
89
|
+
* 通过路径获取值
|
|
90
|
+
*/
|
|
91
|
+
private static getValueByPath;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 常用解析器预设
|
|
95
|
+
*/
|
|
96
|
+
export declare const ParserPresets: {
|
|
97
|
+
/**
|
|
98
|
+
* 物联网平台标准格式
|
|
99
|
+
*/
|
|
100
|
+
iotPlatform: (data: any) => DeviceData;
|
|
101
|
+
/**
|
|
102
|
+
* Modbus 格式
|
|
103
|
+
*/
|
|
104
|
+
modbus: (data: any) => DeviceData;
|
|
105
|
+
/**
|
|
106
|
+
* OPC UA 格式
|
|
107
|
+
*/
|
|
108
|
+
opcua: (data: any) => DeviceData;
|
|
109
|
+
};
|
|
110
|
+
export declare const defaultParser: typeof DataParser.parseDeviceData;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据源管理服务
|
|
3
|
+
* 统一管理多个数据源连接(MQTT、WebSocket、HTTP等)
|
|
4
|
+
*/
|
|
5
|
+
export interface DataSource {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: 'MQTT' | 'WebSocket' | 'HTTP' | 'SSE';
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
config: {
|
|
11
|
+
broker?: string;
|
|
12
|
+
topic?: string;
|
|
13
|
+
clientId?: string;
|
|
14
|
+
username?: string;
|
|
15
|
+
password?: string;
|
|
16
|
+
wsUrl?: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
method?: string;
|
|
19
|
+
pollInterval?: number;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
sseUrl?: string;
|
|
22
|
+
eventType?: string;
|
|
23
|
+
dataPath?: string;
|
|
24
|
+
retryCount?: number;
|
|
25
|
+
customParser?: (data: any) => any;
|
|
26
|
+
};
|
|
27
|
+
status?: {
|
|
28
|
+
connected: boolean;
|
|
29
|
+
lastUpdate?: string;
|
|
30
|
+
error?: string;
|
|
31
|
+
};
|
|
32
|
+
devices: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
points: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
value: any;
|
|
38
|
+
quality?: string;
|
|
39
|
+
timestamp?: string;
|
|
40
|
+
}>;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
export declare class DataSourceManager {
|
|
44
|
+
private dataSources;
|
|
45
|
+
private connections;
|
|
46
|
+
private onDataCallbacks;
|
|
47
|
+
/**
|
|
48
|
+
* 添加数据源
|
|
49
|
+
*/
|
|
50
|
+
addDataSource(dataSource: DataSource): void;
|
|
51
|
+
/**
|
|
52
|
+
* 更新数据源
|
|
53
|
+
*/
|
|
54
|
+
updateDataSource(id: string, updates: Partial<DataSource>): void;
|
|
55
|
+
/**
|
|
56
|
+
* 删除数据源
|
|
57
|
+
*/
|
|
58
|
+
removeDataSource(id: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* 获取数据源
|
|
61
|
+
*/
|
|
62
|
+
getDataSource(id: string): DataSource | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* 获取所有数据源
|
|
65
|
+
*/
|
|
66
|
+
getAllDataSources(): DataSource[];
|
|
67
|
+
/**
|
|
68
|
+
* 获取所有设备(来自所有数据源)
|
|
69
|
+
*/
|
|
70
|
+
getAllDevices(): Array<{
|
|
71
|
+
dataSourceId: string;
|
|
72
|
+
dataSourceName: string;
|
|
73
|
+
device: any;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* 连接数据源
|
|
77
|
+
*/
|
|
78
|
+
private connectDataSource;
|
|
79
|
+
/**
|
|
80
|
+
* 断开数据源连接
|
|
81
|
+
*/
|
|
82
|
+
private disconnectDataSource;
|
|
83
|
+
/**
|
|
84
|
+
* 重新连接数据源
|
|
85
|
+
*/
|
|
86
|
+
private reconnectDataSource;
|
|
87
|
+
/**
|
|
88
|
+
* 连接 MQTT
|
|
89
|
+
*/
|
|
90
|
+
private connectMqtt;
|
|
91
|
+
/**
|
|
92
|
+
* 连接 WebSocket
|
|
93
|
+
*/
|
|
94
|
+
private connectWebSocket;
|
|
95
|
+
/**
|
|
96
|
+
* 连接 HTTP
|
|
97
|
+
*/
|
|
98
|
+
private connectHttp;
|
|
99
|
+
/**
|
|
100
|
+
* 连接 SSE
|
|
101
|
+
*/
|
|
102
|
+
private connectSSE;
|
|
103
|
+
/**
|
|
104
|
+
* 处理接收到的原始数据
|
|
105
|
+
* 解析并更新设备列表,然后传递给回调
|
|
106
|
+
*/
|
|
107
|
+
private handleDeviceData;
|
|
108
|
+
/**
|
|
109
|
+
* 解析并更新设备列表
|
|
110
|
+
*/
|
|
111
|
+
private parseAndUpdateDevices;
|
|
112
|
+
/**
|
|
113
|
+
* 注册数据接收回调
|
|
114
|
+
*/
|
|
115
|
+
onData(callback: (dataSourceId: string, deviceData: any) => void): void;
|
|
116
|
+
/**
|
|
117
|
+
* 断开所有连接
|
|
118
|
+
*/
|
|
119
|
+
disconnectAll(): void;
|
|
120
|
+
/**
|
|
121
|
+
* 获取数据源状态
|
|
122
|
+
*/
|
|
123
|
+
getDataSourceStatus(id: string): {
|
|
124
|
+
connected: boolean;
|
|
125
|
+
} | null;
|
|
126
|
+
}
|
|
127
|
+
export declare const dataSourceManager: DataSourceManager;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 轮询服务模块
|
|
3
|
+
* 负责 HTTP 轮询原始数据接收
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* HTTP 配置接口
|
|
7
|
+
*/
|
|
8
|
+
export interface HttpConfig {
|
|
9
|
+
/** 接口地址 */
|
|
10
|
+
url: string;
|
|
11
|
+
/** 请求方法 */
|
|
12
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
13
|
+
/** 轮询间隔(ms) */
|
|
14
|
+
pollInterval?: number;
|
|
15
|
+
/** 请求头 */
|
|
16
|
+
headers?: Record<string, string>;
|
|
17
|
+
/** 请求体(POST/PUT) */
|
|
18
|
+
body?: any;
|
|
19
|
+
/** 数据路径(用于解析嵌套数据) */
|
|
20
|
+
dataPath?: string;
|
|
21
|
+
/** 启用状态 */
|
|
22
|
+
enabled?: boolean;
|
|
23
|
+
/** 超时时间(ms) */
|
|
24
|
+
timeout?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* HTTP 轮询服务类
|
|
28
|
+
*/
|
|
29
|
+
export declare class HttpService {
|
|
30
|
+
private config;
|
|
31
|
+
private onDataCallback;
|
|
32
|
+
private onErrorCallback;
|
|
33
|
+
private onStatusChangeCallback;
|
|
34
|
+
private intervalId;
|
|
35
|
+
private isPolling;
|
|
36
|
+
private abortController;
|
|
37
|
+
/**
|
|
38
|
+
* 启动轮询
|
|
39
|
+
*/
|
|
40
|
+
start(config: HttpConfig): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* 执行轮询请求
|
|
43
|
+
*/
|
|
44
|
+
private poll;
|
|
45
|
+
/**
|
|
46
|
+
* 设置数据接收回调
|
|
47
|
+
*/
|
|
48
|
+
onData(callback: (data: any) => void): void;
|
|
49
|
+
/**
|
|
50
|
+
* 设置错误回调
|
|
51
|
+
*/
|
|
52
|
+
onError(callback: (error: Error) => void): void;
|
|
53
|
+
/**
|
|
54
|
+
* 设置状态变化回调
|
|
55
|
+
*/
|
|
56
|
+
onStatusChange(callback: (connected: boolean) => void): void;
|
|
57
|
+
/**
|
|
58
|
+
* 停止轮询
|
|
59
|
+
*/
|
|
60
|
+
stop(): void;
|
|
61
|
+
/**
|
|
62
|
+
* 获取轮询状态
|
|
63
|
+
*/
|
|
64
|
+
getPollingStatus(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* 获取当前配置
|
|
67
|
+
*/
|
|
68
|
+
getConfig(): HttpConfig | null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 创建 HTTP 服务实例
|
|
72
|
+
*/
|
|
73
|
+
export declare function createHttpService(): HttpService;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MQTT 服务模块
|
|
3
|
+
* 负责 MQTT 连接管理和数据接收
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* MQTT 配置接口
|
|
7
|
+
*/
|
|
8
|
+
export interface MqttConfig {
|
|
9
|
+
/** 服务器地址 */
|
|
10
|
+
broker: string;
|
|
11
|
+
/** 客户端ID(可选,自动生成) */
|
|
12
|
+
clientId?: string;
|
|
13
|
+
/** 订阅主题 */
|
|
14
|
+
topic: string;
|
|
15
|
+
/** 用户名(可选) */
|
|
16
|
+
username?: string;
|
|
17
|
+
/** 密码(可选) */
|
|
18
|
+
password?: string;
|
|
19
|
+
/** 数据路径(用于解析嵌套数据,例如:value) */
|
|
20
|
+
dataPath?: string;
|
|
21
|
+
/** 启用状态 */
|
|
22
|
+
enabled?: boolean;
|
|
23
|
+
/** 错误重试次数 */
|
|
24
|
+
retryCount?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 设备点位数据接口
|
|
28
|
+
*/
|
|
29
|
+
export interface DevicePointData {
|
|
30
|
+
/** 点位 ID */
|
|
31
|
+
id: string;
|
|
32
|
+
/** 点位名称 */
|
|
33
|
+
name?: string;
|
|
34
|
+
/** 点位编码 */
|
|
35
|
+
code?: string;
|
|
36
|
+
/** 数据类型 */
|
|
37
|
+
dataType?: 'boolean' | 'number' | 'string';
|
|
38
|
+
/** 访问权限 */
|
|
39
|
+
accessMode?: 'read' | 'write' | 'readWrite';
|
|
40
|
+
/** 点位值 */
|
|
41
|
+
value: any;
|
|
42
|
+
/** 数据质量 */
|
|
43
|
+
quality?: 'good' | 'bad' | 'uncertain';
|
|
44
|
+
/** 时间戳 */
|
|
45
|
+
timestamp?: string;
|
|
46
|
+
/** 单位 */
|
|
47
|
+
unit?: string;
|
|
48
|
+
/** 是否启用 */
|
|
49
|
+
enabled?: boolean;
|
|
50
|
+
/** 精度 */
|
|
51
|
+
precision?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 设备数据接口
|
|
55
|
+
*/
|
|
56
|
+
export interface DeviceData {
|
|
57
|
+
/** 设备ID */
|
|
58
|
+
id: string;
|
|
59
|
+
/** 设备名称 */
|
|
60
|
+
name?: string;
|
|
61
|
+
/** 点位数据 */
|
|
62
|
+
points: DevicePointData[];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* MQTT 服务类
|
|
66
|
+
*/
|
|
67
|
+
export declare class MqttService {
|
|
68
|
+
private client;
|
|
69
|
+
private config;
|
|
70
|
+
private onDataCallback;
|
|
71
|
+
private onErrorCallback;
|
|
72
|
+
private onStatusChangeCallback;
|
|
73
|
+
private isConnected;
|
|
74
|
+
/**
|
|
75
|
+
* 连接 MQTT 服务器
|
|
76
|
+
*/
|
|
77
|
+
connect(config: MqttConfig): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* 设置数据接收回调
|
|
80
|
+
*/
|
|
81
|
+
onData(callback: (data: DeviceData) => void): void;
|
|
82
|
+
/**
|
|
83
|
+
* 设置错误回调
|
|
84
|
+
*/
|
|
85
|
+
onError(callback: (error: Error) => void): void;
|
|
86
|
+
/**
|
|
87
|
+
* 设置连接状态变化回调
|
|
88
|
+
*/
|
|
89
|
+
onStatusChange(callback: (connected: boolean) => void): void;
|
|
90
|
+
/**
|
|
91
|
+
* 发布消息
|
|
92
|
+
*/
|
|
93
|
+
publish(topic: string, message: string | object): void;
|
|
94
|
+
/**
|
|
95
|
+
* 断开连接
|
|
96
|
+
*/
|
|
97
|
+
disconnect(): void;
|
|
98
|
+
/**
|
|
99
|
+
* 获取连接状态
|
|
100
|
+
*/
|
|
101
|
+
getConnectionStatus(): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* 获取当前配置
|
|
104
|
+
*/
|
|
105
|
+
getConfig(): MqttConfig | null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 创建 MQTT 服务实例
|
|
109
|
+
*/
|
|
110
|
+
export declare function createMqttService(): MqttService;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE (Server-Sent Events) 服务模块
|
|
3
|
+
* 负责 SSE 连接管理和原始数据接收
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* SSE 配置接口
|
|
7
|
+
*/
|
|
8
|
+
export interface SseConfig {
|
|
9
|
+
/** SSE 服务地址 */
|
|
10
|
+
url: string;
|
|
11
|
+
/** 事件类型(默认 'message') */
|
|
12
|
+
eventType?: string;
|
|
13
|
+
/** 数据路径(用于解析嵌套数据) */
|
|
14
|
+
dataPath?: string;
|
|
15
|
+
/** 启用状态 */
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
/** 自动重连 */
|
|
18
|
+
autoReconnect?: boolean;
|
|
19
|
+
/** 重连延迟(ms) */
|
|
20
|
+
reconnectDelay?: number;
|
|
21
|
+
/** 请求头(用于认证等) */
|
|
22
|
+
withCredentials?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* SSE 服务类
|
|
26
|
+
*/
|
|
27
|
+
export declare class SseService {
|
|
28
|
+
private eventSource;
|
|
29
|
+
private config;
|
|
30
|
+
private onDataCallback;
|
|
31
|
+
private onErrorCallback;
|
|
32
|
+
private onStatusChangeCallback;
|
|
33
|
+
private isConnected;
|
|
34
|
+
private reconnectTimer;
|
|
35
|
+
/**
|
|
36
|
+
* 连接 SSE 服务器
|
|
37
|
+
*/
|
|
38
|
+
connect(config: SseConfig): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* 处理接收到的消息
|
|
41
|
+
*/
|
|
42
|
+
private handleMessage;
|
|
43
|
+
/**
|
|
44
|
+
* 设置数据接收回调
|
|
45
|
+
*/
|
|
46
|
+
onData(callback: (data: any) => void): void;
|
|
47
|
+
/**
|
|
48
|
+
* 设置错误回调
|
|
49
|
+
*/
|
|
50
|
+
onError(callback: (error: Error) => void): void;
|
|
51
|
+
/**
|
|
52
|
+
* 设置状态变化回调
|
|
53
|
+
*/
|
|
54
|
+
onStatusChange(callback: (connected: boolean) => void): void;
|
|
55
|
+
/**
|
|
56
|
+
* 断开连接
|
|
57
|
+
*/
|
|
58
|
+
disconnect(): void;
|
|
59
|
+
/**
|
|
60
|
+
* 获取连接状态
|
|
61
|
+
*/
|
|
62
|
+
getConnectionStatus(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* 获取当前配置
|
|
65
|
+
*/
|
|
66
|
+
getConfig(): SseConfig | null;
|
|
67
|
+
/**
|
|
68
|
+
* 获取 EventSource readyState
|
|
69
|
+
*/
|
|
70
|
+
getReadyState(): number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 创建 SSE 服务实例
|
|
74
|
+
*/
|
|
75
|
+
export declare function createSseService(): SseService;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket 服务模块
|
|
3
|
+
* 负责 WebSocket 连接管理和原始数据接收
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* WebSocket 配置接口
|
|
7
|
+
*/
|
|
8
|
+
export interface WebSocketConfig {
|
|
9
|
+
/** WebSocket 服务地址 */
|
|
10
|
+
url: string;
|
|
11
|
+
/** 数据路径(用于解析嵌套数据) */
|
|
12
|
+
dataPath?: string;
|
|
13
|
+
/** 启用状态 */
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
/** 自动重连 */
|
|
16
|
+
autoReconnect?: boolean;
|
|
17
|
+
/** 重连延迟(ms) */
|
|
18
|
+
reconnectDelay?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* WebSocket 服务类
|
|
22
|
+
*/
|
|
23
|
+
export declare class WebSocketService {
|
|
24
|
+
private ws;
|
|
25
|
+
private config;
|
|
26
|
+
private onDataCallback;
|
|
27
|
+
private onErrorCallback;
|
|
28
|
+
private onStatusChangeCallback;
|
|
29
|
+
private isConnected;
|
|
30
|
+
private reconnectTimer;
|
|
31
|
+
/**
|
|
32
|
+
* 连接 WebSocket 服务器
|
|
33
|
+
*/
|
|
34
|
+
connect(config: WebSocketConfig): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* 发送消息
|
|
37
|
+
*/
|
|
38
|
+
send(data: any): void;
|
|
39
|
+
/**
|
|
40
|
+
* 设置数据接收回调
|
|
41
|
+
*/
|
|
42
|
+
onData(callback: (data: any) => void): void;
|
|
43
|
+
/**
|
|
44
|
+
* 设置错误回调
|
|
45
|
+
*/
|
|
46
|
+
onError(callback: (error: Error) => void): void;
|
|
47
|
+
/**
|
|
48
|
+
* 设置状态变化回调
|
|
49
|
+
*/
|
|
50
|
+
onStatusChange(callback: (connected: boolean) => void): void;
|
|
51
|
+
/**
|
|
52
|
+
* 断开连接
|
|
53
|
+
*/
|
|
54
|
+
disconnect(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 获取连接状态
|
|
57
|
+
*/
|
|
58
|
+
getConnectionStatus(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* 获取当前配置
|
|
61
|
+
*/
|
|
62
|
+
getConfig(): WebSocketConfig | null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 创建 WebSocket 服务实例
|
|
66
|
+
*/
|
|
67
|
+
export declare function createWebSocketService(): WebSocketService;
|