当前位置: 首页 > news >正文

水质分析仪MQTT应用案例

水质分析仪MQTT应用案例

一、公司介绍

仪器股份有限公司,集研发,生产,销售于一体的水质分析仪器公司。产品主要包括PH/ORP分析仪,电导度分析仪,溶氧分析仪,离子浓度分析仪,浊度分析仪及重金属分析仪等。

公司的核心产品水质分析仪是一款集PH,水温,TOC,电导率,余氯,浊度,溶解氧,色度等多种参数测量的集成化裝置,广泛应用于于泳池,自来水,小区二次供水,地表水,市政管网等场所的自动化水质检测

二、企业所面临的问题

1. 企业生产的水质分析仪,目前仅支持现场查看监测的水质数据,无法实现远程监控,无法实现数据上云。

2. 由于需要与第三方厂商进行项目集成,厂商要求将水质分析数据进行数据上报,实现远端监测。

3. 项目预算卡的比较紧,急需一款价格低廉性能优秀的网关,通过Modbus协议对接水质分析仪,并将采集到的数据上报给云端平台,实现远程监测

4. 由于企业对云端平台技术并不了解,因此希望网关厂商能够提供专业的对接方案,咨询我方使用什么协议与云端平台进行对接,能够在短时间内实现低成本高效率的数据上报。

三、方案总体设计

了解客户的诉求后,为了解决上述问题,我们推荐使用蓝蜂LF210网关与明柏的水质分析仪进行设备对接, LF210系列网关价格低廉,性价比高,作为一款边缘计算网关,南向支持多种PLC和仪表,北向支持标准MQTT协议,能够完全满足客户的需求

对接云平台协议方面,我方建议使用MQTT协议作为与云平台与网关的通讯协议,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,优点可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

目前MQTT技术比较成熟,开源项目比较多,平台方能够快速搭建基于MQTT协议的服务器和云平台,能够在短时间内实现低成本高效率的数据对接。我方建议通过MQTT协议将水质分析仪的数据通上报给云端平台

四、详细方案说明

(系统架构图)

4.1 硬件部署

1. 水质分析仪控制柜中安装蓝蜂 网关,使用4G卡进行联网通信

2. 在通过蓝蜂网关RS485端口与水质分析仪进行连接,通过Modbus协议进行通讯

3. 网关上电并调试好后,网关通过MQTT协议将数据上报

4.2云端平台对接方案

1.根据沟通,我方建议平台方使用自行搭建MQTT云服务器,目前MQTT技术比较成熟,开源项目比较多,平台方能够快速搭建基于MQTT协议的云端服务器和平台。

2.我方与平台方约定好MQTT服务器的对接的服务器地址,账号,用户名密码,以及报文传输协议,经过测试,顺利通过MQTT协议进行数据上报

3.我方提供蓝蜂MQTT网关配置工具,通过蓝蜂MQTT配置工具,能够快速调试网关的相关MQTT参数,包括服务器用户名,地址,账号,上报数据主题,系统设置等,支持远程进行控制

4.2 方案实际应用落地

4.2.1 接入客户自建MQTT服务器

打开蓝蜂MQTT网关配置工具,点击MQTT链接配置选项,可进行MQTT服务器链接配置

通过设置MQTT链接参数,可填写客户端ID,服务器IP/域名,用户名,密码,端口号等参数,支持SSL/TLS加密,可实现数据传输单向和双向加密认证,最大限度保证数据传输的安全性

配置成功后,即可连接至客户搭建的MQTT服务器

      1. 平台方与网关约定报文协议

根据与平台方的沟通,平台方最终选择了根据蓝蜂LF210网关提供的默认的报文格式进行数据对接,使用JSON格式数据进行上报,蓝蜂提供的报文协议具备如下优点:

1.可上报设备设备标识,msgId, 时间, 采集数据value,以及自定义的系统变量,比如型号,版本,位置等,能最大限度的满足客户对于数据的需求

2.上报主题支持使用通配符${} 代替设备表示,能否方便平台方进行数据对接

2.报文为JSON格式,跨平台通用

约定的报文协议具体如下:

实时数据上报主题:

data/report/${sn}

上报主题示例:

data/report/200121011004

上报json示例:

{

"code": "200",

"data": {

"msgId": "976",

"sn": "200121011045",

"time": 1655185922470,

"value": {

"ci": "0",

"ph": "0",

"temp": "0",

"turbidity": "0",

"cod": "0",

}

}

}

上报json参数说明

参数名称

类型

说明

code

String

功能码:200-采集正常

data

object

采集数据

time

long

采集时间,标准时间戳,1970-1-1到现在的毫秒数

sn

string

默认系统变量-网关SN

msgId

string

默认系统变量-报文ID

value

object

采集值:变量key和变量值的键值对

Value数据说明

序号

参数名称

说明

1

ci

余氯值

2

ph

PH值

3

temp

温度值

4

turbidity

低浊值

5

cod

COD值

      1. 配置驱动和变量

驱动管理用来配置网关与下位机的驱动管理,支持创建/编辑,删除驱动,设置通讯口配置信息等

如图。首次配置,需要进行添加驱动的操作,企业的水质分析仪支持Modbus协议,选择Modbus通用协议即可

创建好驱动后,即可添加变量,变量管理可用来配置网关数据变量,支持新增、编辑、导入、导出、复制等功能,按照企业提供的地址表,可创建余氯,PH,温度,低浊,COD 

4.2.4 配置上报主题

点击数据传输配置惨淡,可配置MQTT网关上报数据的主题,通过约定好的主题名称,设置好上报的周期,点击保存按钮,即可按照约定好的报文协议进行数据上报。

针对于该客户的需求,LF210网关,仅需一个主题,即可将客户要求的:余氯,PH,温度,低浊,COD 等数值进行上报

配置好后,通过第三方MQTT工具可以看到,数据已上报至MQTT平台

4.3 网关数据安全稳定机制

4.3.1 支持异常状态上报

蓝蜂MQTT网关对于异常数据或网关异常状态均支持上报机制,开启状态上报后,通过设置的主题将网关会将运行中的错误信息或状态变化信息,比如(网关离线)上报给服务器。

能源平台可订阅对应主题,及时了解网关异常情况,达到实时预警报警的效果

4.3.2 数据传输安全

蓝蜂MQTT网关支持SSL/TLS加密,可实现数据传输单向和双向加密认证,最大限度保证数据传输的安全性,可以保证数据不被窃听,不会导致数据安全问题。

五、方案总结

5.2 本方案的优势和特点

1.MQTT协议具有较低的带宽占用和低功耗特点,数据传输高效,省流量,节约成本,蓝蜂LF210网关支持标准MQTT协议,可快速实现对接平台

2.MQTT技术比较成熟,开源项目比较多,平台方能够快速搭建基于MQTT协议的云端服务器和平台。

3.LF210系列网关支持多种协议PLC和仪表,包括Modbus, 三菱FX系列,西门子PPI协议,能够完全满足水质分析仪的接入需求

4.  LF210为边缘侧计算网关,相比传统的透传网关,能够实现自主采集,自主上报,数据格式自动转换,能够极大减少云端的开发工作,轻松实现与云端对接,进行数据上报

5.  LF210网关价格低廉,性价比极高,极大降低节约项目成本。

5.  性能稳定,功能强大:客户端软件操作简单容易上手,方便基层人员操作

六、客户现场图片

蓝蜂MQTT网关安装现场1

蓝蜂MQTT网关安装现场2

相关文章:

水质分析仪MQTT应用案例

水质分析仪MQTT应用案例 一、公司介绍 某仪器股份有限公司,集研发,生产,销售于一体的水质分析仪器公司。产品主要包括PH/ORP分析仪,电导度分析仪,溶氧分析仪,离子浓度分析仪,浊度分析仪及重金…...

网络代理技术的护航与网络安全

在数字化时代,网络代理技术日益重要,不仅可维护网络安全,还能促进数据获取。本文深入探讨Socks5代理、IP代理以及它们在网络安全、爬虫、HTTP协议中的应用,助您深刻了解这些技术。 1. Socks5代理:网络安全与多协议支持…...

大模型LLM相关面试题整理-PEFT

Prefix/Prompt-Tuning:在模型的输入或隐层添加 个额外可训练的前缀 tokens(这些前缀是连续的伪 tokens,不对应真实的 tokens),只训练这些前缀参数; Adapter-Tuning:将较小的神经网络层或模块插入…...

65_Pandas显示设置(小数位数、有效数字、最大行/列数等)

65_Pandas显示设置(小数位数、有效数字、最大行/列数等) 本文介绍了使用 print() 函数显示 pandas.DataFrame、pandas.Series 等时如何更改设置(小数点后位数、有效数字、最大行/列数等)。 有关如何检查、更改和重置设置值的详细…...

一个失败架构升级案例

架构师的核心能力-抽象能力 在做架构升级的时候, 升级开始: 升级过程: 结束: 虽然升级完了能很好的满足未来的需求,但是在升级的过程中一个需求可能要同时在新老链路里同时实现,风险和工作量加倍。 架构…...

VM虚拟机运行的Ubuntu连入同一局域网,并实现双机方法

环境: Windows 10 VMware Workstation Pro 16 Ubuntu 20.4 在虚拟机设置桥接模式 确保虚拟机处于关闭状态,在Vm中设置: 编辑->虚拟网络编辑器 如果你以前设置过,可以重置之。 重置之后,添加桥接模式: …...

MySQL启动错误总结

centos7中出现mysql启动失败排查方法:首先找到/var/log/mysqd.log 第一种启动失败: 查看包含最后几行包含error的行; [ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock.[ERROR] Unable to setup unix socket lock file.[ERROR] …...

Linux软件包名称含AMD,ARM,x64的详解

下载clickhouse-backup时看到不同软件包,有的是x86,有的是amd64,有的是arm64,这些有啥区别呢? clickhouse-backup-2.4.2-1.x86_64.rpm clickhouse-backup_2.4.2_amd64.deb clickhouse-backup_2.4.2_arm64.deb x86 和 …...

光伏生产机器视觉系统应用场景全解析

​ 光伏产品的核心追求即为光电转化率,降本增效是光伏企业发展的永久动力。而光电转化率的提升、生产的降本增效,则来自于光伏硅片、电池片、组件、辅料等多个环节生产技术的提升和创新。光伏产品作为高产能、高精度的制造业产品,各段产业链上…...

ChatGPT DALL-E 3的系统提示词大全

每当给出图像的描述时,使用dalle来创建图像,然后用纯文本总结用于生成图像的提示。如果用户没有要求创建特定数量的图像,默认创建四个标题,这些标题应尽可能多样化。发送给Dalle的所有标题都必须遵循以下策略:1.如果描…...

Linux性能优化--补充

14.1. 性能工具的位置 本书描述的性能工具来源于Internet上许多不同的位置。幸运的是,大多数主要发行版都把它们放在一起,包含在了其发行版的当前版本中。表A-1描述了全部工具,提供了指向其原始源位置的地址,并注明它们是否包含在…...

用PHP爬取视频代码示例详细教程

以下是一个使用Symfony Panther和PHP进行爬虫的示例程序&#xff0c;用于爬虫企鹅上的视频。请注意&#xff0c;这个示例需要使用https://www.duoip.cn/get_proxy这段代码获取爬虫IP。 <?php // 引入所需的库 require vendor/autoload.php;use Symfony\Component\Panther\P…...

【笔记】centos7 python2.7.5安装paramiko

更直接的方式&#xff0c;参考: 离线安装_离线安装paramiko 这个更简单。 准备 资源链接: https://download.csdn.net/download/qq_26834611/88445708https://download.csdn.net/download/qq_26834611/88445708 或者选择自己下载 1. 下载python-devel 在一台能联网的cent…...

Neo4j入门教程2(看不懂评论区随便骂)

1. ORDER BY create (s4:student{age:21,num:98}),(s5:student{age:22,num:86}),(s6:student{age:23,num:99})承接上文&#xff0c;创建三个学生节点&#xff0c;标签为student1、student2、student3&#xff0c;分别拥有age属性和num属性 match(s:student) return s查看我们…...

Vue3.0的设计目标是什么?做了哪些优化

一、设计目标 不以解决实际业务痛点的更新都是耍流氓&#xff0c;下面我们来列举一下Vue3之前我们或许会面临的问题 随着功能的增长&#xff0c;复杂组件的代码变得越来越难以维护缺少一种比较「干净」的在多个组件之间提取和复用逻辑的机制类型推断不够友好bundle的时间太久…...

Linux介绍 (什么是Linux)

Linux介绍 &#xff08;什么是Linux&#xff09; 目录 &#x1f34e;一.Linux历史&#x1f34e; 1.UNIX发展的历史 2.Linux发展历史 &#x1f34f;二.开源&#x1f34f; &#x1f351;三.官网&#x1f351; &#x1f34a;四.企业应用现状&#x1f34a; 1.Linux在服务器…...

Android中使用Java操作List集合的方法合集,包括判读是否有重复元素等

1、判断是否有重复元素 List<String> mList new ArrayList<>();//将List转为Set&#xff0c;通过比较大小是否一样&#xff0c;判断是否有重复元素 Set<String> stringSet new HashSet<>(mList); boolean isHasRepeat false; if (mTipBeanList.siz…...

Rabbitmq 的管理配置

1、Rabbitmq管理 1.1、多租户与权限 每一个RabbitMQ 服务器都能创建虚拟的消息服务器&#xff0c;我们称之为虚拟主机(virtual host) ,简称为vhost 。每一个vhost 本质上是一个独立的小型RabbitMQ 服务器&#xff0c;拥有自己独立的队列、交换器及绑定关系等&#xff0c;井且它…...

Linux性能优化--性能追踪2:延迟敏感的应用程序

11.0 概述 本章包含了一个例子&#xff1a;如何用Linux性能工具在延迟敏感的应用程序中寻找并修复性能问题。 阅读本章后&#xff0c;你将能够&#xff1a; 在延迟敏感的应用程序中用ltrace和oprofile弄清楚哪里产生了延迟。对“热点”函数的每个调用&#xff0c;用gdb生成栈…...

分类网络-类别不均衡问题之FocalLoss

有训练和测代码如下&#xff1a;(完整代码来自CNN从搭建到部署实战) train.py import torch import torchvision import time import argparse import importlib from loss import FocalLossdef parse_args():parser argparse.ArgumentParser(training)parser.add_argument(-…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...