Mosquitto安装和测试
MQTT相关实验
第一节:Mosquitto 相关实验
第二节:域名解析和内网穿透实验
第三节:OneNET 相关实验
Mosquitto实验
实验一:Mosquitto安装
1.1 更换软件源
首先更换树莓派软件源,在树莓派终端输入以下命令
sudo mousepad /etc/apt/sources.list
在打开的文件中,使用 #
将第一行注释掉,然后在末尾添加以下两行语句
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
修改完成的效果如下图所示:
修改完成后,保存并退出。
1.2 安装Mosquitto
在树莓派终端输入以下代码(树莓派默认密码为:raspberry
)
# 更新软件源
sudo apt-get update
# 导入存储库签名密钥
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
# 切换到软件包管理目录
cd /etc/apt/sources.list.d/
# 下载mosquitto软件源
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list
# 更新树莓派软件源
sudo apt-get update
# 安装mosquitto软件包
sudo apt-get install mosquitto mosquitto-clients
正常情况下,安装完成后,mosquitto服务就会自动启动,可以在树莓派终端输入以下命令查看其运行状态
# 查看mosquitto服务状态
service mosquitto status
# 停止mosquitto服务
service mosquitto stop
# 启动mosquitto服务
service mosquitto start
如果mosquitto的服务状态为active (running)
,则表示该服务正常运行,按下Ctrl+C
退出来即可
目前所实现的功能:
- 安装了Mosquitto Broker,服务器会在1883端口(默认)监听本机的连接请求
- 安装了Mosquitto Client,可以使用相关命令发布或订阅主题了
实验二:发布/订阅测试
Mosquitto官方手册
命令或文件名称 | 用途 |
---|---|
mosquitto | 运行Mosquitto代理服务 |
mosquitto.conf | Mosquitto代理的配置文件 |
mosquitto_passwd | 用于生成Mosquitto密码文件 |
mosquitto_pub | 用于将消息发布到代理 |
mosquitto_rr | 用于与代理进行简单请求/响应的测试 |
mosquitto_sub | 用于在代理上订阅相应的主题 |
mosquitto-tls | 用于配置SSL/TLS支持 |
mqtt | MQTT功能描述 |
这里我们需要了解mosquitto_pub
和mosquitto_sub
这两个命令,分别用于发布和订阅主题。
两个命令所涉及的主要参数如下,详细参数请看mosquitto_pub参考手册和mosquitto_sub参考手册:
mosquitto_pub命令参数
参数名称 | 参数名称缩写 | 用途 |
---|---|---|
–help | 无 | 显示帮助信息 |
–host | -h | 指定要连接的主机,默认为localhost |
–port | -p | 指定要连接服务器的端口号,默认为1883 |
–id | -i | 指定客户端ID,默认会自动生成 |
–topic | -t | 指定要发布的主题 |
–message | -m | 指定要发布的消息 |
–username | -u |
指定用户名,需要配合--pw 参数
|
–pw | -P |
指定密码,需要配合--username 参数
|
–file | -f | 将文件内容作为消息发送 |
mosquitto_sub命令参数
参数名称 | 参数名称缩写 | 用途 |
---|---|---|
–help | 无 | 显示帮助信息 |
–host | -h | 指定要连接的主机,默认为localhost |
–port | -p | 指定要连接服务器的端口号,默认为1883 |
–id | -i | 指定客户端ID,默认会自动生成 |
–topic | -t | 指定要订阅的主题 |
–username | -u |
指定用户名,需要配合--pw 参数
|
–pw | -P |
指定密码,需要配合--username 参数
|
2.1 本地测试
因为我们已经在树莓派上安装了客户端和服务器,所以可以在树莓派本地进行简单的发布订阅测试。
首先使用service mosquitto status
命令,查看你的mosquitto服务是否处在开启状态,如果服务没启动,则使用命令启动它。
然后我们在树莓派上打开两个终端,一个用于发布消息,一个用于订阅消息
先在订阅端输入命令:
mosquitto_sub -t "test"
然后在发布端输入命令:
mosquitto_pub -t "test" -m "message"
此时订阅端就会收到相应的消息,如下图所示。
上述两行代码的含义是,订阅端首先订阅了主题为test
的消息并阻塞等待,然后发布端向服务器发布了主题为test
的消息,消息内容为message
,然后订阅端就接收到了消息message
。
这是一个本地的测试,发布是从树莓派本地发布消息到树莓派的mosquitto broker服务,订阅同样是订阅树莓派本地的broker。下面我们来测试一下向外网的服务器进行发布和订阅。
2.2 外网测试
我在服务器上创建了mosquitto broker服务,这样大家就可以直接访问这个服务器,实现向公网上发布/订阅消息。
broker服务端配置信息
- 地址:“47.95.13.239”
- 端口:1883
- 用户名:student
- 密码:kkxxb401
- 客户端ID:“student/xx/test” (推荐)
这里使用了用户名和密码等信息,可以让大家练习使用更多的命令参数。
同样在树莓派开启两个终端,先启动订阅客户端,输入命令:
mosquitto_sub -t "student/xx/test" -h "47.95.13.239" -p 1883 -u "student" -P "kkxxb401"
然后在发布端输入以下命令:
mosquitto_pub -t "student/xx/test" -h "47.95.13.239" -p 1883 -u "student" -P "kkxxb401" -m "This is test message"
实现的效果如下图所示
如果不使用指定的用户名和密码,或者书写有误,会出现下图的现象
这是一个外网测试,树莓派客户端发布主题信息到外网服务器,然后树莓派再订阅外网服务器对应的主题,相当于这个消息从树莓派本地发出,经过外网broker服务转发,又回到了树莓派本地。
实验三:树莓派与手机通信
实验二的外网测试部分,我们实现了下图所示的数据转发流程。
接下来使用手机配合树莓派,实现双方的数据通信,其数据的转发流程如下图所示。
手机端需要下载MQTT客户端APP
- Android 请下载
MQTT Client
- iOS 请下载
MQTTool
下面以iOS系统(MQTTool软件)为例,演示手机与树莓派互传数据的过程
- 打开MQTTool软件
Host
填写47.95.13.239
Port
填写1883
Client ID
可以不填,使用默认生成的IDUsername
填写student
Password
填写kkxxb401
- 点击 Connect 连接服务器
连接成功后,如下图所示,Status状态会显示 Connected to 47.95.13.239:1883
(备注:上图中没填密码是因为截图时密码被自动隐藏了)
连接成功后,我们分别尝试 树莓派向手机传输数据
以及 手机向树莓派传输数据
两种方式。
3.1 树莓派向手机传输数据
树莓派作为消息发布者,将以TopicA为主题的消息发布到服务器;手机作为消息接收者,从服务器订阅主题TopicA的消息。
(!!注意:为了区分不同的学生,需要将每个学生发布/订阅的主题做区分,请将下面TopicA/xx
中的xx
换成自己电脑的序号)
(1)首先手机端先开启订阅
- 在MQTTool手机APP的底部选择
Subscribe
,进入订阅页面 Topic (主题)
填写TopicA/xx
QoS (服务质量)
选择0
- 点击
Subscribe
订阅按钮
订阅成功后,Status
会显示 Subscribed to: TopicA/xx
(2)在树莓派端发布一条消息
打开树莓派终端,填写以下命令
(!!注意:执行该命令时,需要确保手机端处在订阅状态,手机熄屏后有可能就断开与服务器的连接了)
mosquitto_pub -t "TopicA/xx" -h "47.95.13.239" -p 1883 -u "student" -P "kkxxb401" -m "This is a message from RaspberryPi."
此时手机端就会收到该消息,如下图所示
点击该条消息可以查看相关详情
这样,来自树莓派的消息 This is a message from RasppberryPi.
就通过服务器转发到了手机上。
下面可以仿照 树莓派向手机传输数据
的过程,实现 手机向树莓派传输数据
。
3.2 手机向树莓派传输数据
手机作为消息发布者,将以
TopicB
为主题的消息发布到服务器;树莓派作为消息订阅者,从服务器订阅主题TopicB
的消息。
(!!注意:为了区分不同的学生,需要将每个学生发布/订阅的主题做区分,请将下面TopicB/xx
中的xx
换成自己电脑的序号)
(1)首先树莓派先开启订阅
mosquitto_sub -t "TopicB/xx" -h "47.95.13.239" -p 1883 -u "student" -P "kkxxb401"
(2)手机端向服务器发布以TopicB/xx
为主题的消息Hello,this is from Phone.
发布成功后,树莓派就会接收到这条消息。
练习
Mosquitto官方在它的服务器test.mosquitto.org
上搭建了Mosquitto Broker服务,分为未加密、已加密、需要客户端证书等多种连接方式,对应不同的服务器端口,可在https://test.mosquitto.org/查看详情。
课后可以自行测试以下内容:
- 用手机APP连接
test.mosquitto.org
,实现消息发布和订阅。 - 用手机测试
mosquitto_sub -h test.mosquitto.org -t "#"
这条订阅指令,并解释为何会接收到大量不同主题
的消息。(可参考通配符主题订阅)
额外说明:如果自己在服务器上搭建Mosquitto Broker服务,必须将监听服务绑定到服务器所有端口并设置连接密码,否则默认只能监听服务器本地的连接请求。这是Mosquitto新版本(2.0以上)的特性,详细信息请看版本迁移说明
End
Mosquitto安装和测试相关推荐
- mosquitto在Linux环境下的部署/安装/使用/测试
看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http:/ ...
- MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
原版地址:http://blog.csdn.net/xukai871105/article/details/39252653 0 前言 MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物 ...
- Mosquitto安装及使用简介
1.源码下载: (1)官方源码下载:http://mosquitto.org/files/source/ (2)性能优化版源码下载:https://github.com/houjixin/mosqui ...
- MQTT Mosquitto安装和使用
物联网(Internet of Things,IoT)最近曝光率越来越高.虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请 ...
- mosquitto安装与使用
Eclipse Mosquitto 是实现MQTT协议版本5.0.3.1.1和3.1的开源消息代理(经EPL / EDL许可). mosquitto 是一个开源的轻量级的C实现,适合在从低功耗单板计算 ...
- Mosquitto安装
mosquitto是一款开源免费的软件,官网链接.它是一些可执行文件的集合,通过这些可执行文件,它提供broker,publish,subscribe功能.安装mosquitto一般是为了让它作为MQ ...
- my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接...
一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径"C:\Soft\mysql-5.6.24-winx64" ...
- http_load安装与测试参数分析
http_load安装与测试参数分析 http_load以并行复用的方式运行,用以测试 web 服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死. ...
- nginx 没有sbin目录_CentOS7下Nginx+ModSecurity配置、安装、测试教程
" 最近在工作上遇到一点问题,问了大佬.百度,都没有很好地解决:经过大量搜索查阅以及试验,终于将问题解决.于是写下这篇文章以提醒自己,也可供读者参考." 环境:CentOS-7-x ...
最新文章
- Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
- 【css】垂直居中的几种写法
- 单用户模式迁移home家目录
- 十年前,他如何自学技术进阿里?
- spring mvc错误收集
- 类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
- 互联网晚报 | 9月2日 星期四 | 小米汽车有限公司正式成立;唯品富邦消费金融获批开业;恒大举行保交楼军令状签署大会...
- mysql5.5 5.7区别_mysql 5.5 和5.7 安装的区别
- 百年 IBM 终于 All In 人工智能和混合云!
- python中for循环语句格式_python中for循环和可迭代对象遍历
- Apex 获取真正的IP地址
- ECSHOP首页调用指定分类推荐商品/热卖商品/新品商品
- 我的世界java版和基岩版对比_我的世界 Java版 与 基岩版 有什么区别?
- 增量式修改检验和(IP, TCP, UDP)算法的研究和实现
- 掌握这些,你也可以轻松扒谱(下)
- 2021东北四省赛部分题解
- Python_作图添加水平线和垂直线_linspace语句介绍
- win10、ThinkPad遇到静音键不亮,但可以使用的问题
- 天津海洋功能区划获批复 排海污水须100%达标-天津海洋功能区划-污水-达标率
- 【超简单】latex 参考文献 引用 跳转 多余的空格