更新记录

1.0.1(2024-01-12)

兼容CF577测量流程

1.0.0(2024-01-09)

支持安卓APP使用


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.0 × 8.0.0 × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

乐福蓝牙秤

设备接入指南

介绍

本文档提供了设备接入的指导,以确保秤设备能够成功连接到程序并正常工作。

流程图

通过设备列表获取设备信息

https://api.apifox.cn/api/v1/projects/2900435/resources/394147/image-preview

操作测量流程

https://api.apifox.cn/api/v1/projects/2900435/resources/394148/image-preview

数据解析

https://api.apifox.cn/api/v1/projects/2900435/resources/394149/image-preview

准备工作

在开始设备接入之前,请确保您已经完成以下准备工作 确认设备已经按照制造商的说明正确组装和连接。 确保设备所需的供电已经连接,并处于正常工作状态。 准备好所需的网络连接信息,如Wi-Fi名称和密码。 申请蓝牙插件和使用身体数据解析接口申请与使用步骤如下:

导入插件

将所申请的插件导入到你的应用程序中,确保插件可以正常使用。

获取设备列表

注册设备蓝牙列表获取回调

在你的应用程序中注册回调函数,用于获取设备的蓝牙列表。当回调触发时,你可以获取到可用设备的列表。

调用开启start方法

调用相应的方法来开启设备的蓝牙功能,以便进行蓝牙设备的连接和通信。

设备蓝牙列表获取

通过设备蓝牙列表回调,获取到可用设备的蓝牙列表。这些设备通常是附近的蓝牙设备。

选择蓝牙列表中需要连接的设备

根据你的需求,在蓝牙列表中选择需要连接的设备,记录选择的蓝牙对象。

选择连接蓝牙设备测量流程

进入设备详情页

打开设备的详情页,显示设备的详细信息和配置选项。

注册监听相关回调

  • 注册蓝牙连接设备回调 在你的应用程序中注册回调函数,用于处理设备的蓝牙连接事件。当设备成功连接时,回调函数将被触发。
  • 注册蓝牙监听秤端数据回调 注册回调函数,用于监听来自秤端的数据。当踩秤有新的数据传输时,回调函数将被触发。
  • 注册蓝牙设备自动断连回调 注册回调函数,用于处理设备自动断开连接的事件。当设备断开连接时,回调函数将被触。
  • 注册蓝牙锁定数据回调 注册回调函数,用于处理来自秤端的锁定数据。当秤端锁定数据可用时,回调函数将被触发。
  • 注册蓝牙连接状态回调 注册回调函数,用于处理蓝牙连接状态的变化。当蓝牙连接状态发生改变时,回调函数将被触发。
  • 注册蓝牙修改设备回调 注册回调函数,用于处理对设备进行修改的事件。当设备配置发生改变时,回调函数将被触发。
  • 注册域名修改回调 在域名修改的接口中,添加回调函数的参数。当域名修改成功后,调用回调函数,并传递修改成功的状态。
  • 注册WiFi配网SN回调 在WiFi配网SN的接口中,添加回调函数的参数。当WiFi配网SN修改成功后,调用回调函数,并传递修改成功的SN数据。

    踩秤

    用户踩上秤盘,使秤处于活跃状态。

    调用开启方法

    调用相应的方法,开启设备的测量功能。

    停止扫描

    停止扫描附近的蓝牙设备,以节省电力和资源。

    连接蓝牙设备

    根据用户选择的设备,进行蓝牙设备的连接。连接设备回调开始处理开启过程数据监听。

    蓝牙连接设备秤端相关配置操作

  • 设备单位修改方法 秤端单位修改成功触发设备配置回调方法返回修改成功或失败状态
  • 设备域名修改方法 秤端域名修改成功触发回调方法成功状态
  • 设备wifi配网ssid与passwd方法 秤端wifi配网成功触发回调方法返回修改成功snData值

    上秤测量

    在设备连接成功后,进行秤端的测量操作。

    秤端数据回调方法返回秤端数据显示

    当秤端传输数据时,回调函数将被触发,将秤端数据显示给用户。

    秤端锁定数据回调方法返回秤端锁定数据显示

    当秤端锁定数据可用时,回调函数将被触发,将锁定的数据显示给用户。

    完成测量

    用户完成测量操作,准备进行数据解析和显示。

解析数据

根据申请的AppID与Key获取请求token

拿锁定数据测量值请求数据解析接口

将锁定的数据发送给数据解析接口,请求解析数据的结果。

得到身体数据解析值

接收数据解析接口返回的解析结果,得到身体数据的解析值。

显示测量

将解析得到的身体数据显示给用户,完成整个测量过程。

方法说明

plugin.Blue

plugin.Blue 是一系列控制蓝牙设备的命令和函数的封装,可以用于在项目中连接和通信蓝牙秤设备。以下是该插件所支持的命令和函数:

重要!如无法扫描出设备 需要调用setDeviceSetting设置相应的蓝牙秤配置 setDeviceSetting设置蓝牙设备搜索的设备数组列表 新名字的秤需向开发者注册设备项: setDeviceSetting(devicesList: array): void

start开始蓝牙扫描,参数devicesName为设备名称的数组,autoFlag是否自动连接秤端 默认为是: start(devicesName: array, autoFlag: Boolean): void

stop停止蓝牙扫描,关闭所有事件监听与关闭蓝牙秤连接,通常用于业务结束后需要调用: stop(): void

disconnect关闭蓝牙秤连接: disconnect(fn: function): object

createBLEConnection接受一个蓝牙秤设备对象 连接后触发deviceConnect回调 createBLEConnection(device: object): object

stopBluetoothDevicesDiscovery停止扫描设备回调 stopBluetoothDevicesDiscovery(fn: function): object

visibleLog 是否打印插件内部日志 visibleLog(flag: boolean):void

plugin.ScaleAction

plugin.ScaleAction APP操作是蓝牙秤端的通用方法,切换蓝牙秤的单位和开启监听蓝牙秤数据

configWifi 蓝牙配网 - 该功能用于蓝牙WiFi秤,在给秤配置网络时使用

// 首先确保已经绑定了蓝牙WiFi秤 2、用户输入Wifi账号和密码 3、发起连接设备 4、plugin.bus.subscribe("snData")方法返回sn码,此时秤上的WiFi图标会先闪烁(连接路由器中),再常量(连接路由器成功并获取到sn)将sn传给Server验证秤是否已经完成注册 7、Server返回成功,则配网成功,否则配网失败
configWifi(ssid: string, password:string): void

configDomain 修改秤端服务器域名 修改后调用configWifi开始蓝牙配网

// 首先确保已经绑定了蓝牙WiFi秤 
发起蓝牙配网是先更新秤端服务器域名 防止域名调试篡改
configDomain(domain: string): void

startDataProgress蓝牙秤端发送数据 需要在设备连接成功后即deviceConnect回调中使用

startDataProgress(): void 
// 示例
plugin.bus.subscribe("deviceConnect", (res) => {
  // 必须调用 不然无法获得秤端数据
  plugin.ScaleAction.startDataProgress()
});

fetchDeviceHistoryData

fetchDeviceHistoryData(): void 
// 示例
plugin.bus.subscribe("syncDeviceHistorySuccess", (res) => {
  //同步历史数据成功回调
});

deleteDeviceHistoryData

deleteDeviceHistoryData(): void 
// 示例
plugin.bus.subscribe("deleteDeviceHistoryDataSuccess", (res) => {
  //删除历史数据成功回调
});

syncDeviceSetting 体重秤syncDeviceSetting 传入对象键值对

Property Value Value
gender 0 性别对应 Plugin.PPBluetoothDefine.PPDeviceGenderType
unit 0 单位对应 Plugin.PPBluetoothDefine.PPDeviceUnit
isAthleteMode false 孕妇
isPregnantMode false 运动员模式
age 23 年龄
height 123 身高

食物秤syncDeviceSetting 传入对象键值对

Property Value Value
unit 0 单位对应 Plugin.PPBluetoothDefine.PPDeviceUnit
isBuzzerGateMode false 开启蜂鸣
isToZeroMode false 食物称置零
syncDeviceSetting(): object 
// 体重秤示例
plugin.ScaleAction.syncDeviceSetting({
  gender:0,
  unit:0,
  isAthleteMode:false,
  isPregnantMode:false,
  age:23,
  height:123,
})

// 食物秤示例 食物称只能修改单一项
plugin.ScaleAction.syncDeviceSetting({
  isBuzzerGateMode: true,
})
plugin.ScaleAction.syncDeviceSetting({
  unit: 0,
})
plugin.ScaleAction.syncDeviceSetting({
  isToZeroMode: true,
})

historyData 获取历史带历史过程数据 其中res为对象键值为

Property Value 描述
isPlus true 是否是正数
isOverload false 是否超载
weight 0 重量放大了100倍
resistance 0 阻抗
isEnd false 本次测量是否结束
isHeartRating false 心律是否测量中
heartRate 0 心律
unit 0 设备单位 对应Plugin.PPBluetoothDefine.PPDeviceUnit
 plugin.bus.subscribe("historyData", (res) => {
   console.log("historyData", res);
 });

devicesModel 获取设备模型设备模型可以根据Plugin.PPBluetoothDefine了解秤相关信息

 plugin.bus.subscribe("devicesModel", (res) => {
   console.log("devicesModel", res);
 });

devicesInfo 获取设备内置信息

 plugin.bus.subscribe("devicesInfo", (res) => {
   console.log("devicesInfo", res);
 });

syncDeviceTimeSuccess 时间同步 时间同步成功回调

 plugin.bus.subscribe("syncDeviceTimeSuccess", (res) => {
   console.log("syncDeviceTimeSuccess", res);
 });

syncDeviceHistorySuccess 同步历史数据回调

 plugin.bus.subscribe("syncDeviceHistorySuccess", (res) => {
   console.log("syncDeviceHistorySuccess", res);
 });

deleteDeviceHistoryDataSuccess 历史数据删除成功回调

 plugin.bus.subscribe("deleteDeviceHistoryDataSuccess", (res) => {
   console.log("deleteDeviceHistoryDataSuccess", res);
 });

deviceWillDisconnect 设备将要断连回调

 plugin.bus.subscribe("deviceWillDisconnect", (res) => {
   console.log("deviceWillDisconnect", res);
 });

plugin.bus

plugin.bus通信蓝牙设备,用于监听蓝牙以及秤端的数据与状态,以下是该插件所支持的命令:

connectState 蓝牙与蓝牙秤状态监听

 plugin.bus.subscribe("connectState", (res) => {
    console.log("connectState", res);
  });

unitChange 蓝牙秤单位切换状态监听

 plugin.bus.subscribe("unitChange", (res) => {
   console.log("unitChange", res);
 });

devicesList 获取过滤后的附近设备列表

 plugin.bus.subscribe("devicesList", (res) => {
  console.log("devicesList", res);
 });

getDeviceInfo 获取附件所有附近设备信息 自动连接autoFlag不为false时有数据

 plugin.bus.subscribe("getDeviceInfo", (res) => {
   console.log("getDeviceInfo", res);
 });

deviceConnect 蓝牙秤设备成功连接后连接中状态监听

 plugin.bus.subscribe("deviceConnect", (res) => {
   plugin.ScaleAction.startDataProgress()
 });

progressData 蓝牙秤端过程数据,监听不稳定体重的实时状态 其中res为对象键值为

Property Value 描述
isPlus true 是否是正数
isOverload false 是否超载
weight 0 重量放大了100倍
resistance 0 阻抗
isEnd false 本次测量是否结束
isHeartRating false 心律是否测量中
heartRate 0 心律
unit 0 设备单位 对应Plugin.PPBluetoothDefine.PPDeviceUnit

食物秤中res为对象键值为

Property Value 描述
isPlus true 是否是正数
isOverload false 是否超载
weight 0 重量放大了100倍
isEnd false 本次测量是否结束
unit 0 设备单位 对应Plugin.PPBluetoothDefine.PPDeviceUnit
 plugin.bus.subscribe("progressData", (res) => {
   console.log("progressData", res);
 });

lockData 蓝牙秤端完成测量锁定数据,锁定的体重和阻抗

 plugin.bus.subscribe("lockData", (res) => {
   console.log("lockData", res);
 });

heartRate 蓝牙秤端锁定心率值,必须根据已有秤功能调用

 plugin.bus.subscribe("heartRate", (res) => {
   console.log("heartRate", res);
 });

snData 配网成功后返回sn码 sn码用于请求验证秤是否已经完成注册

 plugin.bus.subscribe("snData", (res) => {
   console.log("snData", res);
 });

domainChange 修改域名成功后返回提示

 plugin.bus.subscribe("domainChange", (res) => {
   console.log("domainChange", res);
 });

plugin.getDeviceSettingList

plugin.getDeviceSettingList 获取设置设备列表

//获取设备设置列表用于用户添加扫描设备
plugin.getDeviceSettingList({
  url: baseUrl,
  data: {
    appKey: appInfo.appKey
  },
  header: {
    "token": bodyToken,
    "Accept-Language": wx.getStorageSync("lang") || 'zh'
  }
}).then((res)=>{
  if (res.data.code == 200) {
    plugin.Blue.setDeviceSetting(res.data.data)
    console.log("plugin==", plugin.PPBluetoothDefine)
  }
})

plugin.getAcLfBodyData 交流秤数据解析

// 设备device 根据plugin.Blue.getDeviceModel 获取设备类型deviceConnectType 根据相应的类型请求解析
var param = {
    weightKg: 60,
    impedance: 5076001,
    sex: 1,  0(女)     1(男)
    age: 22,
    height: 170,
    heartRate: 80,
    token: '必传',
  }
 plugin.getAcLfBodyData({url:url,data:param,header:{ "token":res.data.data.token,"Accept-Language":"zh"}}).then(res => {
  console.log('解析结果',res)
})

plugin.getDcLfBodyData

plugin.getDcLfBodyData 直流秤数据解析

// 设备device 根据plugin.Blue.getDeviceModel 获取设备类型deviceConnectType 根据相应的类型请求解析
var param = {
    "age":23,
    "heartRate":0,
    "height":123,
    "impedance":0,
    "peopleType":0,
    "sex":0,
    "weightKg":66.6,
  }
 plugin.getDcLfBodyData({url:url,data:param,header:{ "token":res.data.data.token,"Accept-Language":"zh"}}).then(res => {
  console.log('解析结果',res)
})

plugin.refreshToken

plugin.refreshToken 刷新token


// 使用refreshToken与解析数据方法结合示例
function refreshFn() {
  this.refreshToken(() => {
    callDcLfBodyData(param);
  }, true);
}

async function refreshToken(fn, flag) {
  let bodyToken = localStorage.getItem('bodyToken');
  let bodyTokenTime = localStorage.getItem('bodyTokenTime');
  if (!bodyToken || bodyTokenTime * 1000 < +new Date() || flag) {
    let res = await plugin.refreshToken({
      url: 'https://uniquehealth.lefuenergy.com',
      data: {
        "appSecret": "插件开发者申请",
        "appKey": "插件开发者申请"
      }
    });
    console.log("res", res);
    if (res.data.code == 200) {
      localStorage.setItem('bodyToken', res.data.data.token);
      localStorage.setItem('bodyTokenTime', res.data.data.expireTime);
      fn();
    }
  } else {
    fn();
  }
}

function handleResponse(res) {
  console.log("res-=-=-|||", res.data.data);
  if (res.data.code == 200) {

    // 获取解析数据操作

  } else if (res.data.code == 401) {
    this.refreshToken(() => {
      callDcLfBodyData(param);
    }, true);
  }
}

function handleResponseList(res) {
  console.log("res-=-=-|||", res.data.data);
  if (res.data.code == 200) {
    // 获取解析数据操作
  } else if (res.data.code == 401) {
    this.refreshToken(() => {
      getDeviceSettingList(param);
    }, true);
  }
}

function getDeviceSettingList(param){
 let bodyToken = localStorage.getItem('bodyToken');
  plugin.getDeviceSettingList({
    url: 'https://uniquehealth.lefuenergy.com',
    data: param,
    header: {
      "token": bodyToken,
      "Accept-Language": localStorage.getItem("lang") || 'zh'
    }
  }).then(handleResponseList);
}

function callDcLfBodyData(param) {
  let bodyToken = localStorage.getItem('bodyToken');
  plugin.getDcLfBodyData({
    url: 'https://uniquehealth.lefuenergy.com',
    data: param,
    header: {
      "token": bodyToken,
      "Accept-Language": localStorage.getItem("lang") || 'zh'
    }
  }).then(handleResponse);
}

Torre协议测量

Torre测量流程

连接设备后 必须先调用更新MTU接口 再调用开始测量接口后数据返回


let getActiveProtocol = null
plugin.bus.subscribe("deviceConnect", (res) => {
  console.log('成功连接设备')
  // 获取协议调用方法
  getActiveProtocol = plugin.ScaleAction.getActiveProtocol()
  // 更新MTU
  getActiveProtocol.codeUpdateMTU((res) => {
    console.log("codeUpdateMTU", res)
  })
});
//开始测量
activeProtocol.codeStartMeasure((res) => {
    console.log("res", res)
})
//监听到数据变化
plugin.bus.subscribe("progressData", (res) => {console.log(res)})
//获得测量结果
plugin.bus.subscribe("lockData", (res) => {console.log(res)})

配网流程

配网需要先调用获取wifi列表接口 返回数据后再进行配网

let getActiveProtocol = plugin.ScaleAction.getActiveProtocol()
activeProtocol.dataFindSurroundDevice((res) => {
  console.log("wifiList", res)
  activeProtocol.dataConfigNetWork({
      domain: "http://domain",
      ssid: 'IT32',
      password: 'whs123456'
  }, (res) => {
      console.log("dataConfigNetWork", res)
  })
})

开始测量 下发此指令后设备才会上报称重情况 参数:无 handler: 0设置成功 1设置失败

codeStartMeasure((status) => {})

保活指令 推荐首次连接成功后每10秒调用一次,可以保证设备不会主动断开连接

sendKeepAliveCode()

停止测量 停止设备的测量操作 参数:无 handler: 0设置成功 1设置失败

codeStopMeasure((status) => {})

获取设备单位 获取设备当前的单位信息 参数:无

codeFetchUnit((status) => {})

修改设备单位 修改设备的单位信息 参数:无 unit: 单位 0x00:单位kg 0x01:单位lb 0x02:单位斤 0x03:单位st 0x04:单位st:lb handler: 0x00:设置成功 0x01:设置失败

codeChangeUnit(unit,(status) => {})

同步设备时间 同步设备的时间 参数:无

codeSyncTime((status) => {})

获取设备屏幕亮度 获取设备当前的屏幕亮度

codeFetchScreenLuminance((status)=>{})

设置设备屏幕亮度 设置设备的屏幕亮度

codeSetScreenLuminance(50,(status)=>{})

清除设备数据 清除设备中的不同类型的数据 参数- cmd: 0x00:清除所有设备数据(用户信息、历史数据、配网数据、设置信息) 0x01:清除用户信息 0x02:清除历史数据 0x03:清除配网状态 0x04:清除设置信息 handler: 0x00:成功 0x01:失败

codeClearDeviceData("00",(status)=>{})

获取心率开关状态 获取设备当前的心率测量开关状态 参数:无

codeFetchHeartRateSwitch((status)=>{})

打开心率测量 打开设备的心率测量功能 参数:无

codeOpenHeartRateSwitch((status)=>{})

关闭心率测量 关闭设备的心率测量功能 参数:无

codeCloseHeartRateSwitch((status)=>{})

获取阻抗开关状态 获取设备当前的阻抗测量开关状态 参数:无

codeFetchImpedanceSwitch((status)=>{})

打开阻抗测量 打开设备的阻抗测量功能 参数:无

codeOpenImpedanceSwitch((status)=>{})

关闭阻抗测量 关闭设备的阻抗测量功能 参数:无

codeCloseImpedanceSwitch((status)=>{})

获取设备配网状态 获取设备当前的配网状态 参数:无

codeFetchWifiConfig((status)=>{})

退出配网模式 退出设备的配网模式 参数:无

dataExitWifiConfig((status)=>{})

获取设备当前配置热点的ssid 获取设备当前配置的热点SSID名称 参数:无 handler: ssid名称

dataFetchConfigNetworkSSID((status)=>{})

设置设备绑定状态 设置设备的绑定状态 参数:无 handler: 0:设置成功 1:设置失败

codeSetBindingState((status)=>{})

设置设备未绑定状态 设置设备的未绑定状态 参数:无 handler: 0:设置成功 1:设置失败

codeSetUnbindingState((status)=>{})

获取设备绑定状态 获取设备当前的绑定状态 参数:无

codeFetchBindingState((status)=>{})

开启抱婴模式 开启设备的抱婴模式 参数: step: 第几次上称(0/1) weight: 上次上称时的重量(step为0时传0) handler: 0:设置成功 1:设置失败

codeEnableBabyModel(0,0,fn)

退出抱婴模式 退出设备的抱婴模式 参数:无 handler: 0:设置成功 1:设置失败

codeExitBabyModel((status)=>{})

更新MTU 更新设备的MTU(最大传输单元) 参数:无 handler: 0:设置成功 1:设置失败

codeUpdateMTU((status)=>{})

发现周围的可连接热点 搜索周围的可连接WiFi热点 参数:无 handler: 返回结果,包含热点名称和强度的数组对象

dataFindSurroundDevice((list)=>{})

获取WIFI MAC地址 获取设备的WiFi MAC地址 参数:无 handler: WiFi MAC地址,示例:MAC 地址:01:02:03:04:05:06(当MAC地址为00:00:00:00:00:00时表示获取不到)

codeFetchWifiMac((mac)=>{})

通过WIFI进行OTA升级 使用WiFi进行设备的OTA(空中固件升级) 参数:无 handler: 进度和失败状态

codeOtaUpdate((status)=>{})

获取设备端用户列表 获取设备端的用户ID列表 参数:无 handler: 返回设备端所有用户的userId

dataFetchUserID((list)=>{})

删除用户 删除设备端的用户信息 参数:无 userModel: 单个用户信息,包含userId和memberId handler: 0:设置成功 1:设置失败

dataDeleteUser({userID: "15820440620", memberID: "1885639"},(status)=>{})

获取某个用户下所有成员的历史记录 获取某个用户下所有成员的历史记录 参数:无 userModel: 用户对象,userId为必传项 handler: 历史数据结果

dataFetchHistoryData({userID: "15820440620"},(status)=>{})
dataHistoricalDataStatusReport((res) => {console.log("历史数据", res)})

选中测量用户 用于测量过程中指定测量用户,指定后不需要在设备端进行选择 参数-userModel: 单个用户信息,包含userId和memberId handler: 0:设置成功 1:设置失败

dataSelectUser({userID: "15820440620", memberID: "1885639", }, (status) => {})

同步单个用户给设备 将单个用户信息同步给设备,如果设备中已存在该用户,则会更新用户信息;如果不存在,则会插入。 参数-infos: 单个用户信息,包含各个属性的值(参考代码注释) handler: 0:设置成功 1:设置失败

dataSyncUserInfo({
    userID: "15820440621",
    memberID: "1885629",
    age: "25",
    gender: 0,
    height: "158",
    isAthleteMode: 0,
    currentWeight: "55",
    deviceHeaderIndex: 0,
    targetWeight: "54",
    idealWeight: "52.8",
    recentData: [{
            weightKg: 59.00,
            timeStamp: 1677046795028
        },
        {
            weightKg: 58.79,
            timeStamp: 1692264965631
        },
        {
            weightKg: 52.20,
            timeStamp: 1693894960948
        },
        {
            weightKg: 46.50,
            timeStamp: 1694051103700
        },
        {
            weightKg: 61.95,
            timeStamp: 1694159727308
        },
        {
            weightKg: 61.59,
            timeStamp: 1694232070904
        },
        {
            weightKg: 62.35,
            timeStamp: 1694425016834
        },
    ],
    userName: "名字",
    },(status)=>{})

配置热点 配置设备连接的WiFi热点信息 参数-model: 包含用于连接热点的信息(domain, ssid, password) handler: 配网过程中的状态和错误码

dataConfigNetWork({domain:"domain", ssid:"ssid", password:"password"},(status)=>{})

常量与枚举值

plugin.PPBluetoothDefine

以下是对给定的枚举类型介绍:

PPDeviceConnectType (设备连接类型)

  • PPDeviceConnectTypeUnknow (未知)
  • PPDeviceConnectTypeBleAdv (蓝牙广播秤)
  • PPDeviceConnectTypeBleConnect (蓝牙连接秤)

PPDeviceType (设备类型)

  • PPDeviceTypeUnknow (未知)
  • PPDeviceTypeCF (体脂秤)
  • PPDeviceTypeCE (体重秤)
  • PPDeviceTypeCB (婴儿秤)
  • PPDeviceTypeCA (厨房秤)

PPDeviceProtocolType (设备蓝牙协议版本)

  • PPDeviceProtocolTypeUnknow (未知)
  • PPDeviceProtocolTypeV2 (2.x版本)
  • PPDeviceProtocolTypeV3 (3.x版本)
  • PPDeviceProtocolTypeTorre (torre版本)

PPDeviceCalcuteType (测脂计算方式)

  • PPDeviceCalcuteTypeUnknow (未知)
  • PPDeviceCalcuteTypeInScale (秤端计算)
  • PPDeviceCalcuteTypeDirect (直流算法)
  • PPDeviceCalcuteTypeAlternate (交流算法)
  • PPDeviceCalcuteTypeAlternate8 (8电极交流算法)
  • PPDeviceCalcuteTypeAlternateNormal (默认计算库直接用合泰返回的体脂率)
  • PPDeviceCalcuteTypeNeedNot (无需计算)

PPDevicePowerType (设备供电方式)

  • PPDevicePowerTypeUnknow (未知)
  • PPDevicePowerTypeBattery (电池)
  • PPDevicePowerTypeSolar (太阳能)
  • PPDevicePowerTypeCharge (充电)

PPDeviceFuncType (设备功能类型)

  • PPDeviceFuncTypeWeight (称重)
  • PPDeviceFuncTypeFat (测脂)
  • PPDeviceFuncTypeHeartRate (心律)
  • PPDeviceFuncTypeHistory (历史)
  • PPDeviceFuncTypeSafe (孕妇)
  • PPDeviceFuncTypeBMDJ (闭目单脚)
  • PPDeviceFuncTypeBaby (抱婴模式)
  • PPDeviceFuncTypeWifi (wifi配网)

PPDeviceAccuracyType (设备精度)

  • PPDeviceAccuracyTypeUnknow (未知)
  • PPDeviceAccuracyTypePoint01 (0.1KG精度)
  • PPDeviceAccuracyTypePoint005 (0.05KG精度)
  • PPDeviceAccuracyTypePoint001 (0.01KG精度)
  • PPDeviceAccuracyTypePointG (1G精度)
  • PPDeviceAccuracyTypePoint01G (0.1G精度)

PPDeviceUnitType (设备具有的单位)

  • PPDeviceUnitTypeKG(KG)
  • PPDeviceUnitTypeLB(LB)
  • PPDeviceUnitTypeSTLB(STLB)
  • PPDeviceUnitTypeJin(Jin)
  • PPDeviceUnitTypeG(G)
  • PPDeviceUnitTypeLBOZ(LBOZ)
  • PPDeviceUnitTypeOZ(FLOZ)
  • PPDeviceUnitTypeMLWater(MLWater)
  • PPDeviceUnitTypeMLMilk(MLMilk)
  • PPDeviceUnitTypeFLOZWater(FLOZWater)
  • PPDeviceUnitTypeFLOZMilk(FLOZMilk)
  • PPDeviceUnitTypeST(ST)

PPDeviceUnit (用户使用的单位)

  • PPUnitKG(KG)
  • PPUnitLB(LB)
  • PPUnitST(ST)
  • PPUnitJin(Jin)
  • PPUnitSTLB(STLB)
  • PPUnitG(G)
  • PPUnitLBOZ(LBOZ)
  • PPUnitOZ(OZ)
  • PPUnitMLWater(MLWater)
  • PPUnitMLMilk(MLMilk)
  • PPUnitFLOZWater(FLOZWater)
  • PPUnitFLOZMilk(FLOZMilk)

PPDeviceGenderType (性别)

  • PPDeviceGenderTypeFemale (女性)
  • PPDeviceGenderTypeMale (男性)

PPWIFIConfigState (配网错误状态)

  • PPWIFIConfigStateUnknow
  • PPWIFIConfigStateStart
  • PPWIFIConfigStateStartSuccess
  • PPWIFIConfigStateStartFailed
  • PPWIFIConfigStateDomainSendStart
  • PPWIFIConfigStateDomainSendSuccess
  • PPWIFIConfigStateDomainSendFailed
  • PPWIFIConfigStateDomainSendCode
  • PPWIFIConfigStateDomainSendCodeSuccess
  • PPWIFIConfigStateDomainSendCodeFailed
  • PPWIFIConfigStateSSIDSendStart
  • PPWIFIConfigStateSSIDSendSuccess
  • PPWIFIConfigStateSSIDSendFailed
  • PPWIFIConfigStateSSIDSendCode
  • PPWIFIConfigStateSSIDSendCodeSuccess
  • PPWIFIConfigStateSSIDSendCodeFailed
  • PPWIFIConfigStatePasswordSendStart
  • PPWIFIConfigStatePasswordSendSuccess
  • PPWIFIConfigStatePasswordSendFailed
  • PPWIFIConfigStatePasswordSendCode
  • PPWIFIConfigStatePasswordSendCodeSuccess
  • PPWIFIConfigStatePasswordSendCodeFailed
  • PPWIFIConfigStateRegist
  • PPWIFIConfigStateRegistSuccess
  • PPWIFIConfigStateRegistFailedTimeOut
  • PPWIFIConfigStateRegistFailedConnect
  • PPWIFIConfigStateRegistFailedHTTP
  • PPWIFIConfigStateRegistFailedHTTPS
  • PPWIFIConfigStateRegistFailedRegist
  • PPWIFIConfigStateRegistFailedCommand

plugin.BLUE_STATE

connectState 状态 BLUE_STATE对应值为

常量名 描述
UNAVAILABLE 蓝牙不可用
READY 蓝牙准备就绪
SCANING 正在搜索...
CONNECTSUCCESS 连接成功
CONNECTFAILED 连接失败, 请重试!
WIFISUCCESS 配网成功

使用插件示例

直接导入示例项目运行即可

常见问题

开启扫描但不到设备

需要确认系统蓝牙与应用权限蓝牙是否开启 如果开启依旧无法扫描到蓝牙 需要开启位置信息 部分移动设备需要开启移动信息才能扫描到设备 是否为真机调试 开发者工具部分版本真机调试蓝牙无法使用 需要换成预览模式调试开发

wifi配网后如何判断成功

wifi配网需要确认路由器wi-Fi频段是否为2.4GHz 调用wifi配网api 如果wifi配网成功则snData会返回回调方法 如果30秒内snData监听没有回调则为配网失败

ios有数据返回 安卓无数据返回

确认页面是否在上一层页调用了插件stop方法 安卓端stop方法执行满导致新注册测量页面回调被清空 需要延迟几百毫秒再注册回调方法

如何获取ios真实mac地址

注册秤模型回调 连接成功秤后 返回秤模型回调拥有设备真实mac地址

传入设备对象获取到秤端模型

秤端模型需要设备对象的advertisData 对象复制后advertisData里的二进制数据丢失导致无法计算出设备模型 复制设备对象时需要记录advertisData的二进制值 advertisData有真实值才能获得真实的秤模型

ios无法配网成功

ios配网成功必须满足的选项 如iPhone11如下

  • 蓝牙秤确保配网时已经连接且里热点手机不远
  • iPhone11开启的热点可被其他手机扫描到
  • iPhone11为关闭wifi状态
  • 域名与wifi名密码正确

隐私、权限声明

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

位置权限 蓝牙权限

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

插件不采集任何数据

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

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问