mosquitto服务器的安装以及mqtt.fx软件的使用
阅读原文时间:2023年07月09日阅读:1

一、MQTT描述

  • MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。
  • MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用极少的代码和带宽的为连接远程设备提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。
  • IoT 设备要运作,就必须连接到互联网,设备才能相互协作,以及与后端服务协同工作。而互联网的基础网络协议是 TCP/IP,MQTT 协议是基于 TCP/IP 协议栈而构建的,因此它已经慢慢的已经成为了 IoT 通讯的标准。

二、MQTT的基本特点

1.MQTT是一种发布/订阅传输协议,基本原理和实现如下;

MQTT 协议提供一对多的消息发布,可以解除应用程序耦合,信息冗余小。该协议需要客户端和服务端,而协议中主要有三种身份:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,而消息发布者可以同时是订阅者,实现了生产者与消费者的脱耦。

2.使用 TCP/IP 提供网络连接,提供有序、无损、双向连接;

MQTT 是一种连接协议,它指定了如何组织数据字节并通过 TCP/IP 网络传输它们。设备联网,也需要连接到互联网中,在大万维的世界中,TCP 如同汽车,有轮子就能用来运输数据,MQTT 就像是交通规则。在网络模型中,TCP是传输层协议,而 MQTT是在应用层,在 TCP 的上层,因此 MQTT 也是基于这个而构建的,提高了可靠性。

3.对负载内容屏蔽的消息传输;

可以对消息订阅者所接受到的内容有所屏蔽。

4.具体有三种消息发布的服务质量:

至多一次,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

至少一次,确保消息到达,但消息重复可能会发生。

只有一次,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5.小型传输,开销小,固定长度的头部是 2 字节,协议交换最小化,以降低网络流量;

整体上协议可拆分为:固定头部+可变头部+消息体,这就是为什么在介绍里说它非常适合"在物联网领域,传感器与服务器的通信,信息的收集"。

6.使用Last Will和Testament特性通知有关各方客户端异常中断的机制;

Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。

Testament:遗嘱机制,功能类似于Last Will。

三、在腾讯云上安装mosquitto服务器。

3.1. 在云服务器上,下载并且安装mosquitto服务器。

  下载地址:https://mosquitto.org/download/

3.2. 配置mosquitto的环境变量。

找到mosquitto的安装目录

系统环境变量Path 中添加mosquitto安装的路径:

>    在path下添加mosquitto的安装路径

C:\Program Files\mosquitto (记得前面加 ;)-----和前面的区别开。

以上操作完毕后,就可以在任何盘符以及文件夹下使用mosquitto的文件夹中文件,方便操作。

3.3 修改mosquitto服务器的用户名和密码。发布或者订阅信息时,必须要输入用户名和密码,增加安全性。

1.打开mosquitto.conf文件,找到allow_anonymous节点,这个节点作用是,是否开启匿名用户登录,默认是true。打开此项配置(将前面的 # 号去掉)之后将其值改为true

    修改前:#allow_anonymous

    修改后:allow_anonymous false

2: 找到password_file节点,这个节点是告诉服务器你要配置的用户将存放在哪里。打开此配置并指定pwfile.example文件路劲(注意是绝对路劲)

    修改前:#password_file

    修改后:password_file /etc/mosquitto/pwfile.example (这里的地址根据自己文件实际位置填写)

3: 创建用户名和密码、打开命令窗口 键入如下命令:  

mosquitto_passwd -c /etc/mosquitto/pwfile.example admin

    提示连续两次输入密码、创建成功。命令解释: -c 创建一个用户、/etc/mosquitto/pwfile.example 是将用户创建到 pwfile.example 文件中、admin 是用户名。

4: 创建mosquitto用户。在命令窗口键入如下命令:

mosquitto_passwd /etc/mosquitto/pwfile.example mosquitto

同样连续会提示连续输入两次密码。注意第二次创建用户时不用加 -c 如果加 -c 会把第一次创建的用户覆盖。

至此两个用户创建成功,此时如果查看 pwfile.example 文件会发现其中多了两个用户。

3.4. mosquitto 文件的含义

在mosquitto 文件夹下有以下文件会使用到:

 * 3.4.1 mosquitto.conf:开启服务器的进程
  启动cmd,运行以下指令:(如果没配置环境变量,进入mosquitto 安装的目录,再执行如下命令)
 [`mosquitto -c mosquitto.conf`]

* 3.4.2 mosquitto_sub:开启订阅信息
  启动cmd,运行以下指令:如果没配置环境变量,进入mosquitto 安装的目录,再执行如下命令).开启名称为“topic”的订阅。
 [`mosquitto_sub -t topic -h "111.223.231.22" -u "admin" -P "admin123"`]
  -t: "订阅的信息名称"
  -u:"用户名"
  -P:"登录密码"
  -h:"服务器的IP地址" 

* 3.4.3 mosquitto_pub:开启发布信息
  启动cmd,运行以下指令:如果没配置环境变量,进入mosquitto 安装的目录,再执行如下命令).开启名称为“topic”的信息发布。
  [`mosquitto_pub -t topic -h "111.223.231.22" -u "admin" -P "admin123" -m "{"sensorDatas":[{"flag":"Y1","value":"11"}]}"`]
  -t: "订阅的信息名称"
  -u:"用户名"
  -P:"登录密码"
  -h:"服务器的IP地址"
  -m:"发布的信息,信息为json格式"
 注意!! 在windows的cmd中是无法识别""这个符号的,必须输入改成\".以上输入就变成了。
[`mosquitto_pub -t topic -h "111.223.231.22" -u "admin" -P "admin123" -m \"{\"sensorDatas\":[{\"flag\":\"Y1\",\"value\":\"11\"}]}\"`]

 但是在钡铼BL102网关中或者mqtt.fx软件中就不用如此输入了。
 当发布以上消息后,同IP以及topic的订阅端就可以接收到信息了。

四、mqtt.fx的使用。

4.1 下载并且安装mqtt.fx

下载地址: http://mqttfx.jensd.de/index.php/download

4.2 点击“设置配置文件”进行设置,填写网络IP,用户名,密码等进行连接。

4.3连接完毕后,输入“订阅主题”或者“发布主题+订阅信息”,即可对MQTT服务器进行订阅/发布信息。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章