当前位置: 首页 > article >正文

ESP8266 连接 MQTT 服务器EMQX 连接MQTTX

目录

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

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

3.安装宝塔

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

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

6.安装Docker

7.下载emqx

8.打开emqxWeb 界面

9.下载MQTTX

10.EMQX加一个客户端

11.开始通信

12.加入单片机ESP8266


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

我使用的是阿里云服务器ECS

阿里云icon-default.png?t=O83Ahttps://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

开发板是这个

单片机代码如下

#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成功接收


http://www.kler.cn/a/374097.html

相关文章:

  • 《神经网络助力战场车辆及部件损毁识别与评估》
  • SpringBoot调用SOAP接口步骤详解。
  • 如何配置,npm install 是从本地安装依赖
  • 大语言模型(LLM)快速理解
  • 锁升级及线程池相关
  • MYSQL-SQL-03-DQL(Data Query Language,数据查询语言)(单表查询)
  • 【分布式技术】分布式序列算法Snowflake深入解读
  • (蓝桥杯C/C++)——STL(下)
  • Vue-cli之库模式以及模块化的魅力 - - 【UMD】
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-9
  • Django后台接口开发
  • 讲一讲 kafka 的 ack 的三种机制?
  • 【全新上线】波克2021天恒系统源码 - 70款娱乐游戏带视频教程支持
  • 分类算法中 XGBoost和LightGBM 的区别简介
  • ubuntu交叉编译zlib库给arm平台使用
  • 校园社团信息管理:Spring Boot技术的最佳实践
  • 自由学习记录(16)
  • 自监督强化学习:对比预测编码(CPC)算法深度解析
  • winSCP使用root账户登录群晖
  • 【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案
  • C++STL——list
  • 论文速读:完全测试时域适应(Test-time Adaptation)目标检测(CVPR2024)
  • python 制作 发货单 (生成 html, pdf)
  • 算法效率的计算
  • C++设计模式结构型模式———适配器模式
  • 分类算法——支持向量机 详解