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

【物联网】基于树莓派的物联网开发【18】——树莓派安装Mosquitto服务

使用背景

为了让我们的树莓派支持MQTT协议,我们将使用一个名为Mosquitto的服务器软件

场景介绍

搭建MQTT协议服务

说明

Mosquitto 是一个消息代理,它实现了多个版本的 MQTT 协议。
MQTT协议的工作原理是让客户机充当发布者和订阅者。发布者将消息发送给充当中介的代理。
订阅者连接到MQTT代理并阅读特定主题下广播的消息。可以使用MQTT让多个传感器将它们的数据发送到您的Raspberry Pi的MQTT代理,然后客户端设备可以接收数据。

树莓派安装 Mosquitto步骤

1,首先 ,需要最新的系统,输入以下命令:

sudo apt update
sudo apt upgrade

在这里插入图片描述

2,运行Mosquitto和Mosquitto客户端的安装命令,这样方便在树莓派上 进行连接测试:

sudo apt install mosquitto mosquitto-clients

在这里插入图片描述

``
在安装过程中,包的管理器会自动配置 Mosquitto 服务器在开机时启动。安装完成,此时,您将在您的设备上启动并运行 Mosquitto MQTT 代理。

3,您可以使用以下命令验证它是否已安装并正在运行。


```sudo systemctl status mosquitto

在这里插入图片描述
此命令将返回“mosquitto”服务的状态。
如果服务已正常启动,您应该会看到文本active (running)。

测试MQTT

下一步是测试该服务是否正常工作,在我们的树莓派 Raspberry Pi 上充当 MQTT 代理。
为此,我们将使用本指南前面安装的 Mosquitto 客户端。
对于本节,您将需要打开两个终端会话到您的 Raspberry Pi(本地或通过 SSH)。
1.我们的首要任务是启动订阅者。
订阅者将监听我们在 Raspberry Pi 上运行的 MQTT 代理。
我们可以使用我们之前为订阅者安装的 Mosquitto 客户端来执行此操作。
在下面的示例中,我们连接到一个localhost连接并等待来自代理的关于“mqtt/pimylifeup”主题的消息。

mosquitto_sub -h localhost -t "mqtt/pimylifeup"

在这里插入图片描述

使用“-h”参数,您可以指定要连接的主机名。在我们的例子中,我们使用安装在 Raspberry Pi 上的本地 MQTT 代理。
接下来,我们使用“-t”参数告诉 Mosquitto 订阅者我们应该从 MQTT 代理收听什么主题。
对于我们的示例,我们正在收听一个名为“mqtt/pimylifeup”的主题。
2.现在我们已经加载了一个客户端并正在监听消息,
让我们尝试向它发布一个消息。
我们需要使用之前安装在 Raspberry Pi 上的 MQTT 发布者客户端向主题发布消息。
运行以下命令将消息“Hello World”发布到我们localhost服务器的“mqtt/pimylifeup”主题下。

mosquitto_pub -h localhost -t "mqtt/pimylifeup" -m "hello test"

其中两个参数与前面的命令相同,“-h”指定要连接的服务器,“-t”指定要发布到的主题。
在这里插入图片描述
我们在这里使用的另一个参数是“-m”参数。此参数允许您指定要发送到 Raspberry Pi MQTT 代理的消息。
3.回到您启动 Mosquitto 发布器的终端会话,
您现在应该会看到 您的消息出现。
因此,如果您按照我们的示例进行操作,您应该会在命令行中看到以下文本。

hello test

测试,mqtt服务器成功。

设置远程访问(无身份验证)
要启用远程访问以便我们可以与其他物联网设备进行通信,我们需要编辑/创建一个配置文件。
1)Mosquitto Broker 启用远程访问(无身份验证)
运行以下命令打开mosquitto.conf文件文件。

sudo nano /etc/mosquitto/mosquitto.conf

2 )使用箭头键移动到文件末尾并粘贴以下两行:

listener 1883
allow_anonymous true

保存,退出。
3)重启mosquitto
为了使配置生效,需要重启mosquitto

sudo systemctl restart mosquitto

或者,直接重启树莓派

sudo reboot

这样远程主机就可以通过ip地址远程访问mqtt服务器了。

http://www.dtcms.com/a/306260.html

相关文章:

  • 【WPS】邮件合并教程\Excel批量写入数据进Word模板
  • 【0基础PS】PS工具详解--画笔工具
  • C++ 双缓冲(Double Buffering)实现无锁读取与高效数据更新
  • InfluxDB 与 Java 框架集成:Spring Boot 实战(二)
  • 用 Python 轻松实现时间序列预测:Darts 协变量 Covariates
  • 构建工具和脚手架:从源码到dist
  • uvm tlm preface
  • 若依前后端分离版学习笔记(四)——目录文件及主配置文件介绍
  • TP-Link Archer C50路由器曝安全漏洞,硬编码DES密钥可解密敏感配置
  • 用 Go Typed Client 快速上手 Elasticsearch —— 从建索引到聚合的完整实战
  • 基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(一)
  • vscode配置rust环境
  • CVAE 回顾版
  • 工作笔记-----存储器类型相关知识
  • BCD (Binary-Coded Decimal) 指令介绍
  • 求职招聘小程序源码搭建招聘小程序开发定制人力资源系统
  • LAMP及其环境的部署搭建
  • FragmentManager 返回栈与 Activity 运行栈的关系(当按下Back键时屏幕会如何变化?)
  • kali Linux 2025.2安装教程(解决安装失败-图文教程超详细)
  • GitPython03-项目setup编译
  • Spring boot 打包成docker image 镜像
  • forge篇——配置
  • DevOps 实践指南:Git 版本控制从入门到精通
  • 以rebase 方式merge , git要怎么实现两个分支以rebase 合并
  • LLM gateway
  • Kong API Gateway深度解析:插件系统与微服务架构的技术基石
  • LabVIEW DSC报警Web服务客户端
  • labview控制软件开发
  • 量子图灵机 Quantum Turing Machine, QTM
  • Spring Boot音乐服务器项目-查询喜欢的音乐模块