123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- // pages/deviceConnect3/deviceConnect3.ts
- const app = getApp();
- let xBlufi = require("../../utils/blufi/xBlufi.js");
- let percentIn = null;
- let _this = null;
- let errTi = null;
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- scopeBluetooth: app.globalData.scopeBluetooth,
- ssid: app.globalData.ssid,
- password: app.globalData.pwdData,
- nvabarData: {
- showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
- title: '连接配网', //导航栏 中间的标题
- },
- version: '2.0',
- name: '',
- connectedDeviceId: '',
- connected: true,
- deviceInfo: null,
- isInitOK: false,
- customData: '',
- percent: 0,
- ruterStatus: 0, // 0 连接中 // 1 成功 // 2失败
- },
- onShow: function(options) {
- },
- onLoad: function(options) {
- _this = this;
- _this.setData({
- name: options.name,
- connectedDeviceId: options.deviceId,
- })
- xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
- xBlufi.notifyInitBleEsp32({
- deviceId: options.deviceId,
- });
- percentIn = setInterval(()=> {
- if(_this.data.percent === 100) {
- clearInterval(percentIn);
- _this.setData({
- ruterStatus: 2
- });
- return;
- };
- _this.data.percent++;
- _this.setData({
- percent: _this.data.percent
- });
- }, 600);
- },
- onUnload: function() {
- // 关闭蓝牙连接
- let _this = this
- xBlufi.notifyConnectBle({
- isStart: false,
- deviceId: _this.data.connectedDeviceId,
- name: _this.data.name,
- });
- xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
- clearTimeout(errTi);
- clearInterval(percentIn);
- },
- funListenDeviceMsgEvent: function(options) {
- let _this = this;
- switch (options.type) {
-
- case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
- _this.setData({
- connected: options.result
- });
- if (!options.result) {
- wx.showModal({
- title: '很抱歉提醒你!',
- content: '小程序与设备异常断开',
- showCancel: false, //是否显示取消按钮
- success: function(res) {
- wx.navigateBack({
- delta: 1
- });
- },
- })
- }
- break;
- case xBlufi.XBLUFI_TYPE.TYPE_CONNECT_ROUTER_RESULT:
- wx.hideLoading();
- if (!options.result)
- errTi = setTimeout(()=> {
- _this.setData({
- ruterStatus: 2
- });
- clearTimeout(errTi);
- clearInterval(percentIn);
- }, 5000);
-
- else {
-
- // 配网成功
- if (options.data.progress == 100) {
- clearTimeout(errTi);
- clearInterval(percentIn);
- // 更新数据
- wx.getStorage({
- key: 'devicelist',
- success (res) {
- if(res.data) {
- let arr = JSON.parse(res.data);
- // 同一个设备
- const devicelist = arr.filter((v)=> v.deviceId === _this.data.name);
- if(devicelist.length > 0) {
- arr = arr.filter((v)=> v.deviceId !== _this.data.name);
- };
- arr.unshift({
- deviceId: _this.data.name,
- name: _this.data.name,
- state: "online"
- });
- wx.setStorage({
- key:"devicelist",
- data: JSON.stringify(arr),
- success() {
- _this.setData({
- percent: 100,
- ruterStatus: 1
- });
- }
- })
- }
- },
- fail() {
- wx.setStorage({
- key:"devicelist",
- data: JSON.stringify([{
- name: _this.data.name,
- deviceId: _this.data.name,
- state: "online"
- }]),
- success() {
- _this.setData({
- percent: 100,
- ruterStatus: 1
- });
- }
- })
- }
- })
- // 记住密码
- wx.setStorage({
- key:"wifiInfo",
- data: JSON.stringify({"password": app.globalData.pwdData, "ssid": app.globalData.ssid})
- });
- }
- }
- break;
- case xBlufi.XBLUFI_TYPE.TYPE_INIT_ESP32_RESULT:
- wx.hideLoading();
- // console.log("初始化结果:", JSON.stringify(options))
- if (options.result) {
- console.log('初始化成功');
- _this.OnClickStart();
- } else {
- console.log('初始化失败')
- _this.setData({
- connected: false
- })
- _this.setData({
- ruterStatus: 2
- });
- }
- break;
- }
- },
- OnClickStart: function() {
- if (!app.globalData.ssid) {
- wx.showToast({
- title: 'SSID不能为空',
- icon: 'none'
- })
- return
- }
- if (!app.globalData.pwdData) {
- wx.showToast({
- title: '密码不能为空',
- icon: 'none'
- })
- return;
- }
- xBlufi.notifySendRouterSsidAndPassword({
- ssid: app.globalData.ssid,
- password: app.globalData.pwdData
- });
- },
- bindPasswordInput: function(e) {
- this.setData({
- password: e.detail.value
- })
- },
- bindCustomDataInput: function(e) {
- this.setData({
- customData: e.detail.value
- })
- },
- egen(){
- wx.navigateBack({
- delta: 1
- })
- },
- goIndex(){
- // BLUFI_7cdfa1fd3cfc
- app.globalData.newDeviceId = this.data.name;
- wx.switchTab({
- url: `./../index/index`
- });
- }
- })
|