Device
设备SDK模块类,可以提供读取空间设备资源的相关操作能力
属性
list
获取当前空间所有的设备元数据列表
类型:
DeviceMetaData[]
示例
import Tacos, { Root } from "@tslfe/tacos-sdk";
import type { Device } from "@tslfe/tacos-sdk";
...
const device = await root.search<Device>("/Office/devices/*");
const list = device.list;
// return
// devices: [{
// "id": "integer",
// "spaceId": "12032323",
// "zhname": "设备中文名称",
// "name": "string",
// "driver": "HitachiVRV",
// "type": "VRV",
// "attrs": {
// "ref": "string"
// }
// },...]
方法
state()
获取设备状态集合
function state: () => Promise<DeviceMetaData[]>
参数
- 无
返回类型
Promise<DeviceMetaData[]>
示例
const states = await device.state();
findById()
根据设备 ID
查询指定的设备SDK实例
function findById: (id: string) => Device
参考:Device
参数
id
: 设备ID
返回类型
Device
示例
const subDevice = device.findById("10010");
getDrivers()
获取当前设备集合的驱动元数据
function getDrivers : () => Promise<DeviceDriver[]>
参考:DeviceDriver
参数
- 无
返回类型
Promise<DeviceDriver[]>
示例
const deviceDrivers = await device.getDrivers();
v2.0.0+
cmd()执行空间物模型设备相关指令下发(代替原动态指令)
function cmd(
identifier: string,
inputProperties?: Record<string, any> | Record<string, any>[]
) => Promise<any>
参数
返回类型
Promise<any>
示例
// 开灯
const result = await device.cmd("switch_status_set", {
switch_status_value: 1
});
弃用方法
动态指令 已弃用
警告
v2.0.0版本以后不再支持
根据具体设备的相关指令动态下发查询
- 示例
const Light = await root.search<Device>("/Office/devices/Light");
// 开灯
Light.turnOn(true);
事件
addListener
监听当前设备指令下发的消息推送
function addListener(
callback: (body: SocketResponseBody<keyof PayloadMap>) => void,
options?: Partial<SocketConfig>
) => () => void
参数
callback
:socket
消息监听回调函数【必传】body
: 指令消息主体
options
:socket
连接配置信息【选传】
返回值
- 无
示例
let yingli46 = await meta.search<Space>("/yingli/46");
// 查询46楼所有窗帘"
let curtains = await yingli46.search<Curtain>("./devices/Curtain");
// 监听46所有窗帘的指令消息
curtains.addListener((deviceData)=>{
console.log(deviceData);
})
removeListener
移除当前设备socket消息监听
function removeListener() => void
- 示例
let yingli46 = await meta.search<Space>("/yingli/46");
// 查询46楼所有窗帘"
let curtains = await yingli46.search<Curtain>("./devices/Curtain");
// 监听46所有窗帘的指令消息
curtains.addListener((deviceData)=>{ ... });
// 移除46楼创建的sokcet消息监听
curtains.removeListener();