# 小程序SDK **Repository Path**: duzzledug/mini-program-sdk ## Basic Information - **Project Name**: 小程序SDK - **Description**: 玉成小程序SDK - **Primary Language**: JavaScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2024-11-27 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SDK 概述 * 根据官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html * 通过 requirePlugin 来调用 api ```js // 在js文件中引入,requirePlugin()中的参数与app.json中配置的对应 const YCBluetoothPlugin = requirePlugin("YCBluetooth-plugin"); ``` ## 初始化 ### API ```js function initBluetooth(callback); ``` ### 参数: * callback: 初始化的结果 ### 使用示例 ```js // 使用 res:返回success | fail YCBluetoothPlugin.initBluetooth((res) => { // 逻辑代码 }); ``` ## 反初始化 ```js function deinitBluetooth(); ``` ### 参数 * 无 ### 使用示例 ```js YCBluetoothPlugin.deinitBluetooth(); ``` # 1.设备相关 ## 1.1 搜索设备 ### API ```js function startSearchDevice(callback); ``` ### 参数 * 无 ### 使用示例 ```js startSearchDevice( function (devices) { // 搜索到的设备列表 }); ``` ## 1.2 停止搜索 ### API ```js function stopSearchDevice(); ``` ### 参数 * 无 ### 使用示例 ```js stopSearchDevice(); ``` ## 1.3 连接设备 ### API ```js function connectDevice(deviceId, callBack); ``` ### 参数 * deviceId: 需要连接设备的设备ID, Android: mac地址, iOS: UUID * callBack: 连接结果 ### 使用示例 ```js // 连接设备 connectDevice(deviceId, function (isConnected, res) { // 是否连接成功,如果连接失败,原因在res中 }); ``` ## 1.4 断开连接 ### API ```js function disconnectDevice(deviceId, callback); ``` ### 参数 * deviceId: 需要连接设备的设备ID, Android: mac地址, iOS: UUID * callBack: 断开连接结果 ### 使用示例 ```js disconnectDevice(deviceID, (isDisconnected, msg) => { // 是否断开连接 // msg中的是原因 }); ``` # 2. 查询设备的信息 ## 2.1 查询设备的基本信息 ### API ```js function queryDeviceBasicInfo(completion); ``` ### 参数 * completion 是一个回调函数,用于接收查询的结果。 ### 返回值 ```js { deviceID: 设备ID号, mcuFirmwareMajorVersion: 固件主版本, mcuFirmwareSubVersion: 固件子版本, batterystatus: 电池状态, 0:正常, 1:低电量, 2:充电中, 3:充满, batteryPower: 电量 0 - 100, } ``` ### 使用示例 ```js queryDeviceBasicInfo(function (state, response) { console.log('设备的基础信息' + response) }); ``` ## 2.2 查询设备的MacAddress ### API ```js function queryDeviceMacAddress(completion); ``` ### 参数 * completion 是一个回调函数,用于接收查询的结果。 ### 使用示例 ```js queryDeviceMacAddress(function (state, response) { console.log('收到设备响应' + response) }); ``` ## 2.3 查询设备型号 ### API ```js function queryDevcieModel(completion); ``` ### 参数 * completion 是一个回调函数,用于接收查询的结果。 ### 使用示例 ```js queryDevcieModel(function (state, response) { console.log('设备型号信息' + response) }); ``` ## 2.4 查询设备主题信息 ### API ```js function queryDeviceTheme(completion); ``` ### 参数 * completion 是一个回调函数,用于接收查询的结果。 ### 使用示例 ```js // { // total: 主题总数, // current: 当前主题的下标, // } queryDeviceTheme(function (state, response) { console.log('主题信息' + response['total'] + ', ' + response['current']) }); ``` ## 2.5 查询设备平台 ### API ```js function queryDeviceMcu(completion); ``` ### 参数 * completion 是一个回调函数,用于接收查询的结果。 ### 使用示例 ```js queryDeviceMcu(function (state, response) { printLog('设备平台' + response) }); ``` ## 2.6 查询设备功能支持列表 ### API ```js function queryDevcieSupportFunction(); ``` ### 参数 * completion 是一个回调函数,用于存储结果. * 结果中存储的是一个对象,每个属性都有一个标志位,是一个布尔值。 > 注意: 定制设备一般不需要使用到此参数 ### 使用举例 ```js queryDevcieSupportFunction(function (state, response) { printLog('功能列表' + response) }); ``` ### 关于类型功能列表的类型补充 ```js /// 血压 var isSupportBloodPressure /// 语言设置 var isSupportLanguageSettings /// 消息推送 (总开关) var isSupportInformationPush /// 心率 var isSupportHeartRate /// OTA升级 var isSupportOta /// 实时数据上传 var isSupportRealTimeDataUpload /// 睡眠 var isSupportSleep /// 计步 var isSupportStep // ====== /// 多运动 var isSupportSport /// HRV var isSupportHRV /// 呼吸率 var isSupportRespirationRate /// 血氧 var isSupportBloodOxygen /// 历史ECG var isSupportHistoricalECG /// 实时ECG var isSupportRealTimeECG /// 血压告警 var isSupportBloodPressureAlarm /// 心率告警 var isSupportHeartRateAlarm // === 闹钟类型 ==== /// 闹钟数量 var alarmClockCount /// 闹钟类型 起床 var isSupportAlarmTypeWakeUp /// 闹钟类型 起床 var isSupportAlarmTypeSleep /// 闹钟类型 锻炼 var isSupportAlarmTypeExercise /// 闹钟类型 吃药 var isSupportAlarmTypeMedicine /// 闹钟类型 约会 var isSupportAlarmTypeAppointment /// 闹钟类型 聚会 var isSupportAlarmTypeParty /// 闹钟类型 会议 var isSupportAlarmTypeMeeting /// 闹钟类型 自定义 var isSupportAlarmTypeCustom // === 消息推送 === // 第一组 var isSupportInformationTypeTwitter var isSupportInformationTypeFacebook var isSupportInformationTypeWeiBo var isSupportInformationTypeQQ var isSupportInformationTypeWeChat var isSupportInformationTypeEmail var isSupportInformationTypeSMS var isSupportInformationTypeCall // 第二组 var isSupportInformationTypeTelegram var isSupportInformationTypeSkype var isSupportInformationTypeSnapchat var isSupportInformationTypeLine var isSupportInformationTypeLinkedIn var isSupportInformationTypeInstagram var isSupportInformationTypeMessenger var isSupportInformationTypeWhatsApp // ====== /// 翻腕亮屏 var isSupportWristBrightScreen /// 勿扰模式 var isSupportDoNotDisturbMode /// 血压水平设置 var isSupportBloodPressureLevelSetting /// 出厂设置 var isSupportFactorySettings /// 找设备 var isSupportFindDevice /// 找手机 var isSupportFindPhone /// 防丢提醒 var isSupportAntiLostReminder /// 久坐提醒 var isSupportSedentaryReminder // ====== /// 上传数据 加密 var isSupportUploadDataEncryption /// 通话 var isSupportCall /// 心电诊断 var isSupportECGDiagnosis /// 明日天气 var isSupportTomorrowWeather /// 今日天气 var isSupportTodayWeather /// 搜周边 var isSupportSearchAround /// 微信运动 var isSupportWeChatSports /// 肤色设置 var isSupportSkinColorSettings // ====== /// 温度 var isSupportTemperature /// 音乐控制 var isSupportMusicControl /// 主题 var isSupportTheme /// 电极位置 var isSupportElectrodePosition /// 血压校准 var isSupportBloodPressureCalibration /// CVRR var isSupportCVRR /// 腋温测量 var isSupportAxillaryTemperatureMeasurement /// 温度预警 var isSupportTemperatureAlarm // ====== /// 温度校准 var isSupportTemperatureCalibration /// 机主信息编辑 var isSupportHostInfomationEdit /// 手动拍照 var isSupportManualPhotographing /// 摇一摇拍照 var isSupportShakePhotographing /// 女性生理周期 var isSupportFemalePhysiologicalCycle /// 表盘功能 var isSupportWatchFace /// 通讯录 var isSupportAddressBook /// ECG结果精准 var isECGResultsAccurate // 运动模式 /// 登山 var isSupportMountaineering /// 足球 var isSupportFootball /// 乒乓球 var isSupportPingPang /// 户外跑步 var isSupportOutdoorRunning /// 室内跑步 var isSupportIndoorRunning /// 户外步行 var isSupportOutdoorWalking /// 室内步行 var isSupportIndoorWalking /// 实时监护模式 var isSupportRealTimeMonitoring /// 羽毛球 var isSupportBadminton /// 健走 var isSupportWalk /// 游泳 var isSupportSwimming /// 篮球 var isSupportPlayball /// 跳绳 var isSupportRopeskipping /// 骑行 var isSupportRiding /// 健身 var isSupportFitness /// 跑步 var isSupportRun /// 室内骑行 var isSupportIndoorRiding /// 踏步机 var isSupportStepper /// 划船机 var isSupportRowingMachine /// 仰卧起坐 var isSupportSitups /// 跳跃运动 var isSupportJumping /// 重量训练 var isSupportWeightTraining /// 瑜伽 var isSupportYoga // === /// 同步运动实时数据 var isSupportSyncRealSportData /// 启动心率测量 var isSupportStartHeartRateMeasurement /// 启动血压测量 var isSupportStartBloodPressureMeasurement /// 启动血氧测量 var isSupportStartBloodOxygenMeasurement /// 启动体温测量 var isSupportStartBodyTemperatureMeasurement /// 启动呼吸率测量 var isSupportStartRespirationRateMeasurement /// 自定义表盘 var isSupportCustomWatchface // ====================================== /// 精准血压测量 var isSupportAccurateBloodPressureMeasurement /// SOS开关 var isSupportSOS /// 血氧告警 var isSupportBloodOxygenAlarm /// 精准血压实时数据上传 var isSupportAccurateBloodPressureRealTimeDataUpload /// Viber消息推送 var isSupportInformationTypeViber /// 其它消息推送 var isSupportInformationTypeOther /// 自定义表盘颜色翻转 var isFlipCustomDialColor ``` # 3. 设置设备的参数 ## 3.1 设置步数目标 ### API ```js function setDeviceStepGoal(step, completion); ``` ### 参数 * step 目标步数 * completion 调用API的结果回调函数 ### 使用示例 ```js setDeviceStepGoal(100000, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.2 设置睡眠目标 ### API ```js function setDeviceSleepGoal(hour, minute, completion); ``` ### 参数 * hour 睡眠小时 * minute 睡眠分钟 * completion 调用API的结果回调函数 ### 使用示例 ```js // 睡眠目标 8小时30分 setDeviceStepGoal(8, 30, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.3 闹钟 ### 3.3.1 查询闹钟 #### API ```js function queryDeviceAlarm(completion); ``` #### 参数 * 无 #### 使用示例 ```js queryDeviceAlarm(function (state, response) { if (state == succeed) { // 查询到闹钟 // 循环获取闹钟数据 /* // 闹钟结果 [ { alarmType: 闹钟类型 在当前文档最后中有定义 alarmTypeXXX的常量, hour: 闹钟的时 0 ~ 23, minute: 闹钟的分 0 ~ 59, repeat: 重复数组 每个元素是 reapeatXXX的值 在当前文档最后中有定义, snoozeTime: 贪睡时长 0 ~ 59, } ] */ } }); ``` ### 3.3.2 删除闹钟 #### API ```js function deleteDeviceAlarm(hour, minute, completion); ``` #### 参数 * hour: 闹钟的时 0 ~ 23 * minute: 闹钟的分 0 ~ 59 * completion: 执行的结果回调 #### 使用示例 ```js // 删除12点30分的闹钟 deleteDeviceAlarm(12, 30, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ### 3.3.3 增加闹钟 ```js function addDeviceAlarm(alarmType, hour, minute, repeat, snoozeTime, completion); ``` #### 参数 * alarmType: 闹钟类型 在当前文档最后中有定义 alarmTypeXXX的常量 * hour: 时 0 ~ 23 * minute: 分 0 ~ 59 * repeat: 重复 数组 传入 reapeatXXX的数组 在当前文档最后中有定义 * snoozeTime: 贪睡时长 0 ~ 59 * completion: 执行结果的回调 #### 使用示例 ```js // 添加一个7:30起床的闹钟 addDeviceAlarm( alarmTypeWakeUp, 7, 30, [ repeatMonday, repeatTuesday, repeatWednesday, repeatThursday, repeatFriday, repeatSaturday, repeatSunday, repeatEnable, ], 0, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ### 3.3.4 修改闹钟 #### API ```js function modifyDeviceAlarm(oldHour, oldMinute, hour, minute, alarmType, repeat, snoozeTime, completion); ``` #### 参数 * oldHour: 闹钟原来的时 0 ~ 23 * oldMinute: 闹钟原来的分 0 ~ 59 * hour: 闹钟新的时 0 ~ 23 * minute: 闹钟新的分 0 ~ 59 * alarmType: 闹钟类型 在当前文档最后中有定义 alarmTypeXXX的常量 * repeat: 重复 数组 传入 reapeatXXX的数组 在当前文档最后中有定义 * snoozeTime: 贪睡时长 0 ~ 59 * completion: 执行结果的回调 #### 使用示例 ```js // 将每天起床的闹钟改为睡觉的闹钟 modifyDeviceAlarm( 7, 30, 22, 0, alarmTypeSleep, [ repeatMonday, repeatTuesday, repeatWednesday, repeatThursday, repeatFriday, repeatSaturday, repeatSunday, repeatEnable, ], 0, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.4 设置时间 * 时间只支持公历,不支持农历,佛历等其它形式。 ### API ```js function setDeviceTime(year, month, day, hour, minute, second, completion); ``` ### 参数 * year: 年 * month: 月 * day: 日 * hour: 时 * minute: 分 * second: 分 * completion: 执行的结果回调 ### 使用示例 ```js setDeviceTime(2022, 5, 1, 12, 34, 56, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.5 设置用户信息 ### API ```js function setDeviceUserInfo(height, weight, gender, age, completion); ``` ### 参数 * height: 身高 100 ~ 255 cm * weight: 体重 kg 30 ~ 200 kg * 性别: 0 表示男,1表示女 * age: 6 ~ 120 * completion: 设置成功否的回调 ### 使用示例 ```js setDeviceUserInfo(180, 120, 0, 18, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.6 设置单位 ### API ```js function setDeviceUnit(distance, weight, temperature, timeFormat, completion); ``` ### 参数 * distance: 距离单位 0: km, 1: mile * weight: 体重单位 0: kg, 1: lb * 温度单位: 0: °C, 1: °F * 时间格式 0: 24小时制, 1: 12小时制 ### 使用示例 ```js setDeviceUnit(0, 0, 0, 0, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.7 设置久坐提醒 ### API ```js function setDeviceSedentary( startHour1, startMinute1, endHour1, endMinute1, startHour2, startMinute2, endHour2, endMinute2, interval, repeat, completion ); ``` ### 参数 * startHour1: 开始时间1 时 0 ~ 23 * startMinute1: 开始时间1 分 0 ~ 59 * endHour1: 结束时间1 时 0 ~ 23 * endMinute1: 结束时间1 分 0 ~ 59 * startHour2: 开始时间2 时 0 ~ 23 * startMinute2: 开始时间2 分 0 ~ 59 * endHour2: 结束时间2 时 0 ~ 23 * endMinute2: 结束时间2 分 0 ~ 59 * interval: 提醒间隔 15 ~ 45 分钟 * repeat: 重复时间的数组,每个元素都是以repeatXX的元素,在当前文档最后中有定义 * completion: 设置是否成功的回调 ### 使用示例 ```js // 8:30 ~ 12:30 14:00 ~ 18:30 每隔15分钟提醒一次,一周七天都提醒 setDeviceSedentary( 8, 30, 12, 30, 14, 0, 18, 30, 15, [ repeatMonday, repeatTuesday, repeatWednesday, repeatThursday, repeatFriday, repeatSaturday, repeatSunday, repeatEnable, ], function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.8 设置防丢 ### API ```js function setDeviceAntiLost(isEnable, completion); ``` ### 参数 * isEnable: 开启或关闭防丢 * completion: 设置是否成功的回调 ### 使用示例 ```js setDeviceAntiLost(true, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.9 设置左中手佩戴位置 ### API ```js function setDeviceWearingPosition(isRightHand, completion); ``` ### 参数 * isRightHand: 是否为右手 * completion: 设置是否成功的回调 ### 使用示例 ```js // 左手佩戴 setDeviceWearingPosition(false, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.10 设置心率报警 ### API ```js setDeviceHeartRateAlarm(isEnable, maxValue, minValue, completion); ``` ### 参数 * isEnable: 开启或关闭心率报警 * maxValue: 最高心率 100 – 240 * minValue: 最低心率 30-60 * completion: 设置是否成功的回调 ### 使用示例 ```js // 超过 120bpm 或 低于40 bpm 报警 setDeviceHeartRateAlarm(true, 120, 40, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.11 设置心率监测模式 ### API ```js function setDeviceHeartRateMonitoringMode(isEnable, interval, completion); ``` ### 参数 * isEnable: 开启或关闭自动监测 * interval: 间隔时间 1 ~ 60分钟,值越小,手表的功耗越大。 * completion: 设置是否成功的回调. ### 使用示例 ```js // 设置间隔30分钟监测一次 setDeviceHeartRateMonitoringMode(true, 30, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.12 设置找手机 ### API ```js function setDeviceFindPhone(isEnable, completion); ``` ### 参数 * isEnable: 开启或关闭 * completion: 设置是否成功的回调 ### 使用示例 ```js setDeviceFindPhone(true, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.13 恢复出厂设置 ### API ```js function setDeviceReset(completion); ``` ### 参数 * 无 ### 使用示例 ```js setDeviceReset(function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.14 设置勿扰时间 ### API ```js function setDeviceNotDisturb(isEnable, startHour, startMinute, endHour, endMinute, completion); ``` ### 参数 * isEnable: 开启或关闭勿扰 * startHour: 开始时间的 时 0 ~ 23 * startMinute: 开始时间的 分 0 ~ 59 * endHour: 结束时间的 时 0 ~ 23 * endMinute: 结束时间的 分 0 ~ 59 * completion: 设置是否成功的回调 ### 使用示例 ```js // 9:30 ~ 12:00 启动勿扰 setDeviceNotDisturb(true, 9, 30, 12, 0, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.15 设置设备语言 ### API ```js function setDeviceLanguage(language, completion); ``` ### 参数 * language: 语言代码, 如果设备不支持则会显示为英语。 ``` 0x00:英语 0x01: 中文 0x02: 俄语 0x03: 德语 0x04: 法语 0x05: 日语 0x06: 西班牙语 0x07: 意大利语 0x08: 葡萄牙文 0x09: 韩文 0x0A: 波兰文 0x0B: 马来文 0x0C: 繁体中文 0x0D: 泰语 0x0E: 印尼语 0x0F: 越南语 0x10: 匈牙利语 0x11: 缅甸语 0x12: 爱沙尼亚语 0x13: 拉丁语 0x14: 保加利亚语 0x15: 蒙古语 0x16: 塞尔维亚语 0x17: 波斯语 0x18: 孟加拉语 0x19: 突厥语 0x1A: 阿拉伯语 0x1B: 希腊语 0x1C: 马来西亚语 0x1D: 希伯来语 0x1E: 芬兰语 0x1F: 捷克语 0x20: 克罗地亚语 0x21: 马其顿语 0x22: 威尔士语 0x23: 乌尔都语 0x24: 伊朗语 0x25: 白俄罗斯语 0x26: 荷兰语 0x27: 乌克兰语 0x28: 土耳其语 0x29: 老挝语 0x2A: 阿尔巴尼亚语 0x2B: 丹麦语 0x2C: 瑞典语 0x2D: 挪威语 0x2E: 冰岛语 0x2F: 梵语 0x30: 吉普赛语 0x31: 印地语 0x32: 罗马尼亚文 0xFF:其它 ``` * completion: 设置语言是否成功的回调 ### 使用示例 ```js // 设置中文 setDeviceLanguage(0x01, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.16 设置抬腕亮屏 ### API ```js function setDeviceWristBrightScreen(isEnable, completion); ``` ### 参数 * isEnable: 开启或关闭 * completion: 设置是否成功的回调 ### 使用示例 ```js setDeviceWristBrightScreen(true, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.17 设置屏幕亮度 ### API ```js function setDeviceDisplayBrightness(level, completion); ``` ### 参数 * level: 亮度 0:低, 1: 中, 2: 高 * completion: 设置是否成功的回调 ### 使用示例 ```js setDeviceDisplayBrightness(1, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.18 设置肤色 ### API ```js function setDeviceSkinColor(level, completion); ``` ### 参数 * level: 肤色 0:白, 1: 白间黄, 2: 黄, 3: 棕色, 4: 褐色, 5: 黑色 * completion: 设置是否成功的回调 ### 使用示例 ```js // 设置黄色皮肤 setDeviceSkinColor(2, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.19 设置主题 ### API ```js function setDeviceTheme(index, completion); ``` ### 参数 * index: 主题序号,从0开始。 * completion: 设置是否成功的回调 ### 使用示例 ```js // 显示第2个主题。 setDeviceTheme(1, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.20 设置温度报警 ### API ```js function setDeviceTemperatureAlarm( isEnable, highTemperatureIntegerValue, highTemperatureDecimalValue, lowTemperatureIntegerValue, lowTemperatureDecimalValue, completion ); ``` ### 参数 * isEnable: 开启或关闭温度报警 * highTemperatureIntegerValue: 高温整数值 36 – 100 摄氏度 * highTemperatureDecimalValue: 高温小数值 0-9 摄氏度 * lowTemperatureIntegerValue: 低温整数值 -127 - 36 摄氏度 * lowTemperatureDecimalValue: 低温小数值 0-9 摄氏度 * completion: 设置是否成功的回调 ### 使用示例 ```js // 设置高温度 38.0 报警 setDeviceTemperatureAlarm(true, 38, 0, 0, 0, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` ## 3.21 设置温度监测模式 ### API ```js function setDeviceTemperatureMonitoringMode(isEnable, interval, completion); ``` ### 参数 * isEnable: 开启或关闭自动监测 * interval: 间隔时间 1 ~ 60分钟,值越小,手表的功耗越大。 * completion: 设置是否成功的回调. ### 使用示例 ```js setDeviceTemperatureMonitoringMode(true, 60, function (state, response) { if (state == succeed) { // 设置成功 } else { // 设置失败 } }); ``` # 4. 获取与删除健康数据 健康数据用于查询手表中的步数、心率、血压、血氧、体温等。 ## 4.1 查询健康数据 ### API ```js function queryDeviceHealthData(dataType, completion); ``` ### 参数 * dataType 查询健康数据类型,具体的参数定义在 当前文档最后中有声明,都以queryHelathData开头。 - queryHealthDataStep: 查询步数 - queryHealthDataSleep: 查询睡眠 - queryHealthDataHeartRate: 查询心率 - queryHealthDataBloodPressure: 查询血压 - queryHealthDataCombinedData: 查询组合数据(包含血氧、呼吸率、体温、血糖等). - queryHealthDataInvasiveMeasurement: 查询组合数据(包含血脂、尿酸等). - queryHealthDataECG:查询ECG * completion - 这是一个回调函数,包含状态码及具体的参数信息。具体的使用,请参照使用示例。 ### 注意 * 1. 在 queryHealthDataCombinedData 获取的值中也有心率、血压和步数这些数据,但不要使用。 * 2. 查询温度时,如果温度的小数值为`15`, 表示这个值是无效的,应弃之。 ### 使用示例 * 这里以步数为例,其它数据只是类型不同,及返回的对象不同。 ```js // state 是一个状态码 // response 是一个对象数组 queryDeviceHealthData(queryHealthDataStep, function (state, response) { if (state != succeed) { return } response.forEach(info => { console.log(info) console.log(info.startTime + ', ' + info.endTime + ',' + info.step + ',' + info.distance + ',' + info.calories) }); }) ``` ## 4.2 删除健康数据 查询到健康数据后。应该进行进存处理后,删除设备中的数据。 ### API ```js function deleteDeviceHealthData(dataType, completion); ``` ### 参数 * dataType 删除健康数据类型,具体的参数定义在 当前文档最后中有声明,都以deleteHealthData开头。 - deleteHealthDataStep: 删除步数 - deleteHealthDataSleep: 删除睡眠 - deleteHealthDataHeartRate: 删除心率 - deleteHealthDataBloodPressure: 删除血压 - deleteHealthDataCombinedData: 删除组合数据(包含血氧、呼吸率、体温等). - deleteHealthDataInvasiveMeasurement:删除血脂尿酸 * completion - 这是一个回调函数,包含状态码及具体的参数信息。具体的使用,请参照使用示例。 ### 使用示例 ```js // 删除步数 deleteDeviceHealthData(deleteHealthDataStep, function (state, response) { }); ``` ## 4.3 健康数据类型补充说明 - 使用4.1中的API返回的结果是一个对象数组,不同类型的对象结构不相同,下面将分别说明。 ### 4.3.1 步数 ```js { startTime: 开始时间戳, 单位:秒, endTime: 结束时间戳, 单位:秒, step: 步数,, 单位:步, distance: 距离, 单位:米, calories: 卡路里,单位:千卡, } ``` ### 4.3.2 睡眠 ```js { startTime: 开始时间戳, 单位:秒, endTime: 结束时间戳, 单位:秒, deepSleepCount: 深睡次数**(Deprecated)**, lightSleepCount: 浅睡次数**(Deprecated)**, deepSleepMinutes: 深睡时长, 单位: 秒**(Deprecated)**, remSleepMinutes: 快速眼动时间, 单位:秒**(Deprecated)**, lightSleepMinutes: 浅睡时长, 单位:秒**(Deprecated)**, remSleepDuration:快速眼动时间, 单位:秒 deepSleepDuration:深睡时长,单位:秒 lightSleepDuration:浅睡时长, 单位:秒 detail: [ { startTime: 开始时间戳, 单位:秒, sleepType: 睡眠类型 lightSleepFlag,deepSleepFlag,remSleepFlag,awakeSleepFlag, duration: 睡眠持续时间, 单位:秒, } ] } ``` ### 4.3.3 心率 ```js { startTime: 开始时间戳, 单位:秒, mode: 测量模式, 0: 单次模式, 1:监测模式, heartRate: 心率值, } ``` ### 4.3.4 血压 ```js { startTime: 开始时间戳, 单位:秒, mode: 测量模式, 0: 单次模式, 1:监测模式, 2: 充气血压, systolicBloodPressure: 收缩压, diastolicBloodPressure: 舒张压, } ``` ### 4.3.5 组合数据 ```js { startTime: 开始时间戳, 单位:秒, step: 步数, 单位: 步, (不要使用) heartRate: 心率, (不要使用) systolicBloodPressure: 收缩压, (不要使用) diastolicBloodPressure: 舒张压, (不要使用) bloodOxygen: 血氧, respirationRate: 呼吸率, hrv: hrv, cvrr: cvrr, temperatureInteger: 温度整数, 单位: 摄氏, temperatureDecimal: 温度小数, 单位: 摄氏, fatInteger: 体脂整数, fatDecimal: 体脂小数, bloodGlucose: 血糖值(浮点值), } ``` ### 4.3.6 有创综合数据 ```js { startTime: 开始时间戳, 单位:秒, bloodGlucoseModel: 血糖模式 0非精准 1精准 bloodGlucoseInteger: 血糖整数 血糖取值范围:1.1mmol/L~33.3mmol/L bloodGlucoseFloat: 血糖小数 uricAcidModel: 尿酸模式 0非精准 1精准 uricAcid: 尿酸值, bloodKetoneModel: 血酮模式 0非精准 1精准, bloodKetoneInteger: 血酮整数, bloodKetoneFloat: 血酮小数, bloodFatModel: 血脂模式 0非精准 1精准, cholesterolInteger: 总胆固醇整数部分, cholesterolFloat: 总胆固醇小数部分(0-99), highLipoproteinCholesterolInteger: 高密度脂蛋白胆固醇 整数, highLipoproteinCholesterolFloat: 高密度脂蛋白胆固 醇小数(0-99), lowLipoproteinCholesterolInteger: 低密度脂蛋白 胆固醇 整数 lowLipoproteinCholesterolFloat: 低密度脂蛋白胆固 醇 小 数(0-99) triglycerideCholesterolInteger: 甘油三酯整数 triglycerideCholesterolFloat: 甘油三酯小数部分(0~99) } ``` # 5. AppControl ## 5.1 找手环 ### API ```js function findDevice(remindCount, remindInterval, completion); ``` ### 参数 * remindCount 设备提醒次数 1 ~ 10, 建议使用 5 * remindInterval 提醒间隔 1 ~ 3 建议使用 1 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 > 调用后手环发生震动 ### 使用举例 ```js findDevice(5, 1, (state, res) => { }) ``` ## 5.2 血压校准 ### API ```js function deviceBloodPressureCalibration(systolicBloodPressure, diastolicBloodPressure, completion); ``` ### 参数 * systolicBloodPressure 收缩压 * diastolicBloodPressure 舒张压 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 > 手表测试的光电血压有很大的偏差时,可以使用个方法对手表进行校准。 ### 使用举例 ```js // 校准值 115/75 deviceBloodPressureCalibration(115, 75, (state, res) => { }) ``` ## 5.3 天气信息发送 ### API ```js // 发送今天天气 function sendDeviceWeatherData( lowestTemperature, highestTemperature, realTimeTemperature, weatherType, completion ); // 发送明天天气 function sendDeviceTomorrowWeatherData( lowestTemperature, highestTemperature, realTimeTemperature, weatherType, completion ); ``` ### 参数 * lowestTemperature 最低温度 摄氏 * highestTemperature 最高温度 摄氏 * realTimeTemperature 实时温度 摄氏 * weatherType 天气类型 具体的参数定义在 当前文档最后中有声明,都以weatherTypeXXX开头。 - weatherTypeUnknow 未知天气 - weatherTypeSunny 晴天 - weatherTypeCloudy 多云 - weatherTypeWind 大风 - weatherTypeRain 下雨 - weatherTypeSnow 下雪 - weatherTypeFoggy 大雾 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 今天 实时22度, 19~20度 晴天 sendDeviceWeatherData( 19, 20, 22, weatherTypeSunny, (state, res) => { }) // 明天 实时15度, 12~17度 雨天 sendDeviceTomorrowWeatherData( 12, 17, 15, weatherTypeRain, (state, res) => { }) ``` ## 5.5 启动或关闭实时数据上传 ### API ```js // 开启或关闭实数据上传 function realTimeDataUplod(isEnable, dataType, completion); ``` ### 参数 * isEnable 是否开启 * true 开启 * false 关闭 * dataType 数据类型 具体的参数定义在 当前文档最后中有声明,一般只用到 步数、心率、血压三个, 其余作为保留参数 - realStepDataUpload 步数 - realHeartRateDataUpload 心率 - realBloodOxygenUpload 血氧 - realBloodPressureUpload 血压 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 开启步数上传 realTimeDataUplod(true, realStepDataUpload, (state, res) => { }) // 关闭步数上传 realTimeDataUplod(false, realStepDataUpload, (state, res) => { }) ``` ## 5.6 接收实时数据 ### API ```js function receiveRealTimeData(completion); ``` ### 参数 * completion - 这是一个回调函数,包含态状码数据类型及具体数据。 * 接收数据类型 具体的参数定义在 当前文档最后中有声明,都以receivedRealTime开头,一般只用到 步数、心率、血压、光电、心电, 其余作为保留参数 - receivedRealTimeStep 步数 - receivedRealTimeHeartRate 心率 - receivedRealTimeBloodOxygen 血氧 - receivedRealTimeBloodPressure 血压 - receivedRealTimePPG 光电 - receivedRealTimeECG 心电 - receivedRealTimeMonitoringMode 监测数据(包含运动) ### 使用举例 ```js receiveRealTimeData(function(realTimeDataType, res){ // 步数 if (realTimeDataType == receivedRealTimeStep) { // 心率 } else if (realTimeDataType == receivedRealTimeHeartRate) { } }) ``` > 注意这个方法要在 5.5 节的方法开启前实现,否则会丢失数据。 ## 5.7 关机、复位重启 ### API ```js function deviceSystemOperator(mode, completion); ``` ### 参数 * mode 0x01: 关机, 0x02: 进入运输模式, 0x03: 系统复位重启 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 关机 deviceSystemOperator(1, (state, res) => { }) // 复位重启 deviceSystemOperator(3, (state, res) => { }) ``` ## 5.8 开启或停止运动 ### API ```js function controlSport(isEnable, sportType, completion); ``` ### 参数 * isEnable 开始或停止运动 * sportType: 运动类型 0x00: 预留 0x01: 跑步 0x02: 游泳 0x03: 骑行 0x04: 健身 0x05: 预留 0x06: 跳绳 0x07: 篮球 0x08: 健走 0x09: 羽毛球 0x0A: 足球 0x0B: 登山 0x0C: 乒乓球 0x0D:自由模式 0x0E:室内跑步 (或跑步机) 0x0F:户外跑步 0x10:户外步行 0x11:室内步行 0x12:走跑模式 0x13:室内骑行(或动感单车) 0x14:踏步机 0x15:划船机 0x16:实时监护模式 0x17:仰卧起 坐 0x18:跳跃运动 0x19:重量训练 0x1A: 瑜伽 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 开始运动 controlSport(true, 0x01, (state, res) => { }) // 结束运动 controlSport(false, 0x01, (state, res) => { }) ``` ## 5.9 运动数据接收 * 手环数据接收都是使用 5.6 节的方法来处理,不同的是如果是旧手环,则需要主动开启步数和心率上报(即调用两次5.5节的方法进行开启上传),而新版本的固件则不需要,直接接收手环的数据 ```js receiveRealTimeData(function(realTimeDataType, res){ if (realTimeDataType == receivedRealTimeStep) { // 运动中的 步数 距离 卡路里 (旧设备) } else if (realTimeDataType == receivedRealTimeHeartRate) { // 运动过程中的心率 (旧设备) } else if () { // 新设备: 时间 ,心率 ,步数,距离,卡路里 // startTimeStamp, heartRate, modeStep, modeDistance, modeCalories } }) ``` ## 5.10 血糖校准 > 手表测量的血糖有很大的偏差时,可以使用个方法对手表进行校准。 ### API ```js function deviceBloodGlucoseCalibratioin(bloodGlucoseIntegral, bloodGlucoseFractional, mode, completion); ``` ### 参数 * bloodGlucoseIntegral 血糖校准值整数部分 * bloodGlucoseFractional 血糖校准值小数部分 * mode 血糖校准模式 - bloodGlucoseCalibrationModeBeforeMeal 餐前 - bloodGlucoseCalibrationModeAfterMeal 餐后 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 校准值 4.9 餐前 deviceBloodGlucoseCalibratioin(4, 9, 0, (state, res) => { }) ``` ## 5.11 PPG波形上传 > 部分定制手表,需要获取PPG数据,此功能需要具体的手表固件功能支持。 ### API ```js function waveDataUploadControl(state, dataType, completion); ``` ### 参数 * state 上传状态 - waveUploadStateOff 关闭 - waveUploadStateUploadWithOutSerialnumber 开始上传且上传包不带序号 (开启时使用此参数即可) - waveUploadStateUploadSerialnumber 开始上传且上传包带8位序号 (此参数暂时不使用) * dataType 波形类型 - waveUploadDataTypePPG 光电波形 - waveUploadDataTypeECG 心电波形 - waveUploadDataTypeMultiAxisSensor 多轴传感器波形 (保留参数,暂时不支持) - waveUploadDataTypeAmbientLight 环境光波形 (保留参数,暂时不支持) * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 关闭PPG上传 waveDataUploadControl(waveUploadStateOff, waveUploadDataTypePPG, (state, res) => {} // 开启PPG上传 receiveRealTimeData(function(realTimeDataType, res){ if (realTimeDataType == receivedRealTimePPG) { } } waveDataUploadControl(waveUploadStateUploadWithOutSerialnumber, waveUploadDataTypePPG, (state, res) => {} ``` ## 5.12 尿酸校准 > 手表测量的尿酸有很大的偏差时,可以使用个方法对手表进行校准。 ### API ```js function deviceUricAcidCalibratioin(bloodGlucoseIntegral, bloodGlucoseFractional, mode, completion); ``` ### 参数 * range 范围 179-1190 单位:μmol/L * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 校准值 179 餐前 deviceUricAcidCalibratioin(179, (state, res) => { }) ``` ## 5.13 血脂校准 > 手表测量的血脂有很大的偏差时,可以使用个方法对手表进行校准。 ### API ```js function deviceBloodFatCalibratioin(bloodGlucoseIntegral, bloodGlucoseFractional, mode, completion); ``` ### 参数 * bloodGlucoseIntegral 血糖校准值整数部分 * bloodGlucoseFractional 血糖校准值小数部分 * mode 血糖校准模式 - bloodGlucoseCalibrationModeBeforeMeal 餐前 - bloodGlucoseCalibrationModeAfterMeal 餐后 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // 校准值 4.9 餐前 deviceBloodGlucoseCalibratioin(4, 9, 0, (state, res) => { }) ``` # 6. 发状健康信息 ### API ```js function sendHealthContent(healthInfoType, textArray, completion) ``` ### 参数 * healthInfoType: 信息类型,在constant中有定义. - YCDistributeHealthInfoTypeHealthAdvice 健康建议 - const YCDistributeHealthInfoTypeNutritiousMeals 营养膳食 - const YCDistributeHealthInfoTypeWorkOut 运动健身 - const YCDistributeHealthInfoTypeMentalSleep 心理睡眠 - const YCDistributeHealthInfoTypeTraditionalChineseMedicine 中医养生 - const YCDistributeHealthInfoTypeHealthFoodData 食材数据 * textArray 健康内容数组 - 每个标题对就一段文字内容,且标题不能超过七个中文字符。 - 以[[标题1, 内容1], [标题2, 内容2], ..., [标题n, 内容n]]的形式传递。 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js sendHealthContent( constant.YCDistributeHealthInfoTypeHealthAdvice, [ ["合理膳食A", "少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。"], ["健康饮食B", "人是铁,钣是钢,人活着总要吃饭的。 人是铁,钣是钢,人活着总要吃饭的 人是铁,钣是钢,人活着总要吃饭的 人是铁,钣是钢,人活着总要吃饭的"], ["合理膳食C", "少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 "], ["健康饮食D", "人是铁,钣是钢,人活着总要吃饭的。 人是铁,钣是钢,人活着总要吃饭的 人是铁,钣是钢,人活着总要吃饭的 人是铁,钣是钢,人活着总要吃饭的"], ["合理膳食E", "少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 少吃垃圾食品,合理膳食,一日三餐都要均衡饮食。 "], ], function (state, response){ }); ``` # 7.ECG ## 7.1 获取ECG数据总数 ### API ```js function queryCollectDataCount(dataType, completion); ``` ### 参数 * dataType 数据类型 queryHealthDataECG 获取ECG数据 * queryHealthDataECG ECG * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryCollectDataCount( queryHealthDataECG ,(state, res) => { // 获取ECG数据总数 // state 状态 // res 数据 }) ``` ## 7.2 根据索引获取ECG数据 ### API ```js function queryCollectIndexDataInfo(dataType,index,uploadEnable, completion); ``` ### 参数 * dataType 数据类型 queryHealthDataECG 获取ECG数据 * queryHealthDataECG ECG * index 索引 * 先使用 queryCollectDataCount 获取设备数据总数 (索引) * uploadEnable 是否上报 * true 上报 * false 不上报 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryCollectIndexDataInfo(queryHealthDataECG,index,false,(state,res)=>{ // 根据索引获取一条ECG数据,获取所有可以使用循环 // state 状态 // res 数据 }) ``` ## 7.3 根据索引删除ECG数据 ### API ```js function deleteCollectIndexData(dataType,index, completion); ``` ### 参数 * dataType 数据类型 queryHealthDataECG 获取ECG数据 * queryHealthDataECG ECG * index 索引 * 先使用 queryCollectDataCount 获取设备数据总数(索引) * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.deleteCollectIndexData(queryHealthDataECG, this.data.ecgCount-1 ,(state,res)=>{ // this.data.ecgCount-1 索引值 // 使用 queryCollectDataCount 获取ecgCount // state 状态 // res 数据 }) ``` ## 7.4 根据时间戳获取ECG数据(不建议) ### API ```js // (有些手环会出现莫名奇妙的问题、参数较麻烦,统一用索引比较好) function queryCollectStampDataTimeInfo(dataType,timeStamp,uploadEnable, completion); ``` ### 参数 * dataType 数据类型 queryHealthDataECG 获取ECG数据 * queryHealthDataECG ECG * timeStamp 时间戳 * 先使用 queryCollectIndexDataInfo获取设备数据,得到时间戳 * uploadEnable 是否上报 * true 上报 * false 不上报 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // (有些手环会出现莫名奇妙的问题、参数较麻烦,统一用索引比较好) appControlAPI.queryCollectStampDataTimeInfo(queryHealthDataECG,this.data.ecgList[index].timeStamp,false,(state,res)=>{ // this.data.ecgList // 先使用 queryCollectIndexDataInfo 获取this.data.ecgList // inde 为 this.data.ecgList 的长度-1 // false 不上报 // state 状态 // res 数据 }) ``` ## 7.5 根据时间戳删除ECG数据(不建议) ### API ```js // (有些手环会出现莫名奇妙的问题、参数较麻烦,统一用索引比较好) function deleteCollectTimeStampData(dataType,timeStamp, completion); ``` ### 参数 * dataType 数据类型 queryHealthDataECG 获取ECG数据 * queryHealthDataECG ECG * timeStamp 时间戳 * 先使用 queryCollectIndexDataInfo获取设备数据,得到时间戳 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js // (有些手环会出现莫名奇妙的问题、参数较麻烦,统一用索引比较好) appControlAPI.deleteCollectTimeStampData(queryHealthDataECG, this.data.ecgList[index].timeStamp ,(state,res)=>{ // this.data.ecgList // 先使用 queryCollectIndexDataInfo 获取this.data.ecgList // index 索引 // false 不上报 // state 状态 // res 数据 }) ``` # 8.外设模块 ## 8.1 获取设备ID ### API ``` js function queryDeviceId(dataType, cmd, completion) ``` ### 参数 * dataType 数据类型 queryDeviceIdKey 获取设备电量信息的key * queryDeviceIdKey Key * cmd 操作指令 peripheralParamCmd1 获取设备电量信息的 cmd * peripheralParamCmd1 cmd 指令1 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryDeviceId(queryDeviceIdKey, peripheralParamCmd1, (state, res) => { // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: res.info = { count: count, key: key, deviceModel: deviceModel, // 设备支持功能数 deviceId1: deviceId1, // 设备ID1 -->助眠 deviceId2: deviceId2, // 设备ID2 -->按摩 } }) ``` ## 8.2 获取设备电量信息 ### API ``` js function queryElectricityInformation(dataType, cmd, completion) ``` ### 参数 * dataType 数据类型 queryElectricityInformationKey 获取设备电量信息的key * queryElectricityInformationKey Key * cmd 操作指令 peripheralParamCmd1 获取设备电量信息的 cmd * peripheralParamCmd1 cmd 指令1 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryElectricityInformation(queryElectricityInformationKey, peripheralParamCmd1, (state, res) => { // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: res.info = { count: count, key: key, lowPowerShutdown: lowPowerShutdown, // 低电关机 lowPowerWarning: lowPowerWarning, // 低电警告 lowPowerReminder: lowPowerReminder, // 低电提醒 prohibitStart: prohibitStart, // 禁止启动 prohibitWork: prohibitWork, // 禁止工作 currentBatteryLevel: currentBatteryLevel // 当前电量 } }) ``` ## 8.3 获取设备状态信息 ### API ``` js function queryDeviceStatus(dataType, cmd, deviceId, completion) ``` ### 参数 * dataType 数据类型 queryDeviceStatusKey 获取设备电量信息的key * queryDeviceStatusKey Key * cmd 操作指令 peripheralParamCmd2获取设备电量信息的 cmd * peripheralParamCmd2 cmd 指令2 * deviceId 设备ID * deviceId1 设备ID1 --> 助眠 * deviceId2 设备ID2 --> 按摩 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryDeviceStatus(queryDeviceStatusKey, peripheralParamCmd2, deviceId1, (state, res) => { // deviceId1 --> 助眠 deviceId2 --> 按摩 // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: res.info = { count: count, key: key, deviceId: deviceId, // 设备ID status: status, // 设备状态(0:-->关闭 1-->启动 2-->暂停 3-->继续) mode: mode, // 当前模式(1~n) strength: strength, // 当前强度(1~n) runTime: runTime, // 已经运行时间 runTimeTotal: runTimeTotal // 总运行时间 } }) ``` ## 8.4 获取设备支持档位数 ### API ``` js function queryDeviceGearPosition(dataType, cmd, deviceId, completion) ``` ### 参数 * dataType 数据类型 queryDeviceGearPositionKey 获取设备电量信息的key * queryDeviceGearPositionKey Key * cmd 操作指令 peripheralParamCmd1 获取设备电量信息的 cmd * peripheralParamCmd1 cmd 指令1 * deviceId 设备ID * deviceId1 设备ID1 --> 助眠 * deviceId2 设备ID2 --> 按摩 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.queryDeviceGearPosition(queryDeviceGearPositionKey, peripheralParamCmd1, deviceId1, (state, res) => { // deviceId1 --> 助眠 deviceId2 --> 按摩 // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: res.info = { count: count, key: key, deviceId: deviceId, // 设备ID modeGear: modeGear, // 模式档位 IntensityLevel: IntensityLevel, // 强度档位 } }) ``` ## 8.5 设置设备运行模式 ### API ``` js function setDeviceOperatingMode(dataType, cmd, deviceId, mode, strength, time, completion) ``` ### 参数 * dataType 数据类型 setDeviceOperatingModeKey 获取设备电量信息的key * setDeviceOperatingModeKey Key * cmd 操作指令 peripheralParamCmd1 获取设备电量信息的 cmd * peripheralParamCmd1 cmd 指令1 * deviceId 设备ID * deviceId1 设备ID1 --> 助眠 * deviceId2 设备ID2 --> 按摩 * mode 设置设备的模式,需要先使用 queryDeviceGearPosition 查看支持的模式以及档位数 * 3 (1~n)取决于获取设备支持的模式数,这里是第三种模式 * strength * 12 (1~n)取决于获取设备支持的档位数,这里是12档 * time 运行时间,单位为秒,设置运行时间必须大于等于两分钟(120 s) * 200 设置运行时间 200 s * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.setDeviceOperatingMode(setDeviceOperatingModeKey, peripheralParamCmd1, deviceId1, 3, 12, 200, (state,res) => { // 注意:设置运行模式后需要调用启动(peripheraModeControl)api,才能正常切换 // 指令解析: 设置运行模式为:助眠第三种模式,强度设置为12档,运行时间为200s // deviceId1 --> 助眠 deviceId2 --> 按摩 // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: 成功:success 失败:异常信息 }) ``` ## 8.6 设备控制(启动、关闭、暂停、继续) ### API ``` js function deviceControl(dataType, cmd, deviceId, action, completion) ``` ### 参数 * dataType 数据类型 deviceControlKey 获取设备电量信息的key * deviceControlKey Key * cmd 操作指令 peripheralParamCmd1 获取设备电量信息的 cmd * peripheralParamCmd1 cmd 指令1 * deviceId 设备ID * deviceId1 设备ID1 --> 助眠 * deviceId2 设备ID2 --> 按摩 * action 设备的控制指令(启动、关闭、暂停、继续) * 0x00 关闭 * 0x01 启动 * 0x02 暂停 * 0x03 继续 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.deviceControl(deviceControlKey, peripheralParamCmd1, deviceId1, action, (state,res) => { // deviceId1 --> 助眠 deviceId2 --> 按摩 // action 设备指令: 0x00-->关闭 0x01-->开启 0x02-->暂停 0x03-->继续 // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: 成功:success 失败:异常信息 }) ``` ## 8.7 设备控制(关机、重启) ### API ``` js function peripheraModeControl(dataType, cmd, param, completion) ``` ### 参数 * dataType 数据类型 peripheraModeControlKey 获取设备电量信息的key * peripheraModeControlKey Key * cmd 操作指令 peripheralParamCmd2 获取设备电量信息的 cmd * peripheralParamCmd2 cmd 指令2 * param 设备控制指令(关机、重启) * 0x03 关机 * 0x04 重启 * completion - 这是一个回调函数,包含状态码及其它信息, 没有则为空。 ### 使用举例 ```js appControlAPI.peripheraModeControl(peripheraModeControlKey, peripheralParamCmd2, param, (state, res) => { // param 设备控制指令 0x03-->关机 0x04-->重启 // state 状态: 0 --> 成功 1 --> 失败 // res 返回信息: 成功:success 失败:异常信息 }) ``` # 常量定义 ```js // MARK: - 常量 /// 时间前缀 const secondForThirtyYear = 946684800 /// 当地GMT时间(秒) const secondFromGMT = (new Date()).getTimezoneOffset() * 60 /// 深睡标志 const deepSleepFlag = 0xF1 /// 浅睡标志 const lightSleepFlag = 0xF2 // MARK: - 错误分类 // 成功 const succeed = 0 // 失败 const failed = 1 // 超时 const timeout = 2 // 不可用 const unavailable = 3 // 数据错误 const dataError = 4 // crc错误 const crcError = 5 // 没有记录 const noRecord = 6 // 类型不支持 const typeNotSupport = 7 // 参数错误 const parameterError = 8 // 闹钟不存在 const alarmNotExist = 9 // 闹钟已存在 const alarmAlreadyExist = 10 // 闹钟数量达到限制 const alarmCountLimit = 11 // MARK: - 重复星期 const repeatMonday = 1 << 0 const repeatTuesday = 1 << 1 const repeatWednesday = 1 << 2 const repeatThursday = 1 << 3 const repeatFriday = 1 << 4 const repeatSaturday = 1 << 5 const repeatSunday = 1 << 6 const repeatEnable = 1 << 7 // MARK: - 设置分组 const YCSettingCommandID = 0x01 // MARK: - 查询分组 const YCQueryCommandID = 0x02 const setTime = 0x00 const setAlarmClock = 0x01 const setGoal = 0x02 const setUserInfo = 0x03 const setUnit = 0x04 const setSedentaryReminder = 0x05 const setAntiLost = 0x06 const setWearingPosition = 0x08 const setHeartRateAlarm = 0x0B const setHeartRateMonitoringMode = 0x0C const setFindPhone = 0x0D const setReset = 0x0E const setDoNotDisturb = 0x0F const setLanguage = 0x12 const setWristBrightScreen = 0x13 const setDisplayBrightness = 0x14 const setSkinColor = 0x15 const setTheme = 0x19 const setTemperatureAlarm = 0x1F const setTemperatureMonitoringMode = 0x20 // MARK: - 查询分组 const queryBasicInfo = 0x00 const querySupportFunction = 0x01 const queryMacAddress = 0x02 const queryModel = 0x03 const queryTheme = 0x09 const queryElectrodeLocation = 0x0A const queryMCU = 0x1b const queryRealTimeTemperature = 0x0e // MARK: - App控制分组 const YCAppControlCommandID = 0x03 const appControlFindDevice = 0x00 const appControlBloodPressureCalibration = 0x03 const appControlRealTimeDataUpload = 0x09 const appControlWaveUploadControl = 0x0B const appControlSportControl = 0x0C const appControlSystemOperator = 0x16 const appControlTodayWeather = 0x12 const appControlTomorrowWeather = 0x13 const appControlBloodGlucoseCalibration = 0x31 const appControlUricAcidCalibration = 0x37 const appControlBloodFatCalibration = 0x38 // MARK: - 同步设备健康数据的分组 const YCHealthDataCommandID = 0x05 const queryHealthDataStep = 0x02 const queryHealthDataSleep = 0x04 const queryHealthDataHeartRate = 0x06 const queryHealthDataBloodPressure = 0x08 const queryHealthDataCombinedData = 0x09 const queryHealthDataInvasiveMeasurement = 0x2f const queryHealthDataECG = 0x00 const replyHealthDataStep = 0x11 const replyHealthDataSleep = 0x13 const replyHealthDataHeartRate = 0x15 const replyHealthDataBloodPressure = 0x17 const replyHealthDataCombinedData = 0x18 const replyHealthDataInvasiveMeasurement = 0x30 const deleteHealthDataStep = 0x40 const deleteHealthDataSleep = 0x41 const deleteHealthDataHeartRate = 0x42 const deleteHealthDataBloodPressure = 0x43 const deleteHealthDataCombinedData = 0x44 const deleteHealthDataInvasiveMeasurement = 0x4C const healthDataBblockConfirm = 0x80 // MARK: - 设备控制分组 const YCDeviceControlCommandID = 0x04 // MARK: - 实时上传 const YCRealTimeDataCommandID = 0x06 const realStepDataUpload = 0x00 const realHeartRateDataUpload = 0x01 const realBloodOxygenUpload = 0x02 const realBloodPressureUpload = 0x03 // MARK: - 闹钟类型 const alarmTypeWakeUp = 0 const alarmTypeSleep = 1 const alarmTypeExercise = 2 const alarmTypeMedicine = 3 const alarmTypeAppointment = 4 const alarmTypeParty = 5 const alarmTypeMeeting = 6 const alarmTypeCustom = 7 // MARK: - 实时数据上传类型 // 步数 const realTimeDataTypeStep = 0 // 心率 const realTimeDataTypeHeartRate = 1 // 血氧 (保留) const realTimeDataTypeBloodOxygen = 2 // 血压 const realTimeDataTypeBloodPressure = 3 // hrv (保留) const realTimeDataTypeHrv = 4 // 呼吸率 (保留) const realTimeDataTypeRespirationRate = 5 // 运动模式数据 (保留) const realTimeDataTypeseSportMode = 6 // 运动组合数据 (保留) const realTimeDataTypeCombinedData = 7 // MARK: - 接收实时数据类型 const receivedRealTimeStep = 0x0 // 步数 const receivedRealTimeHeartRate = 0x01 // 心率 const receivedRealTimeBloodOxygen = 0x02 // 血氧 const receivedRealTimeBloodPressure = 0x03 // 血压 const receivedRealTimePPG = 0x04 // PPG const receivedRealTimeECG = 0x05 // ECG const receivedRealTimeMonitoringMode = 0x0D // 监测数据(包含运动数据) // MARK: - 天气类型 const weatherTypeUnknow = 0 const weatherTypeSunny = 1 const weatherTypeCloudy = 2 const weatherTypeWind = 3 const weatherTypeRain = 4 const weatherTypeSnow = 5 const weatherTypeFoggy = 6 // MARK: - 血糖校准模式 // 餐前 const bloodGlucoseCalibrationModeBeforeMeal = 0 // 餐后 const bloodGlucoseCalibrationModeAfterMeal = 1 // MARK: - 波形上传控制 const waveUploadStateOff = 0 // 关闭 const waveUploadStateUploadWithOutSerialnumber = 1 // 开始上传且上传包不带序号 const waveUploadStateUploadSerialnumber = 2 // 开始上传且上传包带8位序号 const waveUploadDataTypePPG = 0 // 光电波形 const waveUploadDataTypeECG = 1 // 心电波形 const waveUploadDataTypeMultiAxisSensor = 2 // 多轴传感器波形 const waveUploadDataTypeAmbientLight = 3 // 环境光 // MARK: 健康饮食指令 const YCAppDistributeHealthInfoCommandID = 0x0B const startSendHealthInfoSummary = 0x00 const sendHealthInfoDetailData = 0x01 const sendHealthInfoCheckInfo = 0x02 // 健康内容类型 const YCDistributeHealthInfoTypeHealthAdvice = 0x01 // 健康建议 const YCDistributeHealthInfoTypeNutritiousMeals = 0x02 // 营养膳食 const YCDistributeHealthInfoTypeWorkOut = 0x03 // 运动健身 const YCDistributeHealthInfoTypeMentalSleep = 0x04 // 心理睡眠 const YCDistributeHealthInfoTypeTraditionalChineseMedicine = 0x05 // 中医养生 const YCDistributeHealthInfoTypeHealthFoodData = 0x06 // 食材数据 // 外设指令 const peripheralID = 0x0F // 外设模块通用Command ID const count = 0x00 // 上传次数 const deviceId1 = 0x01 //设备ID1 const deviceId2 = 0x02 //设备ID2 const peripheralParamP = 0x50 // 字母P十六进制 const peripheralParamE = 0x45 // 字母E十六进制 const peripheralParamR = 0x52 // 字母R十六进制 const peripheralParamCmd1 = 0x01 // 操作指令 cmd 1 const peripheralParamCmd2 = 0x02 // 操作指令 cmd 2 const queryDeviceIdKey = 0x01 // 获取设备ID Key const queryElectricityInformationKey = 0x03 // 获取电量信息 Key const queryDeviceStatusKey = 0x51 // 获取设备状态 Keys const queryDeviceGearPositionKey = 0x51 // 获取设备支持档位数 Key const setDeviceOperatingModeKey = 0x50 // 设置运行模式 key const deviceControlKey = 0x04 // 设备控制 Key const peripheraModeControlKey = 0x04 // 关机、重启 Key ```