水质分析仪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服务器
-
-
- 平台方与网关约定报文协议
-
根据与平台方的沟通,平台方最终选择了根据蓝蜂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值 |
-
-
- 配置驱动和变量
-
驱动管理用来配置网关与下位机的驱动管理,支持创建/编辑,删除驱动,设置通讯口配置信息等
如图。首次配置,需要进行添加驱动的操作,企业的水质分析仪支持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进行爬虫的示例程序,用于爬虫企鹅上的视频。请注意,这个示例需要使用https://www.duoip.cn/get_proxy这段代码获取爬虫IP。 <?php // 引入所需的库 require vendor/autoload.php;use Symfony\Component\Panther\P…...

【笔记】centos7 python2.7.5安装paramiko
更直接的方式,参考: 离线安装_离线安装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})承接上文,创建三个学生节点,标签为student1、student2、student3,分别拥有age属性和num属性 match(s:student) return s查看我们…...

Vue3.0的设计目标是什么?做了哪些优化
一、设计目标 不以解决实际业务痛点的更新都是耍流氓,下面我们来列举一下Vue3之前我们或许会面临的问题 随着功能的增长,复杂组件的代码变得越来越难以维护缺少一种比较「干净」的在多个组件之间提取和复用逻辑的机制类型推断不够友好bundle的时间太久…...
Linux介绍 (什么是Linux)
Linux介绍 (什么是Linux) 目录 🍎一.Linux历史🍎 1.UNIX发展的历史 2.Linux发展历史 🍏二.开源🍏 🍑三.官网🍑 🍊四.企业应用现状🍊 1.Linux在服务器…...
Android中使用Java操作List集合的方法合集,包括判读是否有重复元素等
1、判断是否有重复元素 List<String> mList new ArrayList<>();//将List转为Set,通过比较大小是否一样,判断是否有重复元素 Set<String> stringSet new HashSet<>(mList); boolean isHasRepeat false; if (mTipBeanList.siz…...

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

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

分类网络-类别不均衡问题之FocalLoss
有训练和测代码如下:(完整代码来自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(-…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...