Device

设备SDK模块类,可以提供读取空间设备资源的相关操作能力

属性

list

获取当前空间所有的设备元数据列表

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[]>

参考: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();

cmd() v2.0.0+

执行空间物模型设备相关指令下发(代替原动态指令

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

参考:SocketResponseBodyData; SocketConfig

  • 参数

    • 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();
上次更新:
贡献者: jiangtao, zhengqian, jiang.tao