“树莓派系列教程:物联网之MQTT”的版本间的差异

来自丢石头百科
(创建页面,内容为“== MQTT协议简介 == MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,…”)
 
第30行: 第30行:
 
* 打开终端,运行以下命令:
 
* 打开终端,运行以下命令:
 
   sudo apt update
 
   sudo apt update
   sudo apt install mosquitto
+
   sudo apt install mosquitto,mosquitto_client
 
   根据提示输入“y”确认安装
 
   根据提示输入“y”确认安装
 
   systemctl restart mosquitto
 
   systemctl restart mosquitto
第38行: 第38行:
 
打开树莓派的终端,输入以下命令:
 
打开树莓派的终端,输入以下命令:
 
   mosquitto_pub -t "my/channel" -m "a message"
 
   mosquitto_pub -t "my/channel" -m "a message"
其中,"-t"为发布到什么频道,后面跟着的"my/channel"为频道的名称,频道名称一般以斜杠隔开。
+
其中,"-t"为发布到什么频道,"my/channel"为频道的名称,频道名称一般以斜杠隔开。
"-m"为要发送什么消息,后面跟着的是消息的正文"a message"。
+
"-m"为要发送什么消息,消息的正文"a message"。
 +
 
 +
== 订阅消息 ==
 +
打开新的树莓派终端,输入以下命令:
 +
  mosquitto_sub -t "my/channel"
 +
即可订阅"my/channel"频道的消息。
 +
此时另外的终端再次输入命令:
 +
  mosquitto_pub -t "my/channel" -m "a message"
 +
订阅终端即可收到消息。

2020年8月14日 (五) 15:42的版本

MQTT协议简介

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

MQTT协议特点

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性: 1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合; 2、对负载内容屏蔽的消息传输; 3、使用 TCP/IP 提供网络连接; 4、有三种消息发布服务质量: “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 “至少一次”,确保消息到达,但消息重复可能会发生。 “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。 5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量; 6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

MQTT协议原理

MQTT协议有三种身份:代理(Broker)、发布者(Publish)、订阅者(Subscribe)。

代理:MQTT的服务器,有了服务器,才能在服务器上发布和订阅内容。

发布者:在服务器上发布信息的设备。

订阅者:订阅服务器信息的设备。

以某视频平台作为例子,某视频平台的服务器称为代理(Broker),在上面发布视频的人称为发布者,订阅视频的人称为订阅者。

树莓派的安装

这里选用知名的MQTT开源应用mosquitto作为例子,将树莓派变成MQTT协议的代理设备(则MQTT服务器)。

  • 将树莓派连接网络。
  • 打开终端,运行以下命令:
 sudo apt update
 sudo apt install mosquitto,mosquitto_client
 根据提示输入“y”确认安装
 systemctl restart mosquitto

此时MQTT服务器已开始运作。

发布消息

打开树莓派的终端,输入以下命令:

 mosquitto_pub -t "my/channel" -m "a message"

其中,"-t"为发布到什么频道,"my/channel"为频道的名称,频道名称一般以斜杠隔开。 "-m"为要发送什么消息,消息的正文"a message"。

订阅消息

打开新的树莓派终端,输入以下命令:

 mosquitto_sub -t "my/channel"

即可订阅"my/channel"频道的消息。 此时另外的终端再次输入命令:

 mosquitto_pub -t "my/channel" -m "a message"

订阅终端即可收到消息。