Linux环境下搭建MQTT服务的完整指南

目录

前言

一、MQTT协议

二、搭建MQTT服务

2.1 下载依赖库

2.2 下载mosquitto源码

2.3 编译与安装

2.4 配置

2.4.1 使能mosquitto用户

2.4.2 新增mosquitto帐号

2.4.3 创建动态链接装载程序

2.5 启动mosquitto

 三、订阅与发布

3.1 订阅主题

3.2 发布消息

 总结


前言

        MQTT是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议。它最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

本次测试软硬件环境环境如下:

服务器:树莓派3B linux-4.9

客户端:Ubuntu 18.04.4 LTS


一、MQTT协议

MQTT协议用于客户端和服务器端通讯,MQTT协议中有三种身份:
发布者(Publish)
代理(Broker)
订阅者(Subscribe)

它们的对应关系如下表:

使用者 身份类型 备注
服务器 代理
客户端 发布者、订阅者 消息发布者可以同时是订阅者

对应关系图如下:

 

MQTT传输的消息分为:
主题:消息的类型,订阅者订阅后,就可以收到该主题的消息内容(负载);
负载:消息的内容,是指订阅者具体要使用的内容。

关于MQTT协议详细的介绍可查看官网:https://mqtt.org/

二、搭建MQTT服务

2.1 下载依赖库

sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake

2.2 下载mosquitto源码

打开链接https://mosquitto.org/files/source/,定位到mosquitto-1.6.9.tar.gz,下载到本地并解压。

tar -zxvf mosquitto-1.6.9.tar.gz -C /home/pi/

2.3 编译与安装

cd /home/pi/mosquitto-1.6.9
make
sudo make install

2.4 配置

2.4.1 使能mosquitto用户

复制/etc/mosquitto/mosquitto.conf.example并重命名为/etc/mosquitto/mosquitto.conf。

cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

修改/etc/mosquitto/mosquitto.conf,使能mosquitto用户

# /etc/mosquitto/mosquitto.conf

user mosquitto

2.4.2 新增mosquitto帐号

adduser mosquitto

 如未正确配置2.4.1和2.4.2,启动mosquitto后会出现错误:

Error: Invalid user 'mosquitto'.

2.4.3 创建动态链接装载程序

启动订阅或发布时找不到动态库:libmosquitto.so.1,需要创建动态链接装载程序。

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

sudo ldconfig

2.5 启动mosquitto

mosquitto -c /etc/mosquitto/mosquitto.conf -d

参数介绍:
-c:指定特定配置文件启动
-d:后台运行 

 三、订阅与发布

3.1 订阅主题

mosquitto_sub -h 192.168.1.103 -p 1883 -u daniel -P 123456 -t "test"

参数介绍:
-h:服务器主机,默认localhost
-t:指定主题
-u:用户名
-P:密码
-i:唯一的客户端ID

3.2 发布消息

mosquitto_pub -h localhost -p 1883 -u daniel -P 123456 -t "test" -m "hello"

参数介绍:
-h:服务器主机,默认localhost
-t:指定主题
-u:用户名
-P:密码
-i:唯一的客户端ID
-m 发布的消息内容

订阅和发布演示截图如下:


 总结

MQTT是一种轻量级的开放式消息传递协议,广泛的覆盖面,涵盖医疗保健、汽车和其他使用物联网应用,搭建MQTT只是我的物联网应用的第一步,后续将介绍移植MQTT到RK3568上实现温度数据监测功能。

物联沃分享整理
物联沃-IOTWORD物联网 » Linux环境下搭建MQTT服务的完整指南

发表评论