SmartDevicesManager(options?: { logConfig?: LogConfig })

版本要求:
@ray-js/panel-sdk≥1.16.0

描述

多设备管理器:统一管理多个设备实例,负责批量初始化、全局事件路由、全局状态缓存,以及 add / batchAdd / delete 等标准化操作。 构造器本身零副作用,不会注册任何全局监听。

参数

参数类型必填说明
options{ logConfig?: LogConfig }否配置选项

返回值

类型:SmartDevicesManager
SmartDevicesManager 实例

引用对象

typeLogConfig日志配置
属性类型必填描述
level"VERBOSE" | "SUCCESS" | "INFO" | "WARN" | "FATAL"否日志输出级别,默认 INFO,如果想要默认去掉每次 DP 点下发上报打印的信息时,可配置为 WARN 级别以上

方法

方法名说明
init开始监听全局事件(Ray 全局 DP/上下线等),幂等调用。
on订阅多设备管理器变更事件。 SdmProvider 内部已通过 change 事件驱动多设备 Hooks 刷新;常规业务通常无需手动监听。 仅在 Provider 外部监听设备状态变化(如全局日志、非 React 组件等场景)时使用。
off取消订阅多设备管理器变更事件。 需传入与 on 时相同的事件名和回调引用。
add添加单个设备实例并完成初始化。 若尚未 init() 会先自动 init(),保证向后兼容。 常见场景是动态添加单台关联设备;若 deviceId 已存在则抛出错误。
batchAdd批量向多设备管理器中添加设备实例。内部会先批量拉取设备信息(单次网络请求),再按 concurrency 并发初始化,支持部分失败并在返回结果中区分成功与失败列表。 每台设备都可独立配置 interceptors 与 logConfig。
delete删除设备实例。 从多设备管理器中删除指定 key 对应的设备实例,自动调用该实例的 destroy() 并清理内部映射。
batchDelete批量删除多设备管理器中指定 key 列表对应的设备实例,内部对每个 key 依次调用 delete({ key }),自动触发实例销毁与内部映射清理。
getDevices获取所有已注册设备实例的浅拷贝,以 key 为索引。 常用于需要直接操作设备实例而非通过 Hooks 的场景,例如在事件回调中遍历所有设备。
isAllInitialized检查所有已添加设备是否已初始化完成。
destroy销毁多设备管理器:注销所有全局事件监听器、移除全部 change 事件订阅、销毁并清理所有设备实例与内部映射。

示例代码

创建多设备管理器

const manager = new SmartDevicesManager();
manager.init();
manager.add({ key: 'lamp1', deviceId: '1234567890' });
manager.add({ key: 'lamp2', deviceId: '1234567891' });