0.3.0 • Published 2 years ago

qcloud-virtual-device v0.3.0

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

qcloud-virtual-device

qcloud-virtual-device 用于模拟一个建立在腾讯云物联网开发平台上的虚拟设备,提供上报属性,事件,响应action等一系列物模型相关的操作。去了解物模型

安装

npm i qcloud-virtual-device # yarn add qcloud-virtual-device

GET STARTED

创建一个普通设备

const { VirtualDevice } = require('qcloud-virtual-device');

// 传入设备三元组信息,实例化一个device
const device = new VirtualDevice({
  productId: 'your_productId',
  deviceName: 'your_device_name',
  deviceSecret: 'your_device_secret',
});

device.on('connect', () => {
  // 获取云端最新的物模型数据
  device.getStatus({
    type: 'report'
  }).then((v) => {
    deviceData = v.data.reported;
    console.log('deviceData', deviceData);
  });
});

// 连接到云端
device.connect();

完整例子可以参看demo;

创建一个网关设备

const { GatewayDevice } = require('qcloud-virtual-device');

const device = new GatewayDevice({
  productId: 'your_productId',
  deviceName: 'your_device_name',
  deviceSecret: 'your_device_secret',
});

device.on('connect', async () => {
  // 获取网关设备下的子设备
  const subDevices = await device.getSubDevices();
  console.log(subDevices);
  // 绑定一个子设备
  device.bindSubDevice({
    deviceName: 'dev_1',
    productId: '1JTGFHHTR9',
    deviceSecret: 'deviceSecret'
  });
});

// 连接到云端
device.connect();

API

device.clientToken()

生成一个clientToken, 用于消息上报和消息响应的配对

clientToken(): string;

device.connect(url?: string, options)

将虚拟设备连接到云端, 默认使用mqtt://${productId}.iotcloud.tencentdevices.com作为mqtt URL,

connect(url?: string, options?: Omit<mqtt.IClientOptions, 'username' | 'password'>): mqtt.MqttClient;

在 options中可以传入 keepalive, reconnectPeriod等参数,详细介绍可参考: https://github.com/mqttjs/MQTT.js#client

device.reportProperty(payload)

设备往云端上报属性,返回一个Promise,可以拿到report_reply中的消息来判断是否上报成功

reportProperty(payload: Record<string, any>): Promise;

device.postEvent(payload)

发送一个物模型事件到云端,可以选info, warn, fault三种事件类型

  device.postEvent({
    eventId: 'open_door',
    type: 'info',
    params: {result: 1}
  });

device.replyAction(payload)

对小程序的action指令进行回复, 通常和 onAction 一起使用

device.onAction('add_user', ({ clientToken, params }, reply) => {
  // ...一系列添加用户的操作
  device.replyAction({
    actionId: 'add_user',
    clientToken,
    response: { result: 1 }
  });
  // 或者直接使用包装好的 reply 参数,并传入 response
  reply({ result: 1 });
});

device.on('connect', () => {})

设备连接到云端触发connect事件

device.on('error', (error) => {})

设备出现错误触发error事件

device.on('action', ({ actionId, clientToken, timestamp, params}) => {})

设备收到来自控制端的 action 时触发

device.onAction(actionId, ({params}, reply) => {})

监听一个特定的action, 在回调函数中,可以通过params获取 action 传入的参数,可以通过 reply 对 action 进行回复。

device.onControl({ clientToken: string; params: any }) => {})

当客户端下发控制指令时触发,回调函数中可以通过 params 获取发生变化的物模型参数

device.client: mqtt.MqttClient | null

设备连接到云端后,可以通过device.client获得 mqttClient

0.3.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago