Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

qcloud-iotexplorer-h5-panel-sdk

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

qcloud-iotexplorer-h5-panel-sdk

腾讯连连小程序自定义H5面板SDK开发文档

  • 1.1.1
  • npm
  • Socket score

Version published
Weekly downloads
3
Maintainers
1
Weekly downloads
 
Created
Source

qcloud-iotexplorer-h5-panel-sdk

腾讯连连小程序自定义H5面板SDK开发文档

开始使用

npm i qcloud-iotexplorer-h5-panel-sdk

引入sdk

import sdk from 'qcloud-iotexplorer-h5-panel-sdk';

// or
const sdk = require('qcloud-iotexplorer-h5-panel-sdk');

API

sdk.controlDeviceData: (data) => Promise

控制设备属性,如:

sdk.controlDeviceData({
    power_switch: 1
});

sdk.getDeviceDataHistory

查询设备历史数据,具体用法参见: AppGetDeviceDataHistory 接口文档

sdk.getUserInfo

拉取用户信息,调用后会更新到 sdk.userInfo 中,具体用法参考 AppGetUser 接口文档

sdk.getProductInfo

拉取设备所属产品信息,调用后会更新 sdk.productInfo 和 sdk.dataTemplate,具体用法参考 AppGetProducts 接口文档

sdk.getDeviceData

拉取设备最新的属性,调用后会更新 sdk.deviceData,具体用法参考 AppGetDeviceData 接口文档

sdk.getDeviceStatus

拉取设备当前在线状态,调用后会更新 sdk.deviceStatus,具体用法参考 AppGetDeviceStatuses 接口文档

sdk.goDeviceDetailPage: (options) => void

  • options.reload?: boolean; 如果传了 reload=true,则进入详情页后会重新拉取一次该设备的数据

跳转到腾讯连连通用的产品详情页(小程序页面)

sdk.onWsClose: (callback) => void;

  • callback: ({ code, reason }) => void;

当 websocket close 事件触发后执行回调

sdk.onWsError: (callback) => void;

  • callback: (error) => void;

当 websocket 触发 error 事件后触发回调

sdk.onWsControl: (callback) => void;

  • callback: ({ deviceId, deviceData }) => void;

当 websocket 收到 control 指令后触发

sdk.onWsReport: (callback) => void;

  • callback: ({ deviceId, deviceData }) => void;

当 websocket 收到 report 指令后触发

sdk.onWsStatusChange: (callback) => void;

  • callback: ({ deviceId, deviceStatus }) => void;

当 websocket 收到设备状态改变推送后触发回调

sdk.requestTokenApi: (action, data, options) => Promise

  • action: string 具体api名称,如:AppGetUser
  • data: object 接口调用参数
  • options: 参数参考 appDevSdk.requestApi 文档

sdk.share: ({ title, imgUrl }) => Promise

  • title: string 分享的标题
  • imgUrl?: string 分享图片的地址,默认会取当前页面截图

设置当前页面的分享内容,通过 wx.miniProgram.postMessage 向小程序推送分享信息,具体参考 小程序页面分享文档

sdk.navBack: () => Promise

调用 wx.miniProgram.navigateBack 返回上一级页面

sdk.appDevSdk

应用开发 SDK 实例,H5面板sdk底层依赖 应用开发小程序端SDK,更多调用能力请参考应用开发SDK文档

sdk.wx

微信 JS-SDK 实例,具体用法参考官方文档,使用前必须保证已经调用 sdk.wxSdkReady 方法

sdk.wxSdkReady: () => Promise

确保微信 jssdk 已注册完成,完成后会触发 resolve,该方法多次调用,若成功会返回缓存的 Promise 对象,如:

sdk.wxSdkReady().then(() => wx.miniProgram.navigateBack());

sdk.tips

tips模块,样式和风格与连连小程序一致

sdk.tips.show: (message, options) => Promise
  • options.type?: 'info' | 'danger' | 'loading' | 'success';
  • options.waitForHide?: boolean; 若为true,则 show 方法返回一个Promise,并且当关闭后才会触发 resolve
  • options.duration?: number; 展示提示的时间,单位毫秒,默认 1500
  • options.delayDuration?: number; 默认0,单位毫秒,提示会在该延时后展示
  • options.canClickClose?: boolean; 默认true,点击mask是否能够关闭提示
  • options.canBeReplace?: boolean; 默认false,为false时上一个提示未关闭前,再次调用 tips.show会被忽略

展示tips

sdk.tips.hide: () => Promise

关闭tips

sdk.tips.showLoading: (message, options) => Promise

封装后的 tips.show 方法,等价于:

this.show(message, {
    type: 'loading',
    canBeReplace: true,
    duration: 0,
    delayDuration: 200,
    canClickClose: false,
    ...options,
})
sdk.tips.hideLoading: () => Promise

关闭loading tips

注意,showLoading后必须主动调用hideLoading,否则tips永远不会消失

sdk.tips.showSuccess: (message, options) => Promise

封装后的 tips.show 方法,等价于:

this.show(message, { type: 'success', ...opts });
sdk.tips.showInfo: (message, options) => Promise

封装后的 tips.show 方法,等价于:

this.show(message, { type: 'info', ...options });
sdk.tips.showError: (error, options) => Promise
  • error: any; 可以为一个原生Error对象,可以为标准的api响应 { code, msg },也可以为一个字符串。

会先标准化处理错误展示信息后展示tips,等价于:

return this.show(errMsg, { type: 'danger', mask, duration, ...options });

sdk.offlineTip

设备离线提示组件,样式和风格与连连小程序一致

sdk.offlineTip.show: () => void;

展示离线提示

sdk.offlineTip.hide: () => void;

关闭离线提示

属性

sdk.deviceId: string

设备id,由 {productId}/{deviceName} 组成

sdk.productId: string

产品id

sdk.deviceName: string

设备名称

sdk.deviceInfo

设备信息,如:

{
    AliasName: "设备别名",
    CreateTime: 1583739344,
    DeviceId: "{productId}/{deviceName}",
    DeviceName: "{deviceName}",
    DeviceType: 0,
    FamilyId: "家庭ID",
    IconUrl: "设备ICON",
    ProductId: "{productId}",
    RoomId: "房间id",
    UpdateTime: 1583739344,
    UserID: "用户Id"
}

sdk.dataTemplate

设备所在产品的物模型,如:

{
    "version": "1.0",
    "profile": {
        "ProductId": "xxxx",
        "CategoryId": "1"
    },
    "properties": [
        {
            "id": "int",
            "name": "int",
            "desc": "",
            "mode": "rw",
            "define": {
                "type": "int",
                "min": "0",
                "max": "100",
                "start": "0",
                "step": "1",
                "unit": ""
            },
            "required": false
        },
    ],
    "events": [],
    "actions": []
}

sdk.deviceStatus: number

设备在线状态,在线: 1,非在线: 0

sdk.deviceDisplayName: string

设备展示名称,会依次取:AliasName > productInfo.name > deviceName 来展示

sdk.isShareDevice: boolean

是否是分享设备

sdk.familyId: string

设备所在家庭id,如果是分享设备则无此值

sdk.roomId: string;

设备所在房间id,如果是分享设备则无此值

sdk.familyInfo

设备所在家庭详情,如果是分享设备则无此值

sdk.isFamilyOwner: boolean

用户是否是当前家庭的管理员

sdk.userInfo

用户信息,如:

{
    Avatar: "头像url",
    CountryCode: "国家代码",
    Email: "email",
    NickName: "昵称",
    PhoneNumber: "电话号码",
    UserID: "用户id"
}

蓝牙模块

由于h5中无法直接调用小程序蓝牙相关接口,sdk封装了特殊的蓝牙模块,通过一个单独的websocket通道打通了h5到小程序直接的蓝牙通信

名词介绍

介绍蓝牙模块中使用到的一些名词

serviceId

服务id,蓝牙服务的uuid,搜索设备时主要通过 serviceId 来过滤我们需要的设备。

deviceId

小程序api搜索出来的设备的标识,连接设备时主要通过 deviceId 来标识需要连接的设备

explorerDeviceId

物联网开发平台侧定义的设备ID,查询设备数据和上报设备数据时以该 id 作为设备标识。

BlueToothAdapter 蓝牙适配器

全局单例,实例上声明了蓝牙搜索、连接等方法

DeviceAdapter 设备适配器

真正用来连接设备以及跟设备进行通信的模块,每一个设备连接对应一个设备适配器实例,设备适配器会在连接设备后实例化,并在设备断开连接后销毁。

根据不同的 serviceId 来区别不同类型设备的适配器构造函数。

API

sdk.blueToothAdapter
sdk.addAdapter: (DeviceAdapter) => void;

添加一个设备适配器,默认无任何设备适配器,使用时需要根据具体设备情况创建一个设备适配器,并将其构造函数添加到蓝牙适配器中。

如:

class DemoDeviceAdapter extends DeviceAdapter {
	static serviceId = '0000FFF0-0000-1000-8000-00805F9B34CC';

	static deviceFilter(deviceInfo) {
		if (deviceInfo.advertisServiceUUIDs) {
			const matchedServiceId = deviceInfo.advertisServiceUUIDs.find(id => id === DemoDeviceAdapter.serviceId);

			if (matchedServiceId && deviceInfo.advertisData) {
				try {
					const macArr = deviceInfo.advertisData.slice(2);
					const mac = macArr.join(':');

					return {
						...deviceInfo,
						deviceName: mac,
						serviceId: matchedServiceId,
					}
				} catch (err) {
					console.error('parse mac error', err);
				}
			}
		}
	}

	handleBLEMessage(hex) {
        return {
          type: 'unknown',
          data: hex,
        };
	}
}

sdk.bluetoothAdapter.addAdapter(DemoDeviceAdapter);
sdk.blueToothAdapter.init() => Promise;

初始化蓝牙模块,包括初始化蓝牙模块,打通小程序间蓝牙通信,注册全局回调等。返回一个带缓存的Promise,可重复调用,可在每次使用前调用

sdk.blueToothAdapter.startSearch(startSearchParams) => Promise

开始搜索蓝牙设备(将会调用 wx.startBluetoothDevicesDiscovery,比较耗费系统资源,务必在不需要搜索后调用 blueToothAdapter.stopSearch,如离开页面后)

该方法返回一个 Promise,注意务必要等待 Promise 响应 resolve 才代表操作指行成功。

startSearchParams.serviceId?: string;
startSearchParams.serviceIds?: string[];

指定需要搜索的serviceId,不传的话会使用当前支持的所有 DeviceAdapter 的 serviceId 来匹配。

startSearchParams.ignoreDeviceIds?: string[]

可选,需要过滤掉的 deviceId 列表(比如刚添加完的设备),搜索结果中将不会出现这些设备

startSearchParams.onSearch: (DeviceInfo[]) => void;

当搜索结果更新后调用,返回搜索到的设备列表

startSearchParams.onError: (Error) => void;

当搜索过程中发生错误后调用,触发后设备搜索将会中止

startSearchParams.timeout: number

可选,默认 20000,单位毫秒,超过多久没搜索到设备后将会触发超时错误

blueToothAdapter.stopSearch() => void;

停止搜索设备

blueToothAdapter.searchDevice(searchDeviceParams) => Promise

搜索蓝牙设备,并将在找到第一个满足条件的设备后 resolve,与 startSearch 的区别在于 searchDevice 在搜到第一个匹配设备后即会中止搜索。 该方法常用于已经绑定过设备后,在连接设备时来定向搜索该设备。

startSearchParams.serviceId?: string;
startSearchParams.serviceIds?: string[];

指定需要搜索的serviceId,不传的话会使用当前支持的所有 DeviceAdapter 的 serviceId 来匹配。

searchDeviceParams.deviceName

指定需要搜索的设备 deviceName

searchDeviceParams.ignoreDeviceIds

同 startSearchParams.ignoreDeviceIds

blueToothAdapter.connectDevice(DeviceInfo) => Promise

连接指定设备,传入 searchDevice 或 startSearch 接口搜索出来的 DeviceInfo,连接成功后返回设备适配器

blueToothAdapter.getDeviceAdapter(deviceId) => deviceAdapter

根据 deviceId 查询对应的设备适配器实例,如果设备未连接或已断开,则返回空

deviceAdapter

设备适配器

deviceAdapter.explorerDeviceId

getter,设备的 explorerDeviceId

deviceAdapter.isConnected

getter,设备当前是否连接状态

deviceAdapter.deviceId

getter,设备的 deviceId

deviceAdapter.originName

getter,设备的原始名称,即小程序接口搜索出来时的 name 字段

deviceAdapter.explorerDeviceId

getter,设备的 explorerDeviceId

deviceAdapter.disconnectDevice() => void

主动断开设备连接

FAQs

Package last updated on 14 May 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc