ESP8266 连接 MQTT 服务器EMQX 连接MQTTX

目录

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

[2. 使用FinalShell连接阿里云云服务器ECS](#2. 使用FinalShell连接阿里云云服务器ECS)

3.安装宝塔

4.在云服务器打开8888端口

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

6.安装Docker

7.下载emqx

[8.打开emqxWeb 界面](#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

复制代码
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

开发板是这个

单片机代码如下

cpp 复制代码
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const int ledPin = D8; // LED连接到的GPIO引脚

const char* ssid = "wifi名字";
const char* password = "wifi密码";
const char* mqtt_server_ip = "你自己的ip"; // 直接使用 IP 地址
const int mqtt_port = 1883;
const char* mqtt_client_id = "pc";
const char* mqtt_user = "你EMQX设置的用户名(如果有)"; 
const char* mqtt_password = "密码"; 

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char* topic, byte* payload, unsigned int length);

void setup() {
  Serial.begin(9600);
  Serial.println("Connecting to WiFi");

  // 设置D8引脚为输出模式
  pinMode(ledPin, OUTPUT);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  client.setServer(mqtt_server_ip, mqtt_port); // 使用 IP 地址代替域名
  client.setCallback(callback);

  // 尝试连接到 MQTT 服务器
  while (!client.connect(mqtt_client_id, mqtt_user, mqtt_password)) {
    Serial.println("Failed to connect to MQTT server, retrying...");
    delay(5000); // 重试连接前等待5秒
  }

  Serial.println("Connected to MQTT server");
  client.subscribe("topic");  //你自己订阅的主题
}

void loop() {
  if (!client.connected()) {
    Serial.println("Reconnecting to MQTT server...");
    while (!client.connect(mqtt_client_id, mqtt_user, mqtt_password)) {
      delay(5000); // 重试连接前等待5秒
    }
    Serial.println("Connected to MQTT server");
    client.subscribe("led");
  }

  client.loop();
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");

  char message[length + 1];
  for (int i = 0; i < length; i++) {
    message[i] = (char)payload[i];
  }
  message[length] = '\0';

  Serial.println(message);

  
}

接入单片机,打开串口

客户端发送,esp8266接收

esp8266成功接收

相关推荐
java_logo2 分钟前
Docker 容器化部署 QINGLONG 面板指南
java·运维·docker·容器·eureka·centos·rabbitmq
Nie_Xun20 分钟前
Ubuntu 安装与 NVIDIA 显卡驱动配置 2篇
linux·运维·ubuntu
HIT_Weston23 分钟前
25、【Ubuntu】【远程开发】内网穿透:密钥算法介绍(一)
linux·运维·tcp/ip·ubuntu
9ilk24 分钟前
【基于one-loop-per-thread的高并发服务器】--- 自主实现HttpServer
linux·运维·服务器·c++·笔记·后端
LFly_ice37 分钟前
Docker核心概念与实战指南
运维·docker·容器
Once_day1 小时前
Linux之rsyslog(4)属性配置
linux·服务器
waving-black1 小时前
Linux中自定义服务开机自启nginx
linux·服务器·nginx
Lenyiin1 小时前
《 Linux 修炼全景指南: 六 》软件包管理器
linux·运维·服务器
陌路201 小时前
Linux32 网络编程TCP通信(缓冲区问题)
服务器·网络·tcp/ip
NiKo_W1 小时前
Linux 重定向与Cookie
linux·运维·服务器·前端·网络·线程·协议