From 4f8a72936bccf994a9d66bd8c96098c978afc81c Mon Sep 17 00:00:00 2001 From: lld <15027638633@163.com> Date: Thu, 25 Dec 2025 21:44:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/demo/index.vue | 59 +++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/pages/demo/index.vue b/pages/demo/index.vue index 9a2272f..1356238 100644 --- a/pages/demo/index.vue +++ b/pages/demo/index.vue @@ -5,25 +5,25 @@ - {{ temp1 }} + {{ data.temp1 }} 温度1 ℃ - {{ temp2 }} + {{ data.temp2 }} 温度2 - {{ temp3 }} + {{ data.temp3 }} 温度3 - {{ temp4 }} + {{ data.temp4 }} 温度4 @@ -31,25 +31,25 @@ - {{ humi1 }} + {{ data.humi1 }} 湿度1 - {{ humi2 }} + {{ data.humi2 }} 湿度2 - {{ humi3 }} + {{ data.humi3 }} 湿度3 - {{ humi4 }} + {{ data.humi4 }} 湿度4 %RH @@ -68,14 +68,16 @@ export default { data() { return { connected: false, - temp1: null, - humi1: null, - temp2: null, - humi2: null, - temp3: null, - humi3: null, - temp4: null, - humi4: null, + data: { + temp1: null, + humi1: null, + temp2: null, + humi2: null, + temp3: null, + humi3: null, + temp4: null, + humi4: null, + }, lastTopic: "设备" + '', lastRaw: '' } @@ -98,22 +100,33 @@ export default { }) client.on('message', (topic, payload) => { - this.lastTopic = "设备【" + topic+"】" const s = payload.toString() this.lastRaw = s // 只处理JSON(混二进制就直接丢) if (!(s.startsWith('{') && s.endsWith('}'))) return let obj - try { obj = JSON.parse(s) } catch(e) { return } + try { + obj = JSON.parse(s) + const allKeysNumeric = Object.keys(obj).every(key => /^\d+$/.test(key)); + if (Object.keys(obj).length <= 0 || !allKeysNumeric) { + return; + } + } catch(e) { return } // 你的键:温度101~104、湿度201~204(按你之前约定温度/10、湿度/10) const div10 = (v) => (v == null ? null : Math.round((Number(v)/10)*10)/10) - - this.temp1 = div10(obj["201"]); this.humi1 = div10(obj["101"]) - this.temp2 = div10(obj["202"]); this.humi2 = div10(obj["102"]) - this.temp3 = div10(obj["203"]); this.humi3 = div10(obj["103"]) - this.temp4 = div10(obj["204"]); this.humi4 = div10(obj["104"]) + this.lastTopic = "设备【" + topic+"】" + this.data = { + temp1: div10(obj["201"]), + humi1: div10(obj["101"]), + temp2: div10(obj["202"]), + humi2: div10(obj["102"]), + temp3: div10(obj["203"]), + humi3: div10(obj["103"]), + temp4: div10(obj["204"]), + humi4: div10(obj["104"]) + } }) client.on('close', () => { this.connected = false })