MQTT应用环境搭建及测试(带程序)

首先了解一下什么是MQTT ?

MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium.

(MQTT 代表消息队列遥测传输。它是一种发布/订阅、极其简单和轻量级的消息传递协议,专为受约束设备和低带宽、高延迟或不可靠的网络而设计。设计原则是尽量减少网络带宽和设备资源需求,同时努力确保可靠性和一定程度的交付保证。这些原则也使得该协议成为新兴互联设备"机器对机器"(M2M)或"物联网"世界的理想,以及带宽和电池电量处于优势的移动应用。)

那么通过以上描述,我们就不难看出这种技术的应用领域。

因想要了解一下相关协议,就阅读了官网相关资料,并想要通过自己搭建MQTT服务器进行测试。那么先来说说相关测试环境。

软件测试环境:

1. 操作系统:虚拟机 Ubuntu 16.04.4-desktop

2. MQTT服务器:Apache-Apollo-1.7.1

3. 浏览器:Google

4. MQTT客户端:MQTTLens

5. JAVA(JDK)

第一  Ubuntu 虚拟机安装

具体安装步骤不再累述,请自行百度。

第二  MQTT服务器搭建

1) 下载Apache-Apollo-1.7.1,网址:http://www.apache.org/dyn/closer.cgi?path=activemq/activemq-apollo/1.7.1...

2) 也可以打开终端,输入如下命令:

Sudo wget http://apache.fayea.com/activemq/activemq-apollo/1.7.1/apache-apollo-1.7...

3) 解压源码包,输入如下命令:

Sodu tar -zxvf apache-apollo-1.7.1-unix-distro.tar.gz

4) 下载JDK

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-...

根据操作系统选择对应的版本。可以在终端输入 getconf LONG_BIT 命令查看,如果是64位机器,则结果为64那么就下载如图所示版本。 

 5) 解压并安装JDK

首先在/usr/local目录下新建java文件夹,命令如下:

sudo mkdir /usr/local/java

然后将已经下载好的JDK解压到此文件夹下,命令如下:

sudo tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/java

6) 配置JDK环境变量:

首先在配置JDK环境时需要注意要以root权限进行操作。

权限切换,命令如下:sudo su

然后输入命令:sudo vi /.bashrc

注意:Linux 下vi命令主要使用如下:

a (在字符右侧插入)i (在字符左侧插入):wq,:ZZ(保存退出)

然后将如下指令输入:

export JAVA_HOME=/usr/local/java/jdk1.8.0_231

export JRE_HOME=${JAVA_HOME}/jre  

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

export PATH=${JAVA_HOME}/bin:$PATH 

然后检查是否配置成功,输入命令:java -version 

7) 创建 Apollo 的MQTT代理服务器

终端输入: cd /home/ghost/apache-apollo-1.7.1/bin/

 ./Apollo

可以看到如下帮助信息,我们可以使用 create 命令创建一个新的代理。 

下面可以使用命令:./Apollo create mybroker 创建一个broker(代理),如上图。

创建一个代理后,会提示如何启动代理服务器,如下输入命令:

.mybroker/bin/Apollo-broker run 

此时MQTT的代理已经启动,可以通过登陆网页查看,那么在上图中提示可以通过以下地址进入:

https://127.0.0.1:61681

http:127.0.0.1:61680

打开浏览器,输入https://127.0.0.1:61681或者http:127.0.0.1:61680,一般会提示安全性问题,直接允许就可以了,在登陆框中输入用户名:admin,密码:password

至此,Apollo 代理服务器已经配置完成,接下来就是如何进行MQTT客户端测试。

 

MQTT 客户端配置及测试

上一节介绍了如何配置MQTT服务器,那么这一节将介绍如何配置MQTT客户端。本人在测试时因为一些原因,无法使用google的浏览器下载插件MQTTLens,带来了很多麻烦。

虽然我们可以下载到google浏览器,但是无法正常使用应用商店下载插件,客户端的测试可以在Linux平台,也可以使用 windows平台。如果在Linux平台,安装google浏览器又是一项艰难的任务,那么这里就不介绍具体步骤了。可以通过windows 平台进行测试,效果是一样。那么这里将提供MQTTLens 的插件,只需要将crx文件导入就可以了。导入步骤也不再介绍。

MQTT 客户端设置

打开MQTTLens软件,点击 Connections的“+“号,进行客户端的配置。

在弹出的对话框中:

1) 输入上一节中创建的代理名称“mybroker“;

2) 选择“tcp://“,输入”127.0.0.1“

3) 输入port:61613

4) 输入用户名:admin,密码:password

第二项如果客户端和代理服务器不是同一台PC,那么这里输入代理服务器的IP地址;

第三项的PORT设置,需要查看 Apollo 代理服务器的配置参数确定,而非:61680/61681,如下图网页打开 Apollo Console 切换到 Configuration 页,第64行显示的就是 tcp协议对应的端口号为61613。

订阅与发布消息

1) 第一步设置完成后,此处将为绿色,代表连接成功,红色代表连接失败;

2) “Subscribe” 用于设置订阅的主题;

3) “Publish” 用于设置发布主题;

4) “Message” 用于设置发布的消息;

5) 订阅按钮,点击用于开始订阅消息;

6) 发布按钮,点击用于发布消息;

7) “Subscriptions” 用于订阅显示的消息记录;

注意:1)和2)的主题必须一致。

至此,MQTT的服务器及客户端配置及测试完成。

测试程序下载:

链接: https://pan.baidu.com/s/1JHtcf1BsQ5cMJj9CBd_pjQ 提取码: bgix

 

往期回顾

IFIX 一个不得不介绍的强大功能

 IFIX 如何实现与S7-200的OPC通讯

Python 连接数据库的多种方法

PCS7调试之我见

 OPC 通讯不得不说的强大软件

Kepware 如何实现与PLC的通讯

MYSQL 与上位机组态软件之间数据交换的秘密

西门子S7-1500的OPC通讯组态

SQL Server 数据库设计--SELECT语句

。。。。。。

 

作者简介

剑控老罗

具有10年工业自动化领域SCADA,DCS,PLC等项目实施经验,熟悉石化行业,油田数字化行业,熟悉多个品牌PLC,HMI,SCADA,数据库等。

 

今日公开课课程表

V90与Smart200的脉冲控制

3日下午15点开始

 

剑指工控 公开课 全面上新

让我们通过网络继续将分享进行到底!
所有课程原地址永久回放!

新课不断更新,敬请期待!

1.Smart200、S7-1200和V90伺服系统:已更新9课

2.贝加莱直播课程:已更新12课

力控科技产品培训:已更新5课

4.剑指工控经典公开课回放:已更新22课

5.新品推荐:已更新3课

6.专家课堂:已更新12课