From c8a9fd0a994868b70455ffddc7214f4bea9e937b Mon Sep 17 00:00:00 2001 From: Zhu <2698076424@qq.com> Date: Wed, 6 Nov 2024 12:00:55 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix(=E8=BF=90=E8=A1=8C=E7=8A=B6=E6=80=81):?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E6=9B=B4=E6=96=B0=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/src/views/iot/device/running-status.vue | 44 ++++++++++----------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/vue/src/views/iot/device/running-status.vue b/vue/src/views/iot/device/running-status.vue index e4be4b4f..64fd9597 100644 --- a/vue/src/views/iot/device/running-status.vue +++ b/vue/src/views/iot/device/running-status.vue @@ -447,24 +447,24 @@ export default { console.log('接收到【物模型】内容:', message); // 更新列表中设备的属性 if (this.deviceInfo.serialNumber == deviceNum) { - for (let j = 0; j < message.length; j++) { + for (let j = 0; j < message.message.length; j++) { let isComplete = false; // 设备状态 for (let k = 0; k < this.deviceInfo.thingsModels.length && !isComplete; k++) { - if (this.deviceInfo.thingsModels[k].id == message[j].id) { + if (this.deviceInfo.thingsModels[k].id == message.message[j].id) { // 普通类型(小数/整数/字符串/布尔/枚举) if (this.deviceInfo.thingsModels[k].datatype.type == 'decimal' || this.deviceInfo.thingsModels[k].datatype.type == 'integer') { - this.deviceInfo.thingsModels[k].shadow = Number(message[j].value); + this.deviceInfo.thingsModels[k].shadow = Number(message.message[j].value); } else { - this.deviceInfo.thingsModels[k].shadow = message[j].value; + this.deviceInfo.thingsModels[k].shadow = message.message[j].value; } isComplete = true; break; } else if (this.deviceInfo.thingsModels[k].datatype.type == 'object') { // 对象类型 for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.params.length; n++) { - if (this.deviceInfo.thingsModels[k].datatype.params[n].id == message[j].id) { - this.deviceInfo.thingsModels[k].datatype.params[n].shadow = message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.params[n].id == message.message[j].id) { + this.deviceInfo.thingsModels[k].datatype.params[n].shadow = message.message[j].value; isComplete = true; break; } @@ -473,11 +473,11 @@ export default { // 数组类型 if (this.deviceInfo.thingsModels[k].datatype.arrayType == 'object') { // 1.对象类型数组,id为数组中一个元素,例如:array_01_gateway_temperature - if (String(message[j].id).indexOf('array_') == 0) { + if (String(message.message[j].id).indexOf('array_') == 0) { for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.arrayParams.length; n++) { for (let m = 0; m < this.deviceInfo.thingsModels[k].datatype.arrayParams[n].length; m++) { - if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == message.message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message.message[j].value; isComplete = true; break; } @@ -492,8 +492,8 @@ export default { for (let m = 0; m < this.deviceInfo.thingsModels[k].datatype.arrayParams[n].length; m++) { let index = n > 9 ? String(n) : '0' + k; let prefix = 'array_' + index + '_'; - if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == prefix + message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == prefix + message.message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message.message[j].value; isComplete = true; } } @@ -505,8 +505,8 @@ export default { } else { // 整数、小数和字符串类型数组 for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.arrayModel.length; n++) { - if (this.deviceInfo.thingsModels[k].datatype.arrayModel[n].id == message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayModel[n].shadow = message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayModel[n].id == message.message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayModel[n].shadow = message.message[j].value; isComplete = true; break; } @@ -518,15 +518,15 @@ export default { for (let k = 0; k < this.deviceInfo.chartList.length; k++) { if (this.deviceInfo.chartList[k].id.indexOf('array_') == 0) { // 数组类型匹配,例如:array_00_gateway_temperature - if (this.deviceInfo.chartList[k].id == message[j].id) { - // let shadows = message[j].value.split(","); - this.deviceInfo.chartList[k].shadow = message[j].value; + if (this.deviceInfo.chartList[k].id == message.message[j].id) { + // let shadows = message.message[j].value.split(","); + this.deviceInfo.chartList[k].shadow = message.message[j].value; // 更新图表 for (let m = 0; m < this.monitorChart.length; m++) { - if (message[j].id == this.monitorChart[m].data.id) { + if (message.message[j].id == this.monitorChart[m].data.id) { let data = [ { - value: message[j].value, + value: message.message[j].value, name: this.monitorChart[m].data.name, }, ]; @@ -543,15 +543,15 @@ export default { } } else { // 普通类型匹配 - if (this.deviceInfo.chartList[k].id == message[j].id) { - this.deviceInfo.chartList[k].shadow = message[j].value; + if (this.deviceInfo.chartList[k].id == message.message[j].id) { + this.deviceInfo.chartList[k].shadow = message.message[j].value; // 更新图表 for (let m = 0; m < this.monitorChart.length; m++) { - if (message[j].id == this.monitorChart[m].data.id) { + if (message.message[j].id == this.monitorChart[m].data.id) { isComplete = true; let data = [ { - value: message[j].value, + value: message.message[j].value, name: this.monitorChart[m].data.name, }, ]; From 5715a15d46dd2a78c59860817c5e25628de1ed8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com> Date: Mon, 11 Nov 2024 07:29:51 +0000 Subject: [PATCH 2/5] update springboot/fastbee-admin/src/main/resources/application.yml. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 随遇而安 <164770707@qq.com> --- springboot/fastbee-admin/src/main/resources/application.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/springboot/fastbee-admin/src/main/resources/application.yml b/springboot/fastbee-admin/src/main/resources/application.yml index 95909cb1..b730500c 100644 --- a/springboot/fastbee-admin/src/main/resources/application.yml +++ b/springboot/fastbee-admin/src/main/resources/application.yml @@ -2,7 +2,7 @@ fastbee: name: fastbee # 名称 version: 3.8.5 # 版本 - copyrightYear: 2023 # 版权年份 + copyrightYear: 2024 # 版权年份 demoEnabled: true # 实例演示开关 # 文件路径,以uploadPath结尾 示例( Windows配置 D:/uploadPath,Linux配置 /uploadPath) profile: /uploadPath @@ -23,12 +23,12 @@ server: # 基于netty的服务器 broker: must-pass: false # 客户端连接是否需要密码 - enabled: true # mqttBroker类型选择, true: 基于netty的mqttBroker和webSocket false: emq的mqttBroker + enabled: true # 需要配置为true broker-node: node1 port: 1883 websocket-port: 8083 websocket-path: /mqtt - keep-alive: 70 # 默认的全部客户端心跳上传时间 + keep-alive: 30 # 默认的全部客户端心跳上传时间 # Spring配置 spring: From c12352ffeab60d1a8988df3a02594c35b76a93fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com> Date: Mon, 11 Nov 2024 07:30:48 +0000 Subject: [PATCH 3/5] update springboot/fastbee-admin/src/main/resources/application-dev.yml. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 随遇而安 <164770707@qq.com> --- springboot/fastbee-admin/src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/springboot/fastbee-admin/src/main/resources/application-dev.yml b/springboot/fastbee-admin/src/main/resources/application-dev.yml index 83e4ccd2..633be5c0 100644 --- a/springboot/fastbee-admin/src/main/resources/application-dev.yml +++ b/springboot/fastbee-admin/src/main/resources/application-dev.yml @@ -72,7 +72,7 @@ spring: # sip 配置 sip: - enabled: true # 是否启用视频监控SIP,true为启用 + enabled: false # 是否启用视频监控SIP,true为启用 ## 本地调试时,绑定网卡局域网IP,设备在同一局域网,设备接入IP填写绑定IP ## 部署服务端时,默认绑定容器IP,设备接入IP填写服务器公网IP #ip: 177.7.0.13 From 5abe95f6175a5c6c084ca4fd073edecf1111c0cf Mon Sep 17 00:00:00 2001 From: Ming <1823574190@qq.com> Date: Thu, 28 Nov 2024 05:12:59 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix=EF=BC=9A=E8=A7=A3=E5=86=B3=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E8=BF=90=E8=A1=8C=E7=8A=B6=E6=80=81=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98https://gitee.com/beecue/fa?= =?UTF-8?q?stbee/issues/IAW9KE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/src/views/iot/device/running-status.vue | 49 +++++++++++---------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/vue/src/views/iot/device/running-status.vue b/vue/src/views/iot/device/running-status.vue index 64fd9597..e75faa65 100644 --- a/vue/src/views/iot/device/running-status.vue +++ b/vue/src/views/iot/device/running-status.vue @@ -420,6 +420,9 @@ export default { /* Mqtt回调处理 */ mqttCallback() { this.$mqttTool.client.on('message', (topic, message, buffer) => { + if (message instanceof Uint8Array) { + message = new TextDecoder().decode(message); + } let topics = topic.split('/'); let productId = topics[1]; let deviceNum = topics[2]; @@ -442,29 +445,29 @@ export default { if (topics[4] == 'reply') { this.$modal.notifySuccess(message); } - if (topic.endsWith('ws/service')) { + if (topic.endsWith('ws/service') || topics[3] == 'monitor') { console.log('接收到【物模型】主题1:', topic); console.log('接收到【物模型】内容:', message); // 更新列表中设备的属性 if (this.deviceInfo.serialNumber == deviceNum) { - for (let j = 0; j < message.message.length; j++) { + for (let j = 0; j < message.length; j++) { let isComplete = false; // 设备状态 for (let k = 0; k < this.deviceInfo.thingsModels.length && !isComplete; k++) { - if (this.deviceInfo.thingsModels[k].id == message.message[j].id) { + if (this.deviceInfo.thingsModels[k].id == message[j].id) { // 普通类型(小数/整数/字符串/布尔/枚举) if (this.deviceInfo.thingsModels[k].datatype.type == 'decimal' || this.deviceInfo.thingsModels[k].datatype.type == 'integer') { - this.deviceInfo.thingsModels[k].shadow = Number(message.message[j].value); + this.deviceInfo.thingsModels[k].shadow = Number(message[j].value); } else { - this.deviceInfo.thingsModels[k].shadow = message.message[j].value; + this.deviceInfo.thingsModels[k].shadow = message[j].value; } isComplete = true; break; } else if (this.deviceInfo.thingsModels[k].datatype.type == 'object') { // 对象类型 for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.params.length; n++) { - if (this.deviceInfo.thingsModels[k].datatype.params[n].id == message.message[j].id) { - this.deviceInfo.thingsModels[k].datatype.params[n].shadow = message.message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.params[n].id == message[j].id) { + this.deviceInfo.thingsModels[k].datatype.params[n].shadow = message[j].value; isComplete = true; break; } @@ -473,11 +476,11 @@ export default { // 数组类型 if (this.deviceInfo.thingsModels[k].datatype.arrayType == 'object') { // 1.对象类型数组,id为数组中一个元素,例如:array_01_gateway_temperature - if (String(message.message[j].id).indexOf('array_') == 0) { + if (String(message[j].id).indexOf('array_') == 0) { for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.arrayParams.length; n++) { for (let m = 0; m < this.deviceInfo.thingsModels[k].datatype.arrayParams[n].length; m++) { - if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == message.message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message.message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message[j].value; isComplete = true; break; } @@ -492,8 +495,8 @@ export default { for (let m = 0; m < this.deviceInfo.thingsModels[k].datatype.arrayParams[n].length; m++) { let index = n > 9 ? String(n) : '0' + k; let prefix = 'array_' + index + '_'; - if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == prefix + message.message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message.message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].id == prefix + message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayParams[n][m].shadow = message[j].value; isComplete = true; } } @@ -505,8 +508,8 @@ export default { } else { // 整数、小数和字符串类型数组 for (let n = 0; n < this.deviceInfo.thingsModels[k].datatype.arrayModel.length; n++) { - if (this.deviceInfo.thingsModels[k].datatype.arrayModel[n].id == message.message[j].id) { - this.deviceInfo.thingsModels[k].datatype.arrayModel[n].shadow = message.message[j].value; + if (this.deviceInfo.thingsModels[k].datatype.arrayModel[n].id == message[j].id) { + this.deviceInfo.thingsModels[k].datatype.arrayModel[n].shadow = message[j].value; isComplete = true; break; } @@ -518,15 +521,15 @@ export default { for (let k = 0; k < this.deviceInfo.chartList.length; k++) { if (this.deviceInfo.chartList[k].id.indexOf('array_') == 0) { // 数组类型匹配,例如:array_00_gateway_temperature - if (this.deviceInfo.chartList[k].id == message.message[j].id) { - // let shadows = message.message[j].value.split(","); - this.deviceInfo.chartList[k].shadow = message.message[j].value; + if (this.deviceInfo.chartList[k].id == message[j].id) { + // let shadows = message[j].value.split(","); + this.deviceInfo.chartList[k].shadow = message[j].value; // 更新图表 for (let m = 0; m < this.monitorChart.length; m++) { - if (message.message[j].id == this.monitorChart[m].data.id) { + if (message[j].id == this.monitorChart[m].data.id) { let data = [ { - value: message.message[j].value, + value: message[j].value, name: this.monitorChart[m].data.name, }, ]; @@ -543,15 +546,15 @@ export default { } } else { // 普通类型匹配 - if (this.deviceInfo.chartList[k].id == message.message[j].id) { - this.deviceInfo.chartList[k].shadow = message.message[j].value; + if (this.deviceInfo.chartList[k].id == message[j].id) { + this.deviceInfo.chartList[k].shadow = message[j].value; // 更新图表 for (let m = 0; m < this.monitorChart.length; m++) { - if (message.message[j].id == this.monitorChart[m].data.id) { + if (message[j].id == this.monitorChart[m].data.id) { isComplete = true; let data = [ { - value: message.message[j].value, + value: message[j].value, name: this.monitorChart[m].data.name, }, ]; From d8e07328c73a755682dd5bd03ba1791156e54024 Mon Sep 17 00:00:00 2001 From: Ming <1823574190@qq.com> Date: Thu, 28 Nov 2024 05:21:24 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix=EF=BC=9A=E8=A7=A3=E5=86=B3=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E8=BF=90=E8=A1=8C=E7=8A=B6=E6=80=81=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98https://gitee.com/beecue/fa?= =?UTF-8?q?stbee/issues/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/src/views/iot/device/running-status.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/vue/src/views/iot/device/running-status.vue b/vue/src/views/iot/device/running-status.vue index e75faa65..8b51916b 100644 --- a/vue/src/views/iot/device/running-status.vue +++ b/vue/src/views/iot/device/running-status.vue @@ -420,9 +420,6 @@ export default { /* Mqtt回调处理 */ mqttCallback() { this.$mqttTool.client.on('message', (topic, message, buffer) => { - if (message instanceof Uint8Array) { - message = new TextDecoder().decode(message); - } let topics = topic.split('/'); let productId = topics[1]; let deviceNum = topics[2];