物联网时代-mqtt入门篇

前言

mqtt背景图

MQTT消息队列遥测传输(Message Queuing Telemetry Transport)是ISO 标准(ISO/IEC PRF 20922)下基于发布(Publish)/订阅(Subscribe)范式的消息协议,可视为”资料传递的桥梁”它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。

MQTT相较于HTTP,能节省更多的资源,带来较多的传输负担,也因为这样,在制造业中,让更多人发现IoT在设备、厂房的无限可能,发现原来要取机台的温度这么容易,要了解厂区的产量这么方便…等。

官网: http://mqtt.org/

MQTT 3.1.1 协议(中文) : https://mcxiaoke.gitbook.io/mqtt/

无限可能的MQTT

发送命令远程控制:

MQTT协议-远程控制

读取和发布数据:

MQTT协议-发布数据

组成和基本概念

MQTT是有以下几部分组成:

  • 发布(Publish)/订阅(Subscribe)

  • 消息(Message)

  • 主题(Topics)

  • 代理(Broker)

发布(Publish)/订阅(Subscribe)

Publish/Subscribe

发布-订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。

主题(Topics)

点亮灯泡

主题通过字符串“/“进行划分,主题有2个作用:

  1. 对感兴趣的主题进行分类
  2. 具体说明你想发布消息到哪里

例子:

1
home/office/lamp

代理(Broker)

Broker

(代理)Broker有三个主要作用:

  • 接受所有的消息

  • 过滤消息

  • 发布消息到所有订阅的客户端

初体验

1. 安装

1
npm install mqtt -g

2. 界面上输入mqtt命令,我们能看到如下界面

1
2
3
4
5
6
7
8
9
10
mushuwei@mushuweideMacBook-Pro ~ % mqtt

MQTT.js command line interface, available commands are:

* publish publish a message to the broker
* subscribe subscribe for updates from the broker
* version the current MQTT.js version
* help help about commands

Launch 'mqtt help [command]' to know more about the commands.

对于具体的发布(Publish)/订阅(Subscribe)操作,可以输入Mqtt help publishmqtt help subscribe

3. 打开俩个命令行界面,A输入一命令, B输入二命令

一.

1
mqtt sub -t 'hello' -h 'test.mosquitto.org' -v

二.

1
mqtt sub -t 'world' -h 'test.mosquitto.org' -v

4. 打开一个C命令行界面,输入以下命令

1
mqtt pub -t 'hello' -h 'test.mosquitto.org' -m 'from MQTT.js'

5. 最终A命令行界面中收到消息

1
2
mushuwei@mushuweideMacBook-Pro ~ % mqtt sub -t 'hello' -h 'test.mosquitto.org' -v
hello from MQTT.js
  • test.mosquitto.org : 代理(Broker)
  • hello、world : 主题(Topics)
  • A、B命令行界面 : MQTT客户端(Publish)
  • C命令行界面 : MQTT客户端(Subscribe)
  • from MQTT.js : 消息(message)

以上操作完全展示了MQTT的能力和组成。希望大家对MQTT协议也有了一定的了解和认识。

给辛苦的作者点杯咖啡☕️!