MQTT学习,服务器EMQX建立
创始人
2025-01-18 18:03:49
0

文章用于记录学习心得,分享学习经验。如有雷同,错误或者涉及侵权等问题,请联系作者!!!

1 MQTT介绍

mqtt是一种协议,建立在IP,tcp网络上。相比于tcp,更加简单,轻便,多用于物联网中,终端设备或者客户端不具备浏览器功能,但是能连接网络。

组成:客户端,服务器端 

服务器端 MQTT服务器也称为“消息代理”(Broker)

通过订阅和发布来实现双向连接。订阅是指客户端向服务器订阅主题topic,有消息message后,服务器立即向订阅者根据订阅的主题topic来推送消息。发布是指客户端向服务器推送带有主题topic的消息message。每一个客户端都可以作为订阅或者发布者,客户端只和服务端建立联系,客户端之间不联系。通过订阅、发布实现客户端之间的消息发送。主题可以多人发布,也可以多人接收。

官网:https://www.emqx.io/zh
github:https://github.com/emqx/emqx

2 EMQX服务器

使用EMQX在本地建立mqtt服务器,实现局域网或者互联网的mqtt通信。安装使用请到官网下载,解压,再此不赘述。

局域网:局域网相比于互联网而言,局域网使用私网IP,比如:手机热点WiFi,家里路由器,校园网,企业内部网,都是局域网。局域网内可以再建立局域网,比如,校园网连接互联网,手机连接校园网,esp8266连接手机热点,实现局域网向下扩展。

客户端通过IP来实现服务端的识别,并发送消息,客户端会先在本局域网中查找服务端IP,在上一级局域网,再,再,直到互联网中,全部没有 则链接失败。

EMQX启动问题,通过cmd命令提示符启动,安装位置在d盘时,d:回车把操作位置改为d盘,

启动:在安装包位置\emqx-5.0.26-windows-amd64\bin\emqx start

启动后会出现2行字符,然后自行cmd关闭,浏览器打开127.0.0.1:18083,登录,跳过密码,管理后台,默认用户名/密码: admin/public  启动成功

关闭:在安装包位置\emqx-5.0.26-windows-amd64\bin\emqx stop

没有提示,然后自行cmd关闭,127.0.0.1:18083管理后台打不开,关闭成功

tip:

启动关闭麻烦,可以在安装包下即bin的同级文件,新建txt,写入.\bin\emqx start,更改txt后缀名为.bat,变为一键启动。关闭类似操作。

3 MQTT客户端测试

自带客户端进行测试。

端口号问题:网页html版客户端、h5+app制作的手机app,不能直接连接mqtt,通过websocket进行映射连接,端口为8083;单片机esp8266、电脑exe软件等直接连接的端口号为1883。

在同一个mqtt服务器里面,客户端的ID不能重复,后来者会挤掉先来着,用户名和密码可以多个客户端使用。

4 库

1 HTML 

mqtt.js

      	
url = 'mqtt://127.0.0.1:8083/mqtt';  var options = {                                                //创建一个参数对象             clientId:'123',                                        //clientID             username:'123',                                            //用户名             password:'123'                                        //用户密码         };         client = mqtt.connect(url,options);                            //连接服务器
client.publish(topic, message);							//发送消息

注意:clientId:
            username:
            password:

大小写区别,特别是clientId,不然识别不到id,但是能连接上服务器,服务器会自动分配id号。

2 esp8266 

 PubSubClient.h

arduinoide编写esp8266代码

适用于MQTT的Arduino客户端 (knolleary.net)

#include  #include  //通过WiFi连接mqtt服务器,发送订阅主题,控制板载led亮灭 /**********************网络设置项 **********************/ const char* ssid = "123";                                //路由器名字 const char* password = "123";                            //路由器密码 const char* mqtt_server = "123.123.123.123";          //MQTT服务器IP const int mqttPort = 1883;                            //MQTT服务器端口 /*****************用户信息项 (全部为自定义项)*****************/ const char* ESP8266_ID = "esp8266ID";                 //自定义ID const char* ESP8266_user = "test";                   //用户名 const char* ESP8266_password = "123";              //密码 const char* ESP8266_pub = "esp2/sub";                 //发送主题(对方的订阅主题) const char* ESP8266_sub = "esp2/pub";                 //订阅主题(对方的发送主题) WiFiClient espClient; PubSubClient client(espClient);                      //定义客户端对象
//指定客户端要连接的MQTT服务器IP和端口   client.setServer(mqtt_server, mqttPort);
 //连接MQTT服务器,提交ID,用户名,密码    client.connect(ESP8266_ID, ESP8266_user, ESP8266_password);

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...