一、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服务器进行订阅/发布信息。

mosquitto服务器的安装以及mqtt.fx软件的使用的更多相关文章

  1. 使用钡铼BL102网关连接西门子S7-1200PLC 以及mosquitto服务器方法

    一.软硬件描述 西门子PLC S7-1215 钡铼BL102网关 mosquitto MQTT服务器(腾讯云上搭建) 可以上网的路由器一套 二.需要使用的软件. 西门子Portal v15.1 (西门 ...

  2. 极简】如何在服务器上安装SSL证书?

    本文适合任何人了解,图形化操作.下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板. 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待腾讯 ...

  3. 图解连接阿里云(一)创建阿里云物联网平台产品和设备,使用MQTT.fx快速体验

    1.  打开 https://www.aliyun.com/  注册账号 2.注册账号登录后点击控制台 3. 在下图1处输入物联网平台,会弹出2处所示物联网平台的入口,点击红色箭头所示处,进入物联网平 ...

  4. Ubuntu 16.04安装测试MQTT Mosquitto

    环境:Ubuntu 16.04 介绍MQTT MQTT是一种机器到机器的消息传递协议,旨在为“物联网”设备提供轻量级的发布/订阅通信.它通常用于地理跟踪车队,家庭自动化,环境传感器网络和公用事业规模数 ...

  5. mqtt mosquitto 源码安装

    下载地址 ububtu  : wget https://codeload.github.com/eclipse/mosquitto/zip/master 安装依赖 sudo apt-get insta ...

  6. MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署

    在mqtt的官方网站,有许多mqtt,其中:MosquittoAn Open Source MQTT server with C, C++, Python and Javascript clients ...

  7. 订阅mosquitto服务器状态各主题

    mosquitto_sub -v -t \$SYS/broker/client MQTT客户端可以通过订阅位于$SYS层次下的主题来查看mosquitto服务器的状态信息.标记为Static的主题对于 ...

  8. Mosquitto服务器的搭建以及SSL/TLS安全通信配置

    Mosquitto服务器的搭建以及SSL/TLS安全通信配置 摘自:https://segmentfault.com/a/1190000005079300 openhab  raspberry-pi ...

  9. Centos 7.0_64bit 下安装 Zabbix server 3.0服务器的安装

    一.关闭selinux   修改配置文件/ etc / selinux / config,将SELINU置为禁用(disabled)   vim /etc/selinux/config  # This ...

随机推荐

  1. windows server 2008r2 在vmware里自动关机

    虚拟机没有激活所以导致自动关机,试试激活它.<wiz_tmp_tag id="wiz-table-range-border" contenteditable="fa ...

  2. linux下串口测试程序

    通过简单的参数配置,执行文件+串口号+波特率 #include <stdio.h> #include <stdlib.h> #include <unistd.h> ...

  3. Tomcat启动时shell窗口乱码解决方法

    tomcat/conf/目录下,修改logging.properties java.util.logging.ConsoleHandler.encoding = utf-8 更改为 java.util ...

  4. grep 命令?

    强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索.grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格, ...

  5. Error running 'App': Command line is too long. Shorten command line for App or also for Spring Boot default configuration.

    找到标签 <component name="PropertiesComponent">.在标签里加一行  : <property name="dynam ...

  6. 面试问题之操作系统:linux线程API

    https://blog.csdn.net/youwotianya/article/details/80933449

  7. Java中如何强制类型转换

    例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小.此时就需要通过强制类型转换来 ...

  8. 关于 OOP 和设计模式?

    这部分包含 Java 面试过程中关于 SOLID 的设计原则,OOP 基础,如类,对象, 接口,继承,多态,封装,抽象以及更高级的一些概念,如组合.聚合及关联. 也包含了 GOF 设计模式的问题.

  9. SpringMVC的入门程序

    1.环境准备(jar包) 2.在web.xml中配置前端控制器 <!-- springmvc 前端控制器 --> <servlet> <servlet-name>s ...

  10. 学习GlusterFS(六)

    一.GlusterFS概述 分布式文件系统由来 在介绍之前我们先来看下文件系统及典型的NFS文件系统. 计算机通过文件系统管理,存储数据的.而现在数据信息时代中人们可获取数据成指数倍的增长,单纯通过增 ...