【RPi系列】树莓派使用mosquito实现订阅发布

178 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、简介

  为了学习MQTT,在树莓派上使用mosquito进行测验。

二、mosquitto安装与使用

1、mosquito的安装

# 下载mosquito-1.5.5     GitHub:https://github.com/eclipse/mosquitto
wget -c https://github.com/eclipse/mosquitto/archive/v1.5.5.tar.gz
# 解压
tar zxvf v1.5.5.tar.gz
# 进入mosquitto-1.5.5
cd mosquitto-1.5.5
# 安装mosquito编译需要的包
sudo apt install g++ libssl-dev libc-ares-dev uuid-dev xsltproc docbook-xsl
# 编译
make
# 安装
sudo make install

2、mosquitto的结束与启动

# 查看mosquitto的进程
ps -aux | grep mosquitto
# 杀死进程 
kill -9 1285
# 启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d
# 或
mosquitto -v

mosquitto

3、订阅发布测试

订阅发布关系

  打开三个终端,一个终端打开mosquitto服务端 ,一个终端订阅主题,最后一个终端发布消息。

#打开mosquitto服务端  
mosquitto -v
#【-v】打印更多的调试信息                                    

#订阅主题 demo     
mosquitto_sub -v -t demo
#【-t】指定主题
#【-v】打印更多的调试信息

#发布消息             
mosquitto_pub -t demo  -m "hello world!"
#【-t】指定主题
#【-m】指定消息内容

在这里插入图片描述

三、遇到的问题

1、安装mosquitto-2.0.9

  未安装成功,编译时始终缺少CJSON.h头文件。 问题描述1 安装cJSON:

#没有cmake,所以需要先安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 下载cJSON源码
pi@raspberrypi:~ $ git clone https://github.com/DaveGamble/cJSON.git
# 进入 cJSON目录
pi@raspberrypi:~ $ cd cJSON/
# cJSON中创建build目录
pi@raspberrypi:~/cJSON $ mkdir build

# 进入build目录
pi@raspberrypi:~/cJSON $ cd build
# cmake编译
pi@raspberrypi:~/cJSON/build $ cmake ..
# make编译
pi@raspberrypi:~/cJSON/build $ make
# 编译成功进行安装
pi@raspberrypi:~/cJSON/build $ sudo make install
# 默认情况下,cJSON的头文件安装到/usr/local/include/cjson/目录下,因此编译程序的时候如果用到cJSON.h这个头文件会显示不存在
# 动态库文件安装到/usr/local/lib/目录下,相关cmake文件安装到/usr/local/lib/cmake/cJSON/目录下
# 所以我们需要将/usr/local/include/cjson/cJSON.h移动到/usr/local/include/目录下
pi@raspberrypi:~ $ sudo mv /usr/local/include/cjson/cJSON.h  /usr/local/include/

安装cmake:

# 安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 查看cmake的位置
which cmake
# 查看cmake的版本
cmake --version
# 卸载cmake
sudo apt-get autoremove cmake

cmake安装   但即使成功安装,最后仍旧报错!

2、安装mosquitto-1.4.5

结构体问题   未安装成功,编译时该结构体始终错误。

3、缺少 ares 库

ares库

# 下载源码: 
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
# 解压 : 
tar -zxf c-ares-1.10.0.tar.gz
# 进入目录
cd c-ares-1.10.0
# 配置
./configure
# 安装
sudo make install

4、使用过程中找不到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