|
@@ -1,8 +1,10 @@
|
|
|
// pages/light/light.js
|
|
|
import { connectStateMap, connectStateTypes } from '../../data/devType.js'
|
|
|
-import { MAX_COLOR_TEMPERATURE, MIN_COLOR_TEMPERATURE, COLOR_TEMPERATURE_STEP } from '../../data/lampType.js'
|
|
|
+import { MAX_COLOR_TEMPERATURE, MIN_COLOR_TEMPERATURE, COLOR_TEMPERATURE_STEP, bleInfo } from '../../data/lampType.js'
|
|
|
import { handle } from '../../utils/mjs_handle.js'
|
|
|
import { calculateColor } from '../../utils/mjs_color.js'
|
|
|
+import light_cmd from '../../utils/light_cmd.js'
|
|
|
+import { _curry } from '../../utils/mjs_curry.js'
|
|
|
import BLE from '../../utils/mjs_wxble.js'
|
|
|
console.log(BLE);
|
|
|
const ble = new BLE();
|
|
@@ -18,6 +20,10 @@ const tmpDevs = [
|
|
|
deviceId: "23456"
|
|
|
}
|
|
|
]
|
|
|
+// 蓝牙模块连接对象信息参数
|
|
|
+const connectBleParams = [];
|
|
|
+// 蓝牙服务信息
|
|
|
+let bleServices = [];
|
|
|
Page({
|
|
|
|
|
|
/**
|
|
@@ -29,6 +35,7 @@ Page({
|
|
|
ble: {
|
|
|
state: connectStateTypes.scaning,
|
|
|
devName: "",
|
|
|
+ deviceId: "",
|
|
|
init: false,
|
|
|
// 控制uuid
|
|
|
controlUuid: "",
|
|
@@ -51,23 +58,79 @@ Page({
|
|
|
// 色彩
|
|
|
bgc: "#3b3b3b"
|
|
|
},
|
|
|
- bleDevs: tmpDevs
|
|
|
+ bleDevs: tmpDevs,
|
|
|
},
|
|
|
- brightnessChangeHandle(e){
|
|
|
+ // 获取蓝牙发送数据对象
|
|
|
+ getBleSendHandle(){
|
|
|
+ // 固定值
|
|
|
+ let controlUuid = bleInfo.controlUuid;
|
|
|
+ let characteristicFirstUuid = bleInfo.characteristicFirstUuid;
|
|
|
+
|
|
|
+ let deviceId = this.data.ble.deviceId;
|
|
|
+ let serverUuid = '';
|
|
|
+ let characteristicUuid = '';
|
|
|
+
|
|
|
+ let server = services.find(s=>s.uuid === controlUuid);
|
|
|
+ if(!server)
|
|
|
+ {
|
|
|
+ // return bleFail('获取服务失败', '该设备不支持该程序');
|
|
|
+ serverUuid = bleInfo.controlUuid;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ serverUuid = server.uuid;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取
|
|
|
+ let characteristic = server.characteristics.find(c=>
|
|
|
+ c.uuid.startsWith(characteristicFirstUuid)
|
|
|
+ );
|
|
|
+ if(!characteristic)
|
|
|
+ {
|
|
|
+ // return bleFail('获取服务失败', '该设备不支持该程序');
|
|
|
+ characteristicUuid = bleInfo.controlUuid;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ characteristicUuid = characteristic.uuid;
|
|
|
+ }
|
|
|
+
|
|
|
+ return _curry(ble.sendData, deviceId, serverUuid, characteristicUuid);
|
|
|
+ },
|
|
|
+ // 亮度调节
|
|
|
+ async brightnessChangeHandle(e){
|
|
|
console.log("亮度改变");
|
|
|
console.log(e);
|
|
|
this.setData({
|
|
|
lamp: {...this.data.lamp, brightness: e.detail.value}
|
|
|
})
|
|
|
this.reComputeBgColor();
|
|
|
- },
|
|
|
- colorChangeHandle(e){
|
|
|
+ let fn = light_cmd.set_light(
|
|
|
+ this.getBleSendHandle(),
|
|
|
+ this.data.lamp.brightness
|
|
|
+ );
|
|
|
+ let [_err,_res] = await handle(fn);
|
|
|
+ if(_err){
|
|
|
+ return this.bleFail('发送失败', _err.errMsg);
|
|
|
+ }
|
|
|
+ console.log(`亮度调节命令发送成功,亮度:${this.data.lamp.brightness}`);
|
|
|
+ },
|
|
|
+ async colorChangeHandle(e){
|
|
|
console.log("色温改变");
|
|
|
console.log(e);
|
|
|
this.setData({
|
|
|
lamp: {...this.data.lamp, colorTemperature: e.detail.value}
|
|
|
})
|
|
|
this.reComputeBgColor();
|
|
|
+
|
|
|
+ let fn = light_cmd.set_temp(
|
|
|
+ this.getBleSendHandle(),
|
|
|
+ this.data.lamp.colorTemperature
|
|
|
+ );
|
|
|
+ let [_err,_res] = await handle(fn);
|
|
|
+ if(_err){
|
|
|
+ return this.bleFail('发送失败', _err.errMsg);
|
|
|
+ }
|
|
|
+ console.log(`亮度调节命令发送成功,亮度:${this.data.lamp.colorTemperature}`);
|
|
|
},
|
|
|
// 计算背景色
|
|
|
reComputeBgColor(){
|
|
@@ -86,14 +149,27 @@ Page({
|
|
|
lamp: {...this.data.lamp, bgc: newBgC}
|
|
|
})
|
|
|
},
|
|
|
- fullModeSwitchHandle(e){
|
|
|
+ async fullModeSwitchHandle(e){
|
|
|
// 全开模式切换
|
|
|
console.log("全开模式切换");
|
|
|
this.setData({
|
|
|
lamp: {...this.data.lamp, fullOpen: !this.data.lamp.fullOpen}
|
|
|
})
|
|
|
+
|
|
|
+ let fn;
|
|
|
+ let nextMode = light_cmd.light_worker_mode.DEFAULT;
|
|
|
+ if(this.data.lamp.fullOpen){
|
|
|
+ nextMode = light_cmd.light_worker_mode.FULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ fn = light_cmd.set_mode(this.getBleSendHandle(), nextMode);
|
|
|
+ let [_err,_res] = await handle(fn);
|
|
|
+ if(_err){
|
|
|
+ return this.bleFail('发送失败', _err.errMsg);
|
|
|
+ }
|
|
|
+ console.log(`工作模式切换成功:${this.data.lamp.fullOpen}`);
|
|
|
},
|
|
|
- switchHandle(e){
|
|
|
+ async switchHandle(e){
|
|
|
// 开关切换
|
|
|
this.setData({
|
|
|
lamp: {...this.data.lamp, switch: !this.data.lamp.switch}
|
|
@@ -102,16 +178,31 @@ Page({
|
|
|
lamp: {...this.data.lamp, fullOpen: false}
|
|
|
})
|
|
|
this.reComputeBgColor();
|
|
|
+
|
|
|
+ let fn;
|
|
|
+ if(this.data.lamp.switch){
|
|
|
+ fn = light_cmd.open_light(this.getBleSendHandle());
|
|
|
+ }else{
|
|
|
+ fn = light_cmd.close_light(this.getBleSendHandle());
|
|
|
+ }
|
|
|
+ let [_err,_res] = await handle(fn);
|
|
|
+ if(_err){
|
|
|
+ return this.bleFail('发送失败', _err.errMsg);
|
|
|
+ }
|
|
|
+ console.log(`开关命令发送成功,开关:${this.data.lamp.switch}`);
|
|
|
},
|
|
|
|
|
|
bleFail(title,msg){
|
|
|
this.setData({
|
|
|
ble: {...this.data.ble,
|
|
|
state: connectStateTypes.unConnect,
|
|
|
- init: false
|
|
|
+ init: false,
|
|
|
+ devName: "",
|
|
|
+ deviceId: "",
|
|
|
},
|
|
|
bleDevs: []
|
|
|
});
|
|
|
+ bleServices = [];
|
|
|
wx.showModal({
|
|
|
title: title,
|
|
|
content: msg,
|
|
@@ -190,10 +281,8 @@ Page({
|
|
|
// uuid FF01
|
|
|
let [err,res] = await handle(ble.getServices());
|
|
|
if(err){ return this.bleFail('获取服务失败', err.errMsg);}
|
|
|
- res.forEach(val=>{
|
|
|
- // 不同的服务有不同的功能
|
|
|
- console.log(val);
|
|
|
- })
|
|
|
+ // 保存服务信息;
|
|
|
+ bleServices = res;
|
|
|
},
|
|
|
|
|
|
|