0.1.0 • Published 1 year ago
@ebelong-lib/manager v0.1.0
DeviceManager
DeviceManager 是一个用于管理设备信息和属性的类。它提供了多种方法来获取和操作设备的属性和物模型。
安装
npm install @ebelong-lib/manager使用示例
import { DeviceManager } from '@ebelong-lib/manager';
import { SchemaCore, SchemaThings } from '@ebelong-lib/lianxi-openapi';
const deviceInfo: SchemaCore.components['schemas']['DeviceInfo'] = {
// 设备信息
withProperties: {
switch1: { value: '1', timestamp: 1633024800 },
load1: { value: '0', timestamp: 1633024800 },
},
schemaAlias: {
switch1: '开关1',
load1: '负载1',
},
};
const schema: SchemaThings.components['schemas']['DeviceSchema'][] = [
{
identifier: 'switch1',
name: '开关1',
affordance: '{"define": {"type": "boolean"}}',
},
{
identifier: 'load1',
name: '负载1',
affordance: '{"define": {"type": "boolean"}}',
},
];
const deviceManager = new DeviceManager(deviceInfo, schema);
// 获取设备其他属性
console.log(deviceManager.deviceOtherProperty);
// 获取设备load属性
console.log(deviceManager.deviceLoadProperty);
// 获取设备switch属性
console.log(deviceManager.deviceSwitchProperty);
// 判断是否是多路开关设备
console.log(deviceManager.isMultiSwitchDevice);
// 获取设备属性值
console.log(deviceManager.getDevicePropertyValue('switch1'));类属性和方法
属性
deviceInfo: 设备信息。withProperties: 设备属性。schema: 设备物模型。deviceOtherProperty: 设备其他属性,除了load和switch。deviceOtherPropertyKeys: 设备其他属性的key。deviceLoadProperty: 设备load属性。deviceLoadPropertyKeys: 设备load属性对应的key。deviceSwitchProperty: 设备switch属性。deviceSwitchPropertyKeys: 设备switch属性对应的key。isDisableCtrlOrtherProperty: 是否可以控制其他属性。isMultiSwitchDevice: 是否是多路开关设备。
方法
isSwitchWithoutLoad(identifier: string): 判断给定的标识符是否是没有load的switch。loadKey2switchKey(loadKey: string): load Key转switchKey。switchKey2loadKey(switchKey: string): switch Key转loadKey。getSchemaPropertyName(identifier?: string): 获取设备物模型属性名。getDevicePropertyValue(identifier: string): 获取设备对应属性值。
WebSocketManager
WebSocketManager 是一个用于管理 WebSocket 连接的类。它提供了多种方法来连接、发送和接收 WebSocket 消息,并处理心跳检测和自动重连。
安装
npm install @ebelong-lib/manager使用示例
import WebSocketManager from '@ebelong-lib/manager';
import { AuthHeader } from "@ebelong-lib/lianxi-openapi/dist/types.core";
// 初始化 WebSocketManager 实例
const baseUrl = "wss://example.com/websocket";
const headers: AuthHeader = {
Authorization: "Bearer your_token_here",
};
WebSocketManager.init(baseUrl, headers);
// 获取 WebSocketManager 单例实例
const wsManager = WebSocketManager.instance;
// 连接 WebSocket
wsManager?.connect().then(() => {
console.log("WebSocket 已连接");
// 订阅消息
wsManager.subscribe({
code: "devicePropertyReport",
params: {
productID: "your_product_id",
deviceName: "your_device_name",
},
}, (data) => {
console.log("收到订阅消息:", data);
});
// 监听消息
wsManager.onMessage((message) => {
console.log("收到消息:", message);
});
}).catch((error) => {
console.error("WebSocket 连接失败:", error);
});
// 关闭 WebSocket 连接
wsManager?.close();类属性和方法
属性
instance: 单例实例。
方法
init(baseUrl: string, headers?: AuthHeader): 初始化 WebSocketManager 实例。connect(): 连接 WebSocket。subscribe(params: WebSocketSendData["body"], deviceSubcallback?: (data: WebSocketCallBackData) => void): 订阅消息。unsubscribe(params: WebSocketSendData["body"]): 取消订阅消息。onMessage(callback: (message: WebSocketCallBackData) => void): 处理接收到的消息。close(): 关闭 WebSocket 连接并清除实例。