【MQTT学习4】Mosquitto在树莓派安装

4 篇文章 3 订阅
本文详细介绍了如何在SecureCRT中连接树莓派,并一步步指导安装和配置mosquitto MQTT服务器,包括解决编译过程中遇到的问题,如openssl、g++、ares.h和uuid/uuid.h的缺失。此外,还演示了mosquitto的启动、关闭、发布和订阅操作,以及部分常用命令参数的使用。最后,展示了如何处理启动错误并确保服务正常运行。
摘要由CSDN通过智能技术生成

一、secureCRT工具中安装mosquitto

前提条件:secureCRT连接树莓派或者自己的服务器;
1、在http://mosquitto.org/files/source/下载mosquitto源码,我选择的是1.6.9版本;
复制其链接地址
在这里插入图片描述
2、树莓派下下载:
在这里插入图片描述
3、解压压缩包

tar -xzvf mosquitto-1.6.9.tar.gz

在这里插入图片描述
4、进入目录

cd mosquitto-1.6.9/

在这里插入图片描述
5、在mosquitto文件夹下我们可以找到config.mk,这里包含了所有mosquitto的安装选项及参数说明,我们可以使用cat config.mk命令查看;
在这里插入图片描述
6、编译;
在这里插入图片描述
在这里插入图片描述
7、可能出现问题及解决方法:

  • 编译找不到openssl/ssl.h
    安装openssl
    sudo apt-get install libssl-dev

  • 编译过程g++命令未找到:
    sudo apt-get install g++

  • 编译过程找不到ares.h
    sudo apt-get install libc-ares-dev

  • 编译过程找不到uuid/uuid.h
    sudo apt-get install uuid-dev

  • 使用过程中找不到libmosquitto.so.1
    error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
    解决方法——修改libmosquitto.so位置:
    创建链接
    sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
    更新动态链接库
    sudo ldconfig
    参考:https://blog.csdn.net/xukai871105/article/details/39252653

二、配置&运行

安装完成之后,所有配置文件会被放到mosquitto目录下,其中最主要的是mosquitto的配置文件,即mosquitto.conf。
1、启动mosquitto服务;

mosquitto -c mosquitto.conf -v

2、关闭或重启;

ps -aux|grep mosquitto

3、用mosquitto进行一个简单的发布/订阅:

  • 3.1订阅主题:
    mosquitto_sub -v -t “主题”
    -v:打印更多的调试信息;
    -t:指定主题

  • 3.2 发布内容:
    mosquitto_pub -t"主题" -m"内容"
    -m:指定消息内容

  • 3.3需要同时打开三个服务器窗口:
    3.3.1开启一个客户端,模拟broker

mosquitto -c mosquitto.conf -v

此时运行mosquitto可能会报错:
参考:https://blog.csdn.net/wanxuexiang/article/details/86731863

liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ mosquitto -c mosquitto.conf -v
1625733997: mosquitto version 1.6.9 starting
1625733997: Config loaded from mosquitto.conf.
1625733997: Opening ipv4 listen socket on port 1883.
1625733997: Error: Address already in use

说明已经有一个mosquitto服务器在运行:address already in use
执行以下命令:

liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ ps -aux|grep mosquitto
liruiyan 17357  0.0  0.2  22812  4404 pts/2    S+   16:20   0:00 mosquitto_sub -v -t topic1
mosquit+   2240  0.2  0.0  34692   120 ?        S    130   4:53 mosquitto -v
liruiyan@cloud-ubuntu18:~/mqtt/mosquitto-1.6.9$ kill -9 2240

就会使原来运行的服务器终止运行,再次启动运行:
在这里插入图片描述
3.3.2再开启一个客户端,模拟订阅

mosquitto_sub -v -t topic1

在这里插入图片描述
在模拟broker客户端中查看:
在这里插入图片描述
3.3.3在最后一个客户端模拟发布:
在这里插入图片描述
在模拟订阅客户端查看:
在这里插入图片描述
由上面的结果显示我们在订阅界面可以实时收到发布的消息;

三、mosquitto部分命令参数说明

  1. mosquitto_pub命令参数
    -d 打印debug信息
    -f 将指定文件的内容作为发送消息的内容
    -h 指定要连接的域名 默认为localhost
    -i 指定要给哪个cilentld的用户发送消息
    -l 指定给哪个clientld前缀的用户发送消息
    -m 消息内容
    -n 发送一个空(null)消息
    -p 连接端口号
    -q 指定QoS的值(0,1,2)
    -t 指定topic
    -u 指定broker访问用户
    -P指定broker 访问密码
    -V 指定MQTT协议版本
    –will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
    –will-qos Will的QoS值。该参数需要与–will-topic一起使用
    –will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
    –will-topic 用户发送Will消息的topic。

  2. mosquitto_sub 命令参数说明
    -c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
    -d 打印debug信息
    -h 指定要连接的域名 默认为localhost
    -i 指定clientld
    -l 指定clientld前缀
    -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
    -q 指定希望接收到QoS为什么的消息 默认QoS为0
    -R 不显示陈旧的消息
    -t 订阅topic
    -v 打印消息
    –will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
    –will-qos Will的QoS值。该参数需要与–will-topic一起使用
    –will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
    –will-topic 用户发送Will消息的topic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mierya0707

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值