diff --git a/pages/control/index.vue b/pages/control/index.vue index 6968497..56fdb2c 100644 --- a/pages/control/index.vue +++ b/pages/control/index.vue @@ -281,7 +281,9 @@ $uni-success: #18bc37 !default; - + @@ -381,6 +383,7 @@ import mqtt from 'mqtt' export default { data() { return { + temp: "", mqttConfig: { host: '1.94.254.176', port: 9001, @@ -456,8 +459,9 @@ export default { this.status.jm3k = 0; } - - console.info(this.status) + }, + onShow() { + this.connectMqtt(); }, onUnload() { this.disconnectMqtt() @@ -503,6 +507,7 @@ export default { jm3g: 0 }; this.message={}; + this.temp=''; }, // 卡片点击事件(实际项目中调用接口修改状态) 功能标识 handleCardClick(status, type) { @@ -552,13 +557,13 @@ export default { this.message = JSON.stringify({[type]: status}) console.info("指令:"+this.message+";大棚:"+this.publishTopic) // 控制设备 - this.publishMessage(); - // 设备回执 - this.deviceType=type; + // this.publishMessage(); + // // 设备回执 + // this.deviceType=type; //todo - // this.status[type] = this.status[type] === 0 ? 1 : 0; - // this.show[type] = this.status[type] === 0 ? "运行" : "暂停"; + this.status[type] = this.status[type] === 0 ? 1 : 0; + this.show[type] = this.status[type] === 0 ? "运行" : "暂停"; } } @@ -653,18 +658,9 @@ export default { console.info("处理回执消息") // 👉 这是“指令回执” this.handleCommandAck(msgData,this.deviceType); + } else { + this.handleOtherContent(msgData) } - - if (this.value!==1) { - var arr=['jbk',"jbg","jm1k","jm1g","jm2k","jm2g","jm3k","jm3g"] - const allKeysNumeric = Object.keys(msgData).some(key => arr.includes(key)); - if (allKeysNumeric) { - console.info(msgData) - this.status={...msgData} - console.info("imei: "+this.publishTopic+"copy: ",this.status) - } - } - }, addMessage(content) { @@ -692,13 +688,46 @@ export default { }, // 处理其他内容的函数 - handleOtherContent(otherData) { + handleOtherContent(msgData) { // 业务逻辑:处理传感器数据、设备状态等 - console.log("收到其他内容:", otherData); + console.log("收到其他内容:", msgData); // 例如:更新温湿度显示、设备在线状态等 + + // 设备状态展示 + if (this.value!==1) { + var arr=['jbk',"jbg","jm1k","jm1g","jm2k","jm2g","jm3k","jm3g"] + const allKeysNumeric = Object.keys(msgData).some(key => arr.includes(key)); + if (allKeysNumeric) { + console.info(msgData) + this.status={...msgData} + console.info("imei: "+this.publishTopic+"copy: ",this.status) + } + + + // 实时温度展示 + const allKeysNumeric2 = Object.keys(msgData).every(key => /^\d+$/.test(key)); + if (Object.keys(msgData).length > 0 && allKeysNumeric2) { + var avgResult = this.calculateAvg(msgData).averageFixed; + this.temp = "当前棚内平均温度:"+avgResult+"℃" + } + } + + }, + calculateAvg(dataObj) { + const targetKeys = ['201', '202', '203', '204']; + const values = targetKeys.map(key => dataObj[key]).filter(val => typeof val === 'number' && !isNaN(val)); + if (values.length === 0) return { average: 0, averageFixed: '0.00' }; + const sum = values.reduce((total, num) => total + num, 0); + const avg = sum/10 / values.length; + return { + average: avg, + averageFixed: avg.toFixed(2) + }; } }, - + onHide() { + this.disconnectMqtt(); + }, beforeDestroy() { if (this.client) { this.client.end() diff --git a/pages/demo/index.vue b/pages/demo/index.vue index 1356238..bc2a825 100644 --- a/pages/demo/index.vue +++ b/pages/demo/index.vue @@ -135,7 +135,6 @@ export default { onUnload() { try { client && client.end(true) } catch(e) {} - // 页面上直接展示: // // 连接状态 connected @@ -143,7 +142,10 @@ export default { // temp1/humi1 … temp4/humi4 // // lastTopic 和 lastRaw(排查时非常有用) - } + }, + onHide() { + client && client.end(true) + }, }