MQTT是英文Message Queue Telemetry Transport的缩写,中文翻译为:消息队列遥测传输协议。它是一个基于客户端/服务端架构的、发布/订阅模式的消息传输协议,有三种角色:消息发布者(Publisher)、消息订阅者(Subscriber)和消息代理(Broker)。其中,消息发送者和消息订阅者都属于客户端角色(换句话说:客户端既可以订阅消息,也可以发送消息),消息代理属于服务器角色。三者的关系如下图所示:
具体来说:
MQTT客户端:使用MQTT协议的设备(或程序),其主要工作包括:
与服务器建立连接;
发布消息
订阅其它客户端发布的消息;
退订或删除应用程序的消息;
与服务器断开连接;
MQTT服务器:又称为"消息代理",它位于消息发布者和订阅者之间,其主要工作包括:
接受客户端的连接请求并维护链接;
接收客户发布的信息;
处理来自客户端的订阅和退订请求;
向订阅的客户端转发消息;
以上是对MQTT协议的简单介绍,今天这篇文章先让大家有个感性认识,我们使用NanoMQ来搭建一个MQTT服务器。
MQTT的服务器软件很多,比如:
EMQX(www.emqx.com)、HiveMQ(www.hivemq.com)、Mosquitto(www.mosquitto.org)、RabbitMQ(www.rabbitmq.com)、VerneMQ(vernemq.com)、FlashMQ(www.flashmq.org)、NanoMQ(nanomq.io/zh)等等。其中后两者都是轻量级的、跨平台、多线程服务器软件,均支持MQTT 3.1、3.1.1和5.0协议版本。
下面以NanoMQ为例,介绍在树莓派4B上安装该软件的步骤:
1、配置NanoMQ的Apt源
curl -s https://assets.emqx.com/scripts/install-nanomq-deb.sh | sudo bash
2、安装NanoMQ
sudo apt-get install nanomq
3、启动NanoMQ
nanomq start
我在树莓派上实际安装过程的图片如下:
初次启动时,由于没有配置文件(/etc/nanomq.conf),可能会有错误提示,但并不影响其运行。后期我们会创建该配置文件并对NanoMQ进行配置。
为了测试NanoMQ的功能,我们还需要一个MQTT客户端软件。这里使用MQTTX(可以去mqttx.app/zh下载)进行测试。
启动MQTTX后先新建一个连接,名称为“test_nanomq”,服务器的地址填树莓派的IP地址,端口采用默认值,其它项先不设置,单击右上方【连接】,会创建一个连接并主动与MQTT消息代理(本例程就是树莓派的NanoMQ)建立通信,如下图所示:
创建完成后,会显示连接状态,绿色表示成功建立连接。
单击右侧的【添加订阅】可创建订阅主题,如下图所示:
假设我们订阅1号温度传感器,主题为:sensor/1/temperature,服务质量(QoS)为“至少一次”,如下图所示:
在右下角可以发送主题。
假设我们发送“sensor/1/temperature”主题,温度值为25.5摄氏度。由于我们也订阅了该主题,因此也会收到相应的信息,如下图所示:
好了,关于基于NanoMQ大家MQTT服务器并进行测试就先介绍到这里。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以扫描下面的二维码查看:
发表评论