更新记录

2.5.0(2026-09-05) 下载此版本

2.5.0

2.4.5(2026-08-10) 下载此版本

2.4.5

2.4.4(2026-07-30) 下载此版本

2.4.4

查看更多

平台兼容性

uni-app(4.73)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.73)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

Uascent-MarsGateSDK 插件文档

版本:2.5.0

目录

插件介绍

Uascent-MarsGateSDK 是一个用于在中实现蓝牙、WiFi、4G设备管理的插件。它提供了设备搜索、添加、连接、控制等完整功能。

接入指引

引入插件

import MarsGateSDK from '@/uni_modules/Uascent-MarsGateSDK/js_sdk/index.js'

交互流程

交互分为两层:

  1. 云云对接:获取 / 刷新 accessToken、维护 Token 绑定的设备列表(详见云云对接文档https://help.uascent-iot.com/marsgate/iot-doc-manage/doc-wiki#/page/share/view?pageId=361&space=2e0a8b9ba9724208b432ee335ad19ada)
  2. SDK 交互:业务侧通过 MarsGateSDK 连接 WebSocket、订阅与收消息

请先完成云云侧能力,再进入对应的 SDK 流程。

A. 云云对接(accessToken / 设备绑定)

参与方:业务服务云云对接

业务服务                            云云对接
        |                            |
        | 1. 获取 accessToken         |
        |    (携带需绑定的设备列表)  |
        |--------------------------->|
        | 2. 返回 accessToken         |
        |<---------------------------|
        |                            |
        | 3. Token 失效后重新获取     |
        |--------------------------->|
        | 4. 返回 newAccessToken      |
        |<---------------------------|
        |                            |
        | 5. 绑定设备变化:刷新列表   |
        |--------------------------->|
        | 6. 返回刷新成功             |
        |<---------------------------|

说明:

  • 获取 / 更新 accessToken、刷新绑定设备均在云云侧完成
  • 完成后再进入下方 SDK 交互流程

B. 首次接入与订阅(SDK)

前置:已通过云云对接获取 accessToken
参与方:业务侧SDKWebSocket 服务

业务侧                  SDK                 WebSocket 服务
    |                   |                        |
    | 1. init({ clientId, accessToken })         |
    |   (仅写入配置,不连接 WebSocket)          |
    |------------------>|                        |
    | 2. connectSocket()|                        |
    |------------------>| 3. 建立连接            |
    |                   |----------------------->|
    |                   | 4. 连接成功            |
    |                   |<-----------------------|
    | 5. onMessageChange(callback)               |
    |------------------>|                        |
    | 6. subscribeDevice(list)                   |
    |------------------>| 7. 订阅设备主题        |
    |                   |----------------------->|
    | 8. 设备上报 / 业务消息(经 onMessageChange)|
    |<-------------------------------------------|

流程摘要:init → connectSocket → onMessageChange → subscribeDevice → 接收设备消息

C. accessToken 失效后更新(SDK)

前置:已通过云云对接重新获取 newAccessToken
参与方:业务侧SDKWebSocket 服务

业务侧                  SDK                 WebSocket 服务
    |                   |                        |
    |                   | 1. authError / 鉴权失败|
    |                   |<-----------------------|
    | 2. onMessageChange(errCode: 30005)       |
    |<------------------|                        |
    | 3. updateAccessToken({ accessToken })      |
    |------------------>|                        |
    |                   | 4. 写入新 Token;       |
    |                   |    若 WS 已连接或上次   |
    |                   |    鉴权失败则继续 ↓     |
    |                   | 5. 断开旧连接          |
    |                   |----------------------->|
    |                   | 6. 重新连接            |
    |                   |----------------------->|
    |                   | 7. 连接成功            |
    |                   |<-----------------------|
    |                   | 8. 自动恢复之前的订阅  |
    |                   |----------------------->|

流程摘要:收到 30005 →(云云已换新 Token)→ updateAccessToken → SDK 自动重连并恢复订阅

一般无需再手动调用 connectSocket / subscribeDevice

D. 绑定设备列表变化后的订阅调整(SDK)

前置:已通过云云对接刷新 accessToken 绑定的设备列表
参与方:业务侧SDKWebSocket 服务

业务侧                  SDK                 WebSocket 服务
    |                   |                        |
    | Token 字符串未变 → 一般无需 updateAccessToken
    |                   |                        |
    | 按业务自行决定是否调整订阅                 |
    |                   |                        |
    | 【需要调整】                               |
    | 1. subscribeDevice(最新列表)               |
    |------------------>| 2. 更新订阅主题        |
    |                   |----------------------->|
    |                   |                        |
    | 【暂不调整】保持当前订阅即可               |

说明:

  • 流程摘要:(云云已刷新绑定设备)→ 按需 subscribeDevice 最新列表
  • Token 字符串未变时,一般无需调用 updateAccessToken
  • 若收到 errCode 30003(无权访问该设备):请先确认云云侧设备列表已刷新,再按需调整订阅

API 文档

初始化

init(config)

初始化插件配置。

说明: init 仅写入配置,不会连接或重建 WebSocket。
首次连接请调用 connectSocket();更新 accessToken 请调用 updateAccessToken

参数

参数名 类型 必填 说明
clientId String 客户端ID
accessToken String 访问令牌;获取与设备绑定说明见云云对接文档 https://help.uascent-iot.com/marsgate/iot-doc-manage/doc-wiki#/page/share/view?pageId=361&space=2e0a8b9ba9724208b432ee335ad19ada
env String 环境,可选值:'china'(中国), 'europe'(欧洲), 'overseas'(其他海外区域)默认'china'
isRepeatOnBluetoothDeviceFound Boolean 是否重复监听搜索到的设备, 默认false
isRepeatStopBluetoothDevicesDiscovery Boolean 是否重复关闭搜索, 默认false
isRepeatOperateBluetoothAdapter Boolean 适配器空闲时是否先关闭再打开蓝牙模块,默认 true。已有设备已连 / 建连中时不会关闭,避免 search 拆掉当前连接

返回值

Promise,返回数据结构:

{
  code: 0,
  data: undefined,
  message: '成功'
}

推荐调用顺序

await MarsGateSDK.init({ clientId, accessToken })
await MarsGateSDK.connectSocket()
MarsGateSDK.onMessageChange((msg) => { /* ... */ })
await MarsGateSDK.subscribeDevice([{ productId, deviceId }])

// 1)accessToken 失效:云云重新获取后更新到 SDK
await MarsGateSDK.updateAccessToken({ accessToken: newAccessToken })
// SDK 自动重连 WebSocket 并恢复订阅

// 2)仅绑定设备列表变化:云云侧刷新 accessToken 绑定设备后
// 按需重新订阅最新设备列表(Token 字符串未变时一般无需 updateAccessToken)
await MarsGateSDK.subscribeDevice(latestDeviceList)

示例

MarsGateSDK.init({
  clientId: 'xxxxxxxxxxxx',
  accessToken: 'xxxxxxxxxxxx'
}).then((res) => {
  console.log(res)
}).catch((err) => {
  console.log(err)
})

updateAccessToken(options)

更新 accessToken。

需先成功调用 init
适用于 accessToken 字符串发生变化(如失效后重新获取)的场景。
若 WebSocket 已连接,或上次因 Token 鉴权失败,会自动断开旧连接、重新连接,并恢复之前的订阅。
若仅是 Token 绑定的设备列表变化、Token 字符串本身未变,请先走云云对接刷新设备列表,再按需调用 subscribeDevice,无需调用本方法。详见注意事项

参数

参数名 类型 必填 说明
options Object 更新参数
options.accessToken String 新的访问令牌

返回值

Promise,返回数据结构:

// 无需重建 WebSocket
{
  code: 0,
  data: undefined,
  message: '成功'
}

// 触发 WebSocket 重建时
{
  code: 0,
  data: {
    socketReconnected: true // true: 重建成功;false: Token 已更新但 WebSocket 重建失败
    // socketError: {} // 仅 socketReconnected 为 false 时存在
  },
  message: '成功'
}

accessToken 一定会先写入。即使 WebSocket 重建失败,方法仍会 resolve 成功;鉴权失败时会通过 onMessageChange 回调(如 errCode: 30005)。

示例

MarsGateSDK.updateAccessToken({
  accessToken: '新的accessToken'
}).then((res) => {
  console.log(res)
}).catch((err) => {
  console.log(err)
})

通过蓝牙设备搜索

search(options)

开始搜索设备(通过蓝牙搜索周围的设备)。

参数返回值

Promise

onSearchListChange(callback)

监听通过蓝牙搜索到的设备列表变化。

参数

Function 回调函数,返回设备列表数据:

{
  code: 0,
  data: [], // 设备列表
  message: '成功'
}

设备列表项数据结构

参数名 类型 说明
name String 设备名称
bleName String 蓝牙设备名称
imageUrl String 设备图片链接
productId String 产品ID
mac String MAC地址
type String 设备类型
isAddNetwork Boolean 当前状态是否是添加网络
isSupportWiFiList Boolean 是否支持通过设备获取2.4G WiFi列表
isSupport4G Boolean 是否支持4G网络
productBrand String 产品品牌
productModel String 产品型号

stopSearch()

停止蓝牙搜索设备。

二维码相关

getDeviceInfoByQRCode(params)

通过二维码查询设备信息。

params参数

参数名 类型 必填 说明
qrcode String 二维码内容

返回值

Promise

成功

  {
    code: 0,
    data: {
      mac: 'xxxxxxxxx',               // 设备mac
      productId: 'xxxxxxx',           // 产品id
      deviceId: 'xxxxxxxxxxxxxxx',    // 设备id
      productName: 'xxxxxxxxxx',      // 产品名称
      productUrl: 'xxxxxxxxxx',       // 产品图标
      online: true                    // 是否在线
    },
    message: '成功'
  }

data数据结构

参数名 类型 说明
mac String 设备mac
productId String 产品id
deviceId String 设备id
productName String 产品名称
productUrl String 产品图标
online Boolean 是否在线

设备添加

add(info, params, callback,logCallback)

添加设备(通过蓝牙添加设备,支持蓝牙设备、WiFi设备)。

参数

参数名 类型 必填 说明
info Object 设备基本信息
params Object WiFi设备配网参数, 仅WiFi设备需要
callback Function WiFi设备配网状态回调, 仅WiFi设备需要
logCallback Function 日志回调

info参数结构

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID
type String 设备类型, 可选值:'ble','wifi',默认为'ble'

params参数结构

参数名 类型 必填 说明
is4GActive Boolean 使用4G网络激活时必传,默认false
ssid String WiFi名称,非4G网络激活时必传
bssid String WiFi BSSID
password String WiFi密码,非4G网络激活时必传
timeout Number 蓝牙搜索连接超时时间,单位秒,默认120秒

callback参数结构

参数名 类型 说明
status Number 配网状态,1:寻找设备,2:注册到云 3:成功 4:失败
data Object 设备返回数据

logCallback参数结构

参数名 类型 说明
trackId String 唯一标识符,用于区分日志
title String 日志标题
data Object 日志数据
code Number 状态码
desc String 日志描述
header Object 日志头信息包含APP版本、环境、系统等信息

返回值 Promise 成功

  {
    code: 0,
    data: {
      deviceId: 'xxxxxxxxxxxx', // 设备的唯一标识
      bindState: 1, // WiFi设备绑定状态 0: 添加中  1: 成功 2:失败
      deviceName: 'xxxxxxxxxxxx', // WiFi设备名称
      productId: 'xxxxxxxxxxxx', // WiFi产品ID
      productName: 'xxxxxxxxxxxx', // WiFi产品名称
      productBrand: 'xxxxxxxxxxxx', // WiFi产品品牌
      productModel: 'xxxxxxxxxxxx', // WiFi产品型号
      productUrl: 'xxxxxxxxxxxx', // WiFi产品图标
      isAddNetwork: true, // 是否支持添加网络
      isSupportWiFiList: true, // 是否支持通过设备获取2.4G WiFi列表
      isSupport4G: true, // 是否支持通过4G网络
    },
    message: '成功'
  }

data数据结构

参数名 类型 说明
deviceId String 设备的唯一标识
bindState Number WiFi设备绑定状态 0: 添加中 1: 成功 2:失败
deviceName String WiFi设备名称
productId String WiFi产品ID
productName String WiFi产品名称
productBrand String WiFi产品品牌
productModel String WiFi产品型号
productUrl String WiFi产品图标

addByQRCodeInfo(params)

通过二维码添加设备。

参数

参数名 类型 必填 说明
params Object 设备信息

params参数结构

参数名 类型 必填 说明
productId String 产品ID
deviceId String 设备ID

返回值

Promise

成功

  {
    code: 0,
    data: {
      bindState: 'xxxxxxxxxxxx',    // 1是已绑定 0是未绑定  -1是绑定失败
      deviceName: 'xxxxxxxxxxxx',   // 设备名称
      deviceId: 'xxxxxxxxxxxx',     // 设备id
      productName: 'xxxxxxxxxxxx',  // 产品名称
      productUrl: 'xxxxxxxxxxxx',   // 产品图标
      productBrand: 'xxxxxxxxxxxx', // 产品品牌
      productModel: 'xxxxxxxxxxxx', // 产品型号
    }
  }

data数据结构

参数名 类型 说明
bindState Number WiFi设备绑定状态 0: 添加中 1: 成功 2:失败
deviceName String WiFi设备名称
deviceId String 设备ID
productName String 产品名称
productUrl String 产品图标
productBrand String 产品品牌
productModel String 产品型号

添加网络

addNetwork(info, params, callback, logCallback)

通过蓝牙添加网络(支持WiFi设备)。

参数

参数名 类型 必填 说明
info Object 设备基本信息
params Object WiFi设备配网参数
callback Function WiFi配网状态回调
logCallback Function 日志回调

info参数结构

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID

params参数结构

参数名 类型 必填 说明
ssid String WiFi名称
bssid String WiFi BSSID
password String WiFi密码
timeout Number 蓝牙搜索连接超时时间,单位秒,默认120秒

callback参数结构

参数名 类型 说明
status Number 配网状态,1:寻找设备,2:连接云服务 3:成功 4:失败
data Object 设备返回数据

logCallback参数结构

参数名 类型 说明
trackId String 唯一标识符,用于区分日志
title String 日志标题
data Object 日志数据
code Number 状态码
desc String 日志描述
header Object 日志头信息包含APP版本、环境、系统等信息

返回值

Promise

蓝牙相关

connect(options)

连接设备蓝牙。

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息
onReport Function 上报回调
onStateChange Function 状态变化回调
dpInfo Object 设备DP点信息,蓝牙设备必传
protocol Array 协议数组,蓝牙设备必传
extraDpInfo Object 额外 DP 点下发值转换(仅对蓝牙设备生效,见下方说明)
extraProtocol Object 额外协议上报转换(仅对蓝牙设备生效,见下方说明)

设备信息deviceInfo

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID
type String 设备类型, 可选值:'ble','wifi',默认为'ble'

设备蓝牙状态变化回调onStateChange

回调函数的参数为Object 。

Object 键值对

参数名 类型 说明
state Number 0: 连接中 1:连接成功 2:连接失败 3.设备状态同步中 -1: 已断开
  onStateChange: (res) => {
    console.log('onStateChange', res)
  }

设备上报数据onReport

回调函数的参数为Object 。

Object 键值对

参数名 类型 说明
data Object 设备上报的数据
  onReport: (res) => {
    console.log('onReport', res.data)
  }

蓝牙设备DP点信息dpInfo

Object 键值对

参数名 类型 说明
key String 属性上报的key
value Number 协议DP点
  {
    switch: 1, // 开关
    level: 2, // 档位(数值)
    timingPowerOff1: 3, // 定时关机(小时)
    angleAutoLROnOff: 4, // 左右旋转/摇头/摆风
    angleAutoUDOnOff: 5, // 上下旋转/摇头/摆风
    anionOnOff: 10, // 负离子功能
    mode: 12, // 风扇工作模式
  }

蓝牙设备DP点信息protocol

全属性上报的数据协议,从协议数据位的第一字节开始,对应属性key,按顺序组成数组

  • 如果在中间有未使用字节,使用void 0 undefined null 表示该字节未使用
  • 如果某个字节按位上报,使用数组表示,规则和字节相似,数字下标0表示 bit 0
    ['switch', 'level', void 0, 'timingPowerOff1', ['angleAutoLROnOff', 'angleAutoUDOnOff'] ,'anionOnOff', 'mode']

额外DP点下发值转换extraDpInfo

用于蓝牙 control 下发时,将业务值转换为协议值。Object 键为属性 key,值为「业务值 → 协议值」映射。

{
  mode: {
    0: 1, // 业务值 0 → 协议值 1
    1: 2,
  }
}

额外协议上报转换extraProtocol

用于蓝牙全属性上报后的二次转换。SDK 会先按 protocol 完成基础解析得到完整 data,再遍历 extraProtocol 中的转换函数。

Object 键为源属性 key,值为转换函数。

转换函数签名:(value, data) => Object

参数 类型 说明
value Any 当前源属性值,即 data[key]
data Object 本次上报解析后的完整属性对象,可读取其它字段做联合计算

返回值:需要写入的派生属性键值对。

处理规则:

  • 返回空对象或不返回有效字段:保留源属性,不删除
  • 返回非空对象:写入派生字段,并删除源属性 key
  • 转换抛错:保留源属性原始值,并打印错误日志
{
  // 示例:将组合状态拆成多个业务字段,并可依赖其它已解析字段
  combineStatus: (value, data) => {
    return {
      switch: value & 0b1,
      mode: (value >> 1) & 0b11,
      // 也可结合 data 中其它字段计算,例如:level: data.level
    }
  }
}

control(deviceInfo, data)

通过蓝牙控制设备。

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息
data Object 控制的属性对象,键值对

deviceInfo参数结构

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID
type String 设备类型, 可选值:'ble','wifi',默认为'ble'

searchWifi(deviceInfo)

通过蓝牙通知WiFi设备搜索附近WiFi,支持该方法的WiFi设备会在connect方法中onReport回调中返回WiFi列表,列表是分批上报,收到数据根据自身需求进行处理,WiFi列表为wifiList,每个WiFi项格式为:

参数名 类型 说明
ssid String WiFi名称
bssid String WiFi BSSID
rssi Number 信号强度
{
  wifiList: [
    {
      ssid: 'WiFi名称',
      bssid: 'WiFi BSSID',
      rssi: -60
    },
    {
      ssid: 'WiFi名称',
      bssid: 'WiFi BSSID',
      rssi: -80
    }
  ]
}

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息

deviceInfo参数结构

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID

stopSearchWifi(deviceInfo)

通过蓝牙通知WiFi设备停止搜索WiFi。

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息

deviceInfo参数结构

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID

closeConnect(param)

关闭蓝牙连接。

参数

参数名 类型 必填 说明
mac String MAC地址
productId String 产品ID

远程设备相关(支持WiFi设备、4G设备)

connectSocket()

连接WebSocket。

调用前需先成功执行 init。首次使用远程设备能力时,必须主动调用本方法建立连接。

返回值

Promise

示例

MarsGateSDK.connectSocket().then((res) => {
  console.log(res)
}).catch((err) => {
  console.log(err)
})

disConnectSocket()

断开WebSocket连接。

返回值

Promise

getSocketStatus()

获取WebSocket连接状态。

返回值

Promise,返回数据结构:

{
  code: 0,
  data: {
    status: 'connecting' // WebSocket连接状态CONNECTING: 'connecting: 连接中 'open': 已连接 'closing': 关闭中 'closed': 已关闭  'error': 连接错误 
  },
  message: '成功'
}

subscribeDevice(list)

订阅设备消息。

参数

Array 远程设备(支持WiFi设备、4G设备)列表,每项结构:

参数名 类型 必填 说明
productId String 产品ID
deviceId String 设备ID

unSubscribeDevice()

取消订阅设备消息。

参数

返回值 Promise

onMessageChange(callback)

监听设备消息变化,以及 WebSocket 鉴权失败、业务错误等通知。

callback参数

可能收到以下三类数据,请优先按 errCode 分支处理异常,无 errCode 时再按设备上报数据处理:

1. 设备上报消息

参数名 类型 说明
xxx Object 设备ID

以下字段按消息类型分别出现,一般不会在同一次回调中全部齐全。

// 设备消息变化回调(字段示例合集)
{
  'xxxxxxx': { // 设备ID
    data: { // 设备属性键值对

    },
    online_state: 'online', // 设备在线状态 online/offline
    dev_reset: true, // 设备重置
    firmwareInfo: {  // 设备上报当前固件信息
      type: 0, // 固件类型:0 WI-FI模组,1 电控MCU,3 资源包,10~19 扩展固件
      version: '1.0.0', // 固件版本
    },
    // 固件升级进度 / 结果
    upgrade: {
      type: 0, // 固件类型:0 WI-FI模组,1 电控MCU,3 资源包,10~19 扩展固件
      version: '1.0.0', // 目标 / 相关固件版本
      messageId: 'xxx', // 升级消息 ID
      timestamp: 123456789, // 时间戳
      progress: 56, // 升级进度(进行中时返回)
      result: 'success', // 升级结果 success / fail(完成或失败时返回)
      error: '文件过大' // 失败原因
    },
    error: {  // 设备错误信息(如控制时设备离线)
      errCode: 40001, // 错误码
      errMsg: '设备未在线' // 错误信息
    }
  }
}

2. AccessToken 失效

连接鉴权失败,或收到服务端 authError 时回调。此时应刷新 accessToken 后调用 updateAccessToken,SDK 会自动重建连接并恢复订阅。

{
  type: 'tokenInvalid',
  errCode: 30005, // 或其他鉴权错误码
  errMsg: 'Access-token 失效'
}

3. 业务错误(如无权访问设备)

订阅或操作后,服务端通过 WebSocket 推送的业务错误。常见于订阅了未绑定到当前 accessToken 的设备:请先通过云云对接刷新绑定设备列表(参考文档),再按业务需要决定是否重新 subscribeDevice

{
  type: 'error', // 或服务端原始 type
  errCode: 30003, // 无权访问该设备;其它业务错误见状态码表
  errMsg: '无权访问该设备',
  topic: '/device/...',
  requestId: '1784949061472'
}

示例

MarsGateSDK.onMessageChange((msg) => {
  const { errCode, errMsg } = msg || {}
  // 优先按 errCode 处理异常
  if (errCode != null) {
    switch (errCode) {
      case 30005: // Access-token 失效
        // 刷新 accessToken 后调用 updateAccessToken
        break
      case 30003: // 无权访问该设备
        // 多为设备未绑定到当前 accessToken:先云云刷新绑定设备列表,再按需重新订阅
        console.log(errCode, errMsg)
        break
      case 40001: // 设备未在线
        console.log(errCode, errMsg)
        break
      default:
        // 其它错误(如 9999 系统异常)
        console.log(errCode, errMsg)
        break
    }
    return
  }
  // 无 errCode:设备上报数据
  console.log(msg)
})

offMessageChange(callback)

取消监听设备消息。

callback参数

onSocketStatusChange(callback)

监听WebSocket连接状态变化。

callback参数

{
  status: 'connecting' // WebSocket连接状态CONNECTING: 'connecting: 连接中 'open': 已连接 'closing': 关闭中 'closed': 已关闭  'error': 连接错误
}

offSocketStatusChange(callback)

取消WebSocket监听连接状态。

sendControl(deviceInfo, properties)

发送控制指令到远程设备(支持WiFi设备、4G设备)。

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息
properties Object 控制属性对象

deviceInfo参数结构

参数名 类型 必填 说明
deviceId String 设备ID
productId String 产品ID

返回值

Promise

示例

plugin.sendControl(deviceInfo, {switch: 1}).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

sendQuery(deviceInfo, properties)

发送查询指令到远程设备(支持WiFi设备、4G设备)。

参数

参数名 类型 必填 说明
deviceInfo Object 设备信息
properties Array 属性数组

deviceInfo参数结构

参数名 类型 必填 说明
deviceId String 设备ID
productId String 产品ID

返回值

Promise

示例


plugin.sendQuery(deviceInfo).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

getWifiDeviceStatus(params)

获取远程设备(支持WiFi设备、4G设备)最新状态。

请求参数

参数名 类型 必填 说明
device_ids String 设备 ID ,多个 ID 以半角逗号(,)分隔,最多支持 10 个设备。

返回值

Promise

返回参数

参数名 类型 说明
data Arrray 设备列表

Array 设备列表

参数名 类型 说明
id String 设备ID
online_status String 在线状态: online, offline
status Arrray 设备状态列表
参数名 类型 说明
name String 属性名称
value String 属性值

resetDevice(params)

重置远程设备(支持WiFi设备、4G设备)。

请求参数params

参数名 类型 必填 说明
device_id String 设备ID
product_id String 产品ID
clean Boolean 是否清除设备数据

返回值

Promise

getUpgradeInfo(params)

查询设备升级信息。

请求参数params

参数名 类型 必填 说明
device_id String 设备ID
product_id String 产品ID

返回值

Promise

返回参数

参数名 类型 说明
data Arrray 升级信息列表

Array 设备列表

参数名 类型 说明
id String 主键id
version String 版本
state String 升级状态 waitingOther : 等待其他设备升级noUpgrade : 不需要升级 waiting : 等待升级 processing :升级中 failed : 升级失败 success : 升级成功 canceled : 已取消
type Integer 固件类型:0: WI-FI模组, 1: 电控MCU, 3:资源包,10~19: 扩展固件
product_id String 产品ID
product_name String 产品名称
name String 固件名称
url String 固件文件地址
sign String 固件文件签名
sign_method String 固件文件签名方式,如:MD5,SHA256
size long 固件文件大小
create_time long 时间戳
properties Object 其他配置信息
description String 说明
file_name String 文件名称
currentVersion String 当前版本

upgrade(params)

升级设备。

请求参数params

参数名 类型 必填 说明
device_id String 设备ID
id String 查询设备固件是否可以升级返回值id

返回值

Promise

设备通用

getProductModel(productId)

获取产品物模型信息。

参数

参数名 类型 必填 说明
productId String 产品ID

返回值

Promise

返回参数

参数名 类型 说明
data Object 设备物模型信息

data 说明

参数名 类型 说明
properties Object 属性定义
functions Object 功能定义
events Object 事件定义
expands Object 自定义功能

properties 说明

参数名 类型 说明
valueType Object 属性类型信息
name String 属性名称
id String 属性code
expands Object 扩展信息

valueType 说明

参数名 类型 说明
type String 数据类型
expands Object 扩展信息
elements Array 枚举信息
max Number 最大值
min Number 最小值
unit String 单位

Expands 说明

参数名 类型 说明
readOnly Boolean 是否只读
required Boolean 是否需要

getDeviceId(prams)

通过MAC地址和产品ID获取设备ID。

参数

参数名 类型 必填 说明
mac String MAC地址如 mac为 73:EA:EA:48:03:38,传参时去掉分隔符并转小写,传参为 73eaea480338
productId String 产品ID

返回值

Promise

成功

  {
    code: 0,
    data: {
      deviceId: 'xxxxxxxxxxxx', // 设备的唯一标识
      productId: 'xxxxxxxxxxxx', // 产品ID
      mac: 'xxxxxxxxxxxx', // MAC地址
    },
    message: '成功'
  }

状态码

成功

  {
    code: 0,
    data: {}, // 成功返回的数据,无数据是不存在该字段
    message: '成功'
  }

失败

  {
    errCode: 1001,
    errMsg: '错误信息'
  }
错误码 错误说明
1001 参数错误
1002 失败
1003 权限不足(含手机蓝牙/定位等权限)
2001 未搜索到该设备
2002 目前不支持改类型设备
2003 设备配网超时
2004 添加网络超时
2005 目前不支持非wifi设备添加网络
2011 未找到WiFi,路由连接失败
2012 连接服务器失败或者断开服务器连接
2013 WiFi密码错误,路由器连接失败
2014 设备当前状态不支持添加网络
2015 设备当前状态为添加网络状态,不支持添加设备
2016 获取不到IP地址,路由器连接失败
2017 数据中心参数错误,请检查数据中心参数
2018 请使用4G网络激活设备
2019 CAT1连接失败:USB打开失败
2020 CAT1连接失败:USB CDC打开失败
2021 CAT1连接失败:AT连接参数设置失败
2022 CAT1连接失败:PPP启动失败
2023 CAT1连接失败:PPP连接失败
2024 CAT1连接失败:CSQ信号强度异常
9999 系统错误
30001 clientId不存在
30002 签名错误
30003 没有权限(如无权访问该设备)
30004 批量查询设备信息,最大20个
30005 Access-token 失效,调用 init或者updateAccessToken 更新(updateAccessToken方法SDK 会自动重建 WebSocket 并恢复订阅)
30006 该地址拒绝请求
30007 请求过于频繁
30008 参数无效
30009 参数为空
30010 参数范围无效
30011 请求时间戳过期
30012 secret无效
30013 数据不存在
30014 授权code 无效
30015 系统繁忙
30016 数据操作失败
30017 数据已经存在
30018 验证码错误
30019 不能修改
30022 客户端ip被限制
40001 设备不在线
40002 设备不存在
40003 设备网不存在
40004 设备id不能为空
40005 网关id不能为空
40006 用户不存在
40007 app_code不存在
40008 用户名和密码错误
40009 房间不存在
40010 家庭不存在
40011 家庭成员不存在
40012 ip查询城市失败
40013 没有配置模板
40014 短信或者邮件配置错误
40015 无对应的升级任务
40016 等待其他设备升级
40017 设备未启用
40018 设备已离线

其余的错误码请参考uni-app官方蓝牙相关接口错误码

注意事项

  1. 使用蓝牙功能时需要注意:
    • Android 平台:android6.0+,需要打开蓝牙,打开位置开关,需要授权微信访问位置的权限,部分手机甚至要打开 GPS
    • ios 平台:需要打开系统蓝牙,打开控制中心蓝牙,ios13+需要给微信蓝牙分享的权限
  2. WiFi配网注意事项:
    • 需要确保设备处于配网模式
    • 配网过程中,部分设备会在回调中上报错误信息,但设备还会继续尝试配网,直到成功或超时,可根据业务需求处理
  3. Socket / accessToken 注意事项(交互示意见交互流程):
    • 首次 init 不会连接 WebSocket,需调用 connectSocket() 后再 subscribeDevice
    • 订阅会自动取消上一次订阅,订阅时请订阅所有需要的设备
    • 订阅后才能收到设备消息
    • accessToken 与设备列表存在绑定关系,详见云云对接文档:获取 / 更新 accessTokenhttps://help.uascent-iot.com/marsgate/iot-doc-manage/doc-wiki#/page/share/view?pageId=361&space=2e0a8b9ba9724208b432ee335ad19ada
    • accessToken 失效(如 errCode === 30005:业务侧通过云云对接重新获取 accessToken 后,调用 updateAccessToken;若 WebSocket 已连接或上次因 Token 鉴权失败,SDK 会自动重建连接并恢复之前的订阅
    • accessToken 绑定的设备列表发生变化(新增 / 移除设备等):
      1. 通过云云对接刷新该 accessToken 绑定的设备列表(参考文档https://help.uascent-iot.com/marsgate/iot-doc-manage/doc-wiki#/page/share/view?pageId=361&space=2e0a8b9ba9724208b432ee335ad19ada)
      2. 刷新成功后,若业务侧仍使用原 accessToken 字符串,一般无需再调 updateAccessToken(Token 值未变)
      3. 是否重新订阅由业务自行决定:若订阅范围有变化,可调用 subscribeDevice 传入最新设备列表;若设备减少且不再需要推送,也可 unSubscribeDevice 后按需再订阅
    • 收到 errCode === 30003(无权访问该设备)时:多为订阅了未绑定到当前 accessToken 的设备,请先确认云云侧设备列表已刷新,再按需调整订阅
  4. 升级注意事项:
    • 升级中和升级完成的设备不要重复调用升级接口
    • 升级中需要处理设备离线的情况,离线时升级会失败
    • 通过 onMessageChange 可收到:firmwareInfo(设备上报固件信息)、upgrade(进度 / 成功 / 失败;type 含义与 getUpgradeInfo 返回一致)
    • upgrade.progress === 0 表示升级成功(result: 'success');progress < 0 表示失败;progress > 0 表示进行中
  5. 蓝牙 extraProtocol 注意事项:
    • 转换在全量 protocol 解析完成后执行,函数第二参为完整 data,可跨字段计算
    • 返回非空派生对象后会删除源属性 key;返回空则保留源属性
    • extraDpInfo 分工:extraProtocol 用于上报解析,extraDpInfo 用于下发值映射
  6. 通过设备获取周围WiFi列表
    • 在设备支持的情况下,需要先连接设备蓝牙(调用connect),才能获取周围WiFi列表(调用searchWifi)
    • 获取WiFi列表后,添加设备时,不需要断开蓝牙,直接调用添加设备(add)或者添加网络(addNetwork)即可

隐私、权限声明

1. 本插件需要申请的系统权限列表:

蓝牙、位置

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。