MQTT esp8266wifi模块 从零上云 (1)

本教程在通过ESP8266 WiFi模块和MQTT协议,实现远程控制LED灯的亮灭。

1.MQTT协议特性介绍

1. MQTT概述
1.1 形象地理解三个角色
MQTT通信模型示意图如下:

使用电视台、记者、观众三个角色来类比更容易理解:

电视台:在MQTT里被称为服务器(broker),有如下作用

接受来自客户的网络连接; // 记者/观众连接进电视台

接受客户发布的应用信息; // 接受记者发布的消息

处理来自客户端的订阅和退订请求; // 处理观众的订阅、退订请求

向订阅的客户转发应用程序消息 // 给观众转发记者报道的消息

记者和观众都是客户端,记者也可以当观众,观众也可以当记者,有如下作用:

发布信息; // publish,记者

订阅消息;// Subscribe ,观众

退订或删除消息;

断开与服务器连接

1.2 消息的传递
还是以日常生活为例,提几个问题:

观众:我只关心财经新闻,那么只订阅"财经新闻",不订阅"体育新闻"

记者:我是财经记者,我可以发布"财经新闻",不发布"体育新闻"

这个过程中,引入两个概念:

主题(Topic):是财经类的?还是体育类的?

消息(Message)或负载(Playload):具体的新闻信息

具体的流程是这样的:

观众打电话到电视台:connect

观众向电视台订阅"财经新闻": Subscribe 某个 Topic

记者打电话到电视台:connect

记者向电视台发布"财经新闻":Public某个Topic的某个Playload

电视台向"订阅了财经新闻的观众"发布"某条消息":Public某个Playload给Subscriber

整个过程中,电视台和记者、电视台和观众直接的电话要保存连接状态,还要时不时确认一下:

记者要时不时给电视台喊一声"喂":确保电视台还正常

观众要时不时给电视台喊一声"喂":确保电视台还正常
原文链接:https://blog.csdn.net/m0_74712453/article/details/134772420

1、ubuntu 下安装 MQTT

安装MQTT服务器

sudo apt-get install mosquitto

安装mqtt客户端

sudo apt-get install mosquitto-clients

 服务器操作

现在已经成功安装了MQTT服务器(Mosquitto)和客户端(Mosquitto-clients)。现在,让我们了解一下接下来需要用到的命令:

重启服务器

sudo /etc/init.d/mosquitto restart

这个命令的作用是重启Mosquitto服务。具体来说:

  • sudo:以超级用户(root)权限运行命令。某些系统操作需要管理员权限。
  • /etc/init.d/mosquitto:这是Mosquitto服务的启动脚本所在的位置。/etc/init.d/目录包含了系统服务的启动脚本。
  • restart:这是一个参数,告诉脚本要执行“重启”操作。

 打开MQTT

sudo /etc/init.d/mosquitto start
  • sudo:以超级用户(root)权限运行命令。某些系统操作需要管理员权限。
  • /etc/init.d/mosquitto:这是Mosquitto服务的启动脚本所在的位置。/etc/init.d/目录包含了系统服务的启动脚本。
  • start:这是一个参数,告诉脚本要执行“启动”操作。

 关闭MQTT

sudo /etc/init.d/mosquitto stop

这个命令的作用是停止Mosquitto服务。具体来说:

  • sudo:以超级用户(root)权限运行命令。某些系统操作需要管理员权限。
  • /etc/init.d/mosquitto:这是Mosquitto服务的启动脚本所在的位置。/etc/init.d/目录包含了系统服务的启动脚本。
  • stop:这是一个参数,告诉脚本要执行“停止”操作。

客户端 订阅

mosquitto_sub
    -c 指定客户端clean_session是否保存。
    -d 打印debug信息
    -h 指定要连接的域名 默认为localhost
    -i 指定客户端clientid
    -I 指定clientId前缀
    -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒.
    -q 指定希望接收到QoS为什么的消息 默认QoS为0
    -R 不显示陈旧的消息
    -t 订阅topic
    -v 打印消息
    --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
    --will-qos Will的QoS值。该参数需要与--will-topic一起使用
    --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使>用
    --will-topic 用户发送Will消息的topic

mosquitto_sub 是一个命令行工具,用于订阅MQTT主题并接收消息。它是Mosquitto MQTT客户端的一部分,允许你从指定的MQTT代理(Broker)订阅主题,并在终端中显示接收到的消息。通过使用不同的参数,你可以控制订阅的行为和输出的格式。

我们用到的是以下内容。

-h   确认 订阅 的    服务器  
-t   topic   想要订阅的主题
mosquitto_sub -h 10.7.164.76 -t "hello" 

 客户端发布

mosquitto_pub
-d 打印debug信息
-f 将指定文件的内容作为发送消息的内容
-h 指定要连接的域名 默认为localhost
-i 指定客户端clientid,默认为附加进程ID的mosquitto_pub_
-I 指定clientId前缀
-m 消息内容
-n 发送一个空(null)消息
-p 连接端口号
-q 指定QoS的值(0,1,2)
-t 指定topic
-u 用户名
-P 用户密码
-V 指定MQTT协议版本
--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
--will-qos Will的QoS值。该参数需要与--will-topic一起使用
--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使 用
--will-topic 用户发送Will消息的topic

使用案例:

mosquitto_pub -h 10.7.164.76 -t "cd2402" -m "hello world!" 

 最后在虚拟机内就是这样的效果 左边是订阅 右边是发布,服务器也是自己的电脑 ip地址记得设置为虚拟机的IP 不知道的可以使用ifconfig查询。

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值