目录

前言

一、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.confuser 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.1sudo 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上实现温度数据监测功能。

linux下搭建MQTT服务相关推荐

  1. java ftp返回到根目录,Linux下搭建ftp服务,更改根目录到大存储到位置

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  2. linux下搭建ntp服务,Linux 下快速搭建ntp 时间同步服务器

    一.搭建时间同步服务器 1.编译安装ntp server tar zxvf ntp-4.2.4p5.tar.gz cd ntp-4.2.4p5 ./configure --prefix=/usr/lo ...

  3. linux dns服务无效,Linux下搭建DNS服务器及踩坑

    DNS服务 域名系统(DNS)是建立在分布式数据库上的分层命名系统.该系统将域名转换为IP地址,并可以将域名分配给Internet组资源和用户,无论实体的物理位置如何. 说白了就是:域名与IP之间的相 ...

  4. linux 搭建mqtt服务

    这里采用的是mosquitto 搭建mqtt服务 1.下载mosquitto然后解压 wget http://mosquitto.org/files/source/mosquitto-1.6.7.ta ...

  5. linux如何搭建mqtt服务器,【MQTT】在Ubuntu下搭建MQTT服务器

    前言 博主之前写了一篇<在Windows下搭建MQTT服务器>,这次要尝试在Ubuntu下搭建MQTT服务器.实际上,下载好源码包后,后面的都和那篇文章差不多了. 开发环境 虚拟机 Ubu ...

  6. Linux下的samba服务配置详解

    Linux下的samba服务配置详解 一.Samba介绍 二.Samba工具及特性 三.搭建环境介绍 四.Samba配置步骤 1.服务端操作 2.在客户端操作 五.测试用户的权限情况 一.Samba介 ...

  7. Linux下搭建jenkins+svn+http+maven自动化部署

    Linux下搭建jenkins+svn+http+maven自动化部署 服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa | ...

  8. Linux ENSP 搭建DHCP服务器并实现中继和Linux 下搭建DNS服务器(2个实验可跟做)

    文章目录 DHCP服务 了解DHCP服务 使用DHCP的好处 Linux 下搭建DNS服务器 实验环境 实验过程 修改DHCP配置文件 更改dns服务器名称 更改win10的IP地址 Linux &a ...

  9. 我的世界服务器linux加mod,在Linux下搭建带MOD 我的世界(Minecraft)服务器

    在Linux下搭建带MOD 我的世界(Minecraft)服务器 系统要求 官方服务器推荐配置要求如下: CPU:Intel Core-Based CPUs or AMD K8-Based CPUs ...

最新文章

  1. SAP MM MB21 创建预留界面批量为多个行项目勾选M标记
  2. 为什么C++(来自C++之父的观点)
  3. C语言烧写C51单片机的线,51单片机烧写程序过程以及详细说明【图文】
  4. 多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...
  5. noise函数的使用
  6. springboot使用Freemarker继承
  7. 【C++入门】C++ STL概述
  8. 将截断字符串或二进制数据 语句已终止
  9. Ubuntu 16.04中的Dock的应用顺序调整
  10. redis新数据类型-Geospatial
  11. linux log 2 1,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  12. BZOJ2395 [Balkan 2011]Timeismoney 【最小乘积生成树】
  13. IT工作十年总结之14个单据通用字段
  14. 【树叶分类】基于matlab GUI BP神经网络植物叶片识别分类【含Matlab源码 916期】
  15. Vue中如何导入并读取Excel数据
  16. Unix/Linux编程实践教程(1)---Unix系统编程概述
  17. DXL应用:向设计元素中添加设计元素
  18. ztree 后台异步加载_Ztree 分批异步加载
  19. 【互联网大厂研究】让千千万万底层人民脱贫致富的【快手】,他有何等魔力?
  20. mysql的服务被删了怎么办_三、MySQL服务构成、基本操作、误删所有用户后的恢复方法...

热门文章

  1. NFC配置文件保存路径
  2. 如何在C#中引入CPLEX的dll(CPLEX系列-教程一)
  3. 下载好看的壁纸四个网站就够了,尤其第二个,高清免费壁纸随你挑
  4. python爬取网站美女图(附代码及教程)爬虫爬取海量手机壁纸,电脑壁纸,美女图片,风景图片等
  5. 贪心算法:最小生成树Prim算法
  6. 北京司法网拍首尝线下预展 海淀法院900万红木家具亮相京东秋拍
  7. 学计算机就会修电脑的笑话,开心一刻笑话:昨晚,我去电脑城修电脑,我在等电脑修好的时候...
  8. Java配置JAVA_HOME,Path,CLASSPATH环境变量配置
  9. 美国摇滚乐队Metro致敬黄家驹,全粤语翻唱Beyond经典《海阔天空》
  10. makefile学习3:隐晦规则,自动推导