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

一款轻量级的通信协议---MQTT (内含Linux环境搭建)

目录

MQTT

MQTT的关键特点:

应用场景

Linux环境搭建:

1. 安装mosquitto

2. Linux下客户端进行通信

3. PC端和Linux下进行通信

安装MQTT. fx

4. MQTT.fx的使用

1. 点击连接

​编辑

2. 连接成功

3. 订阅主题或者给别的主题发送消息 

遇到的问题:

总结:


MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布/订阅(publish-subscribe)网络协议,它为低带宽和高延迟或不可靠的网络设计,非常适合物联网(IoT)设备之间的通信。MQTT协议基于TCP/IP协议栈,但在设计上特别注重低功耗和带宽优化,使其成为资源受限设备的理想选择。

MQTT的关键特点:

  1. 发布/订阅模型:MQTT使用主题(topic)的概念,允许设备订阅感兴趣的主题,并接收所有针对这些主题发布的消息。发送方(发布者)不需要知道谁是消息的接收者,接收方(订阅者)也不需要知道消息来自哪个发送方。

  2. 轻量级:MQTT协议的头部非常小,这使得它在网络条件不佳的环境下也能高效运行。此外,MQTT客户端可以最小化内存占用和网络流量。

  3. 断线重连:MQTT客户端可以在断线后自动尝试重新连接到服务器,确保即使在网络不稳定的情况下也能保持通信。

  4. 服务质量级别:MQTT提供了三个服务质量(QoS)级别,允许用户根据消息的重要性和网络条件选择合适的传输策略:

    • QoS 0:最多一次交付,消息可能丢失。
    • QoS 1:至少一次交付,确保消息至少被接收一次,但可能多次。
    • QoS 2:恰好一次交付,确保消息只被精确地接收一次。
  5. 保留消息:MQTT支持保留消息功能,即使在订阅者离线时,服务器也会保存最后一条消息,以便订阅者上线后立即收到。

  6. 小体积:MQTT协议的设计考虑到了资源受限的设备,其编码简单,减少了设备上的处理负载。

应用场景

1. 物联网(IoT)设备管理

MQTT广泛应用于家庭自动化、工业自动化、农业监控、智慧城市等领域。例如,智能灯泡、温湿度传感器、安防摄像头等设备可以通过MQTT协议与云平台或控制中心进行通信,实现远程监控和控制。

2. 实时数据流处理

MQTT可用于实时数据流的采集和传输,如实时股票市场数据、交通流量监控、健康监测设备的数据传输等,这些场景要求数据的实时性和准确性。

3. 移动应用与云同步

移动应用程序经常使用MQTT与后端服务器进行通信,尤其是在需要实时更新和通知的场景下,如聊天应用、实时位置共享、在线游戏等。

4. 车联网(V2X)通信

在车联网领域,车辆与车辆、车辆与基础设施之间的通信可以通过MQTT实现,用于实时交通状况更新、紧急情况广播、自动驾驶汽车的信息交换等。

Linux环境搭建:

1. 安装mosquitto

这里推荐大家去用apt下载,如果没有网络的话在去源码编译下载,源码编译会遇到许多坑,例如老版本的一些mosquitto源码包可能需要老版本的openssl。

apt install mosquitto

 安装客户端

sudo apt install mosquitto-clients

运行 mosquitto

mosquitto -v

此时就是运行成功的状态了。

2. Linux下客户端进行通信

  首先我们先订阅一个主题,别人往这个订阅的主题发消息我们就可以收到,现在订阅的是 bbxwg

mosquitto_sub -v -t bbxwg

  我们现在往这个被订阅的主题发消息。

mosquitto_pub -t bbxwg-m woshidashuaige 

3. PC端和Linux下进行通信

我们日常开发中大部分应该都会涉及到Linux和Windows之间的通信,MQTT也不例外。在PC端中有一个专门为MQTT制作的软件。

安装MQTT. fx


因为最新版本的软件需要Licence,所以这里为大家找到了一些免费的版本,链接如下。
百度网盘:
只有1.7的版本,无需许可证(推荐)
Windows版(64位) https://pan.baidu.com/s/13v0ROf1dOzu2tXqmw3iBMg 提取码:r9f7
Windows版(32位) https://pan.baidu.com/s/1kqbh3_43SYR7of0PZw9SGA 提取码:kf9t
苹果电脑mac os https://pan.baidu.com/s/1nfE6_sSbyq5USNphlpKqwA 提取码:pa6v

转载于:不会嵌入式的摆烂王

4. MQTT.fx的使用

1. 点击连接
2. 连接成功

3. 订阅主题或者给别的主题发送消息 

到这里基本上就完成了MQTT基本上的一些通信。当然这只是MQTT比较简单的一种用法,它还可以被当成一种库在我编程中去使用,在次我就不多赘述了。

遇到的问题:

当我apt install下载了软件后,发现软件在运行的时候自动占用1883这个端口,导致我在开启的时候会提示端口已被占用

这时候需要我们去改一下他的一些配置文件。

vi /etc/mosquitto/mosquitto.conf

 加上下面 这两个配置,应该是将本身的端口号改一下,网上解释说是配置成无用户密码校验和无TLS连接。

listener 1883
allow_anonymous true 

当然在编译中可能也会遇到很多的问题,首先应该是各种插件不存在,这个很好解决,我们可以去百度一下直接下载对应的插件就好,但是有的时候也会遇到openssl版本不对,需要老版本,这就就比较麻烦一些 。下面是我源码编译安装遇到的一些问题,希望可以帮助到大家。

总结:

MQTT这款轻量级的通信协议我认非常适合那些性能低下的设备而准备的,也就是我们嵌入式中的一些硬件,这两者的契合度是非常大的。以上是本人的一些浅显的了解,如有错误还请指正。

相关文章:

一款轻量级的通信协议---MQTT (内含Linux环境搭建)

目录 MQTT MQTT的关键特点: 应用场景 Linux环境搭建: 1. 安装mosquitto 2. Linux下客户端进行通信 3. PC端和Linux下进行通信 安装MQTT. fx 4. MQTT.fx的使用 1. 点击连接 ​编辑 2. 连接成功 3. 订阅主题或者给别的主题发送消息 遇到的问…...

记netty本地客户端断线无法自动重连 or 远程客户端自动重连本地服务端

记netty客户端断线无法自动完成重连 or 服务端无法让客户端断线重连 引场景案例bootstrap 引 netty既能开发socket服务端,也可开发客户端,实现连接的全双工通信。在客户端断线重启后,可自动重连服务端。 场景 本地代码既有socket客户端也有…...

UNIAPP_在js文件中使用i18n国际化

导入 import { initVueI18n } from dcloudio/uni-i18n import messages from /locale/index const { t } initVueI18n(messages) 使用 t(config.request.i001)....

第三节:如何理解Spring的两个特性IOC和AOP(自学Spring boot 3.x第一天)

大家好,我是网创有方,接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难,大家多理解。 IOC(控制反转) 定义与核心思想: IOC,全称Inversion of Control,即控制反转。 其核…...

【51单片机】串口通信(发送与接收)

文章目录 前言串口通信简介串口通信的原理串口通信的作用串口编程的一些概念仿真图如何使用串口初始化串口串口模式波特率配置 发送与接收发送接收 示例代码 总结 前言 在嵌入式系统的开发中,串口通信是一种常见且重要的通信方式。它以其简单、稳定的特性在各种应用…...

【AI研发工具包】sklearn教程(Scikit-learn)

目录 1. 引言 2. 安装sklearn 3. 导入sklearn 4. 加载数据集 5. 数据预处理 6. 训练模型 7. 评估模型 8. 保存和加载模型 9. 自定义数据 10. 深入sklearn 11. 注意事项 1. 引言 Scikit-learn(简称sklearn)是Python中一个非常流行的机器学习库…...

数位DP——AcWing 1081. 度的数量

数位DP 定义 数位DP是一种动态规划技巧,特别适用于处理与数字的位操作相关的问题,如数字序列的计数、数字的生成等问题。它通过将问题分解为对每一位数字的独立考虑,从而简化问题复杂度,实现高效求解。 数位DP的核心思想是将原…...

2024下半年必追国漫片单,谁将问鼎巅峰?

随着2024年上半年的落幕,国漫市场再度迎来了百花齐放的盛况。从经典续作到全新IP,从玄幻到科幻,每一部作品都以其独特的魅力吸引着观众的目光。本期为大家盘点下半年值得一看的国漫佳作,大胆预测,谁将成为这场神仙打架…...

信息发布小程序h5 uniapp thinkphp

纯手工uniapp thinkphp 全开源打造 信息发布小程序 一、概述 信息发布小程序是一种基于微信平台的小程序应用,旨在为用户提供便捷的信息发布与展示服务。用户可以通过该小程序快速发布各类信息,如招聘、寻物、公告等,同时也可以浏览和搜索…...

Windows定时任务执行脚本

场景:由于网络波动原因导致云数据库没连接上,从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了,网络恢复后 数据库链接正常,但是该引擎服务还是中止状态。 解决方案:在Windows中新建一个定时任务&#…...

优维“统一开放平台”:开放、开发、集成、客制化

基于丰富完善的产品体系,优维重磅推出了统一开放平台。这款由优维自主设计与研发,集数据开发、能力开放、能力集成、客制化为一体的统一开放平台,具备应用市场、应用开发、连接能力、采控平台、API集市、开发者工具等功能模块,可为…...

ChatGPT新纪元:揭秘GPT-4o的多模态能力

GPT-4o登场 探索ChatGPT的多模态创新 今日凌晨,OpenAI向全球宣布了AI发展的新篇章——GPT-4o,每次OpenAI发布重大更新时,尽管令人兴奋,但也不免使众多初创公司的梦想破灭。 GPT-4o的命名中的“o”象征着“omni”——全能的代表。…...

泰勒斯威夫特2022年纽约大学毕业典礼演讲:NYU‘s 2022 Commencement Speaker Taylor Swift

NYU’s 2022 Commencement Speaker Taylor Swift Link: https://www.youtube.com/watch?vOBG50aoUwlI Singer, songwriter, producer, and director Taylor Swift received a Doctor of Fine Arts, honoris causa, at the Commencement for the Class of 2022 and delivered …...

(四)SvelteKit教程:调用外部 API 获取数据

(四)SvelteKit教程:调用 API 我们先按照如下的方式来构建api服务: step 1:npm i json-serverstep 2:在根目录下新建 db.json 文件,内部写入如下内容:{"users": [{"id": 1,"name…...

数据结构-分析期末选择题考点(排序)

何似清歌倚桃李 一炉沈水醉红灯 契子 ✨ 上一期给大家提供了大概会考的题型给老铁们复习的大致思路 这一期还会是一样,我将整理一下排序的题型以及解题方法给你们 由于时间还很多,我就慢慢总结吧,一天一章的样子,明天总结串、后天…...

Python:探索高效、智能的指纹识别技术(简单易懂)

目录 概括 导入库 函数一 参数: 函数二 函数三 主函数 运行结果 src: model_base 7.bmp ​编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。…...

『SD』AI绘画,不会写提示词怎么办?

提示词 有没有想过,为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫,但猫与猫之间还是有差距的。 如果你的提示词只是“cat”,那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词&#xff…...

搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布

系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始(生产端)三、快速开始(消费端)四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中,消息队列作为核心组件…...

Python 学习路线及技巧

一、学习路线 1. 基础阶段 ● 学习 Python 的语法基础,如变量、数据类型、运算符、控制流等。 ● 掌握常用的 Python 标准库,如 os、sys、re、datetime 等。 ● 通过编写简单的程序来巩固基础,如计算器、字符串处理等。 2. 进阶阶段 ● 深入…...

计算机网络知识整理笔记

目录 1.对网络协议的分层? 2.TCP/IP和UDP之间的区别? 3.建立TCP连接的三次握手? 4.断开TCP连接的四次挥手? 5.TCP协议如何保证可靠性传输? 6.什么是TCP的拥塞控制? 7.什么是HTTP协议? 8…...

练习 String翻转 注册处理 字符串统计

p493 将字符串中指定部分进行翻转 package chapter;public class reverse {public static void main(String[] args) {String str "abcdef";str reverseMethod(str,0,3);System.out.println(str);}public static String reverseMethod(String str, int start, in…...

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a :显示所有用户的进程 -u :显示用户名和启动时间 -x :显示 没有控制终端的进程 -e :显示所有进程,包括没有控制终端的进程 -l :长格式显示 -w :宽…...

java:aocache 0.4.0 缓存控制机制

aoocache发布第一个版本0.1.0时,没有考虑到使用aocache的项目对方法缓存的控制需求。 场景 给同事做培训时,同事提到这个需求,他希望能够有方法主动去清理指定方法的缓存: 他的数据是由其他服务启动时提供的,他的方法…...

试析C#编程语言的特点及功能

行步骤,而不必创建新方法。其声明方法是在实例化委托基础上,加一对花括号以代表执行范围,再加一个分号终止语句。 2.3.3 工作原理 C#编译器在“匿名”委托时会自动把执行代码转换成惟一命名类里的惟一命名函数。再对存储代码块的委托进行设…...

Textual Learning2 -- 使用时的小问题

1、出现的问题: 在vscode里面直接运行函数会显示报错: 我尝试在vscode中含textual库的环境下运行,但仍然报错 2、解决方案: 在命令行中运行: 首先按winR,输入cmd打开命令行 或在已经安装的conda环境&a…...

CST--如何在PCB三维模型中自由创建离散端口

在使用CST电磁仿真软件进行PCB的三维建模时,经常会遇到不能自动创建离散端口的问题,原因有很多,比如:缺少元器件封装、开路端口、多端子模型等等,这个时候,很多人会选择手动进行端口创建,但是&a…...

C++中的虚函数表结构框架

一.虚函数表介绍 Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现,都有个指向虚函数的指针表(不管是父类还是子类) 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时,就去查找对象的虚表中指向整顿派生类函…...

【ES】--Elasticsearch的高亮模式

目录 一、高亮策略1、Fast Vector Highlighter(快速向量高亮器)2、Posting Highlighter(帖子高亮器)3、Unified Highlighter(统一高亮器)4、Plain Highlighter(普通高亮器)5、总结二、高亮参数三、高亮案例解析1、words_one配置解析2、words_two配置解析3、words_three…...

使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集

1,问题:本来是好的,突然编译运行报错,说是确少包, 解决方案:重启以后好了 2,有完美的马鞍波,为什么不能够转动呢? 原因是我这里模型的问题,我计算出来的是占…...

落石滑坡监测报警系统:创新保障高速公路安全

​ ​​在现代交通建设中,高速公路的安全性和稳定性至关重要。特别是易发生落石区域,如何有效预防和应对落石滑坡带来的事故成为了一项关键性挑战。为此,落石滑坡监测报警系统应运而生,它通过先进的技术手段,为高速…...

济宁做企业网站/哪些网站是营销型网站

2019独角兽企业重金招聘Python工程师标准>>> 继续运用MVC模式以及使用sqi语句进行实现对mysql数据库中数据进行增删查改。运用java c:forceach实现对数据库中多条数据的查询并显示在jsp页面,删除操作。继续温习sql语句 SELECT userid as userid,u…...

wordpress 4.8 en us/webview播放视频

jvm先装载类,再链接类,再初始化类(以代码的文本顺序执行类变量初始化器、类静态初始化方法或接口的属性(field)初始化器),完成类的初始化后,才执行类的main方法。在链接过程中&#…...

wordpress安装/关键词推广软件排名

Table of Contents 一、原子操作介绍 二、什么情况下选择使用原子操作? 三、原子操作编程步骤 1、定义并初始化原子变量 atomic_t 2、对原子变量进行原子操作(计数) 1)、原子变量自增/自减 2)、原子变量加/减 …...

电子商务网站开发人员/互联网公司

这应该算是一道很不错的搜索题了,考察很全面,细致,新手应该努力去尝试做做; Angel被传说中神秘的邪恶的Moligpy人抓住了!他被关在一个迷宫中。迷宫的长、宽不超过200。 迷宫中有不可以越过的墙以及监狱的看守。 Angel的…...

总部基地网站建设/关键词排名优化网站

当我们需要在C#中实现视频播放器的时候,可以使用如下几种方法: 一、使用MediaPlayer ActiveX控件 在C#中支持视屏播放器最简单的方式就是插入MediaPlayer控件了,在WPF中还内置了对MediaPlayer的封装MediaElement,可以通过它直接打…...

政府网站建设管理讲话/公司网站设计

让我们面对它,有时候,当您正在编写自定义的提取和验证规则时 Microsoft.VisualStudio.TestTools.WebTesting.HtmlDocument 类不会剪切它。HtmlDocument最初设计是作为一个内部类非常有效地为HTML响应正文之外的从属请求(比如图像)分析URLs。VS 2005 RTM …...