ESP8266 毗连 MQTT 服务器EMQX 毗连MQTTX

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

目录

1.先用有一台自己的云服务器
2. 使用FinalShell毗连阿里云云服务器ECS
3.安装宝塔
4.在云服务器打开8888端口
5.使用外网面板地址打开宝塔面板
6.安装Docker

7.下载emqx
8.打开emqxWeb 界面
9.下载MQTTX
10.EMQX加一个客户端
11.开始通讯
12.加入单片机ESP8266


1.先用有一台自己的云服务器

我使用的是阿里云服务器ECS
阿里云
https://www.aliyun.com/?spm=5176.29188366.J_4VYgf18xNlTAyFFbOuOQe.2.2ed63e4dKVYu9u

2. 使用FinalShell毗连阿里云云服务器ECS


在云服务器管理控制台内里,点击实例,然后点击更多操纵


然后点击重置实例暗码

 

修改完暗码重启一下

就可以了




然后就可以毗连了
如果不行的话,就

管理规则,入方向,快速添加


然后重启实例,再重新毗连就可以了
3.安装宝塔

点击 宝塔网站

选择Linux

  1. url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec
复制代码
然后打开在finalshell内里输入这句代码,就可以安装宝塔了
安装完结尾会有一大串信息
记着面板账户登录信息
 外网面板地址: 
 内网面板地址: 
 username: 
 password: 
4.在云服务器打开8888端口

由于宝塔用的是8888端口





5.使用外网面板地址打开宝塔面板

首次进入,根据提示做吧,根据自己生存的信息

6.安装Docker

点击就行了,很简单的



7.下载emqx

点就行了,很简单的

8.打开emqxWeb 界面


然后进入
ip:18083 
如果进入不了,就去服务器那里放行18083端口,都应该会了吧

9.下载MQTTX

这个下不下都可以吧,只是可以模拟一个客户端
https://mqttx.app/zh/downloads

直接无脑下就可以了,然后打开



要是不行的话,就去服务器放行1883端口
10.EMQX加一个客户端



11.开始通讯

可以看到毗连数已经是2了,一个是在EMQX网页的客户端,一个是你下载的MQTTX的客户端


在EMQX客户端设置发布和订阅的主题都为topic

在MQTTX设置主题与发布的内容


发送后,在web端接收成功

在web端发送,在MQTTX端接收


在MQTTX也可以成功接收

成功了
12.加入单片机ESP8266

开发板是这个

单片机代码如下
  1. #include <ESP8266WiFi.h>
  2. #include <PubSubClient.h>
  3. const int ledPin = D8; // LED连接到的GPIO引脚
  4. const char* ssid = "wifi名字";
  5. const char* password = "wifi密码";
  6. const char* mqtt_server_ip = "你自己的ip"; // 直接使用 IP 地址
  7. const int mqtt_port = 1883;
  8. const char* mqtt_client_id = "pc";
  9. const char* mqtt_user = "你EMQX设置的用户名(如果有)";
  10. const char* mqtt_password = "密码";
  11. WiFiClient espClient;
  12. PubSubClient client(espClient);
  13. void callback(char* topic, byte* payload, unsigned int length);
  14. void setup() {
  15.   Serial.begin(9600);
  16.   Serial.println("Connecting to WiFi");
  17.   // 设置D8引脚为输出模式
  18.   pinMode(ledPin, OUTPUT);
  19.   WiFi.begin(ssid, password);
  20.   while (WiFi.status() != WL_CONNECTED) {
  21.     delay(500);
  22.     Serial.print(".");
  23.   }
  24.   Serial.println("");
  25.   Serial.println("WiFi connected");
  26.   Serial.print("IP address: ");
  27.   Serial.println(WiFi.localIP());
  28.   client.setServer(mqtt_server_ip, mqtt_port); // 使用 IP 地址代替域名
  29.   client.setCallback(callback);
  30.   // 尝试连接到 MQTT 服务器
  31.   while (!client.connect(mqtt_client_id, mqtt_user, mqtt_password)) {
  32.     Serial.println("Failed to connect to MQTT server, retrying...");
  33.     delay(5000); // 重试连接前等待5秒
  34.   }
  35.   Serial.println("Connected to MQTT server");
  36.   client.subscribe("topic");  //你自己订阅的主题
  37. }
  38. void loop() {
  39.   if (!client.connected()) {
  40.     Serial.println("Reconnecting to MQTT server...");
  41.     while (!client.connect(mqtt_client_id, mqtt_user, mqtt_password)) {
  42.       delay(5000); // 重试连接前等待5秒
  43.     }
  44.     Serial.println("Connected to MQTT server");
  45.     client.subscribe("led");
  46.   }
  47.   client.loop();
  48. }
  49. void callback(char* topic, byte* payload, unsigned int length) {
  50.   Serial.print("Message arrived [");
  51.   Serial.print(topic);
  52.   Serial.print("] ");
  53.   char message[length + 1];
  54.   for (int i = 0; i < length; i++) {
  55.     message[i] = (char)payload[i];
  56.   }
  57.   message[length] = '\0';
  58.   Serial.println(message);
  59.   
  60. }
复制代码
接入单片机,打开串口


客户端发送,esp8266接收


esp8266成功接收

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表