树莓派系列教程:物联网之MQTT
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 根据提示输入“y”确认安装 systemctl restart mosquitto
此时MQTT服务器已开始运作。
发布消息
打开树莓派的终端,输入以下命令:
mosquitto_pub -t "my/channel" -m "a message"
其中,"-t"为发布到什么频道,后面跟着的"my/channel"为频道的名称,频道名称一般以斜杠隔开。 "-m"为要发送什么消息,后面跟着的是消息的正文"a message"。