麻花痒 发表于 2024-11-4 23:44:01

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
阿里云https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83Ahttps://www.aliyun.com/?spm=5176.29188366.J_4VYgf18xNlTAyFFbOuOQe.2.2ed63e4dKVYu9u
https://i-blog.csdnimg.cn/blog_migrate/d89fa8b0581497304c5c3ffff64697f3.png
2. 使用FinalShell毗连阿里云云服务器ECS


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

https://i-blog.csdnimg.cn/direct/6fcb10db2b8944c5b9296a80324d80d5.png
然后点击重置实例暗码https://i-blog.csdnimg.cn/direct/06b7c139a7a04c87975a3c289dac574c.png
 https://i-blog.csdnimg.cn/direct/8332d1d90d5b499d85d053fb6cdb50cf.png
修改完暗码重启一下
https://i-blog.csdnimg.cn/direct/5ff9d4280e034165b6e8d4e8aa3aa38b.png
就可以了
https://i-blog.csdnimg.cn/direct/be5f575f0aa0425693e25cd7711ee476.png
https://i-blog.csdnimg.cn/direct/8a20162b2023435db6f644ad1a0c2d05.png
https://i-blog.csdnimg.cn/direct/40ea8a3f0a7a480f82b7ea817575d578.png
https://i-blog.csdnimg.cn/direct/77c3d7d3556042ac818373cce30ac3a7.png
然后就可以毗连了
如果不行的话,就
https://i-blog.csdnimg.cn/direct/9f0637af4f8340079790d87f32356089.png
管理规则,入方向,快速添加
https://i-blog.csdnimg.cn/direct/314029e5411b4642b5f2851b93ea4f5f.png
https://i-blog.csdnimg.cn/direct/4ab46b36039b423b98051cf02e89d996.png
然后重启实例,再重新毗连就可以了
3.安装宝塔

点击 宝塔网站
https://i-blog.csdnimg.cn/direct/c18e69c45288457ea7787315427d88c1.png
选择Linux
https://i-blog.csdnimg.cn/direct/6a5fe51eea274b499d06b897f3717204.png
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端口

https://i-blog.csdnimg.cn/direct/57a200b87ae64a49b1a5c9356128b332.png



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

首次进入,根据提示做吧,根据自己生存的信息
https://i-blog.csdnimg.cn/direct/c90b8c7da17f457589b3fdb32cd650b1.png
6.安装Docker

点击就行了,很简单的
https://i-blog.csdnimg.cn/direct/ee78092722e245be8bc70262c9669c19.png


7.下载emqx

点就行了,很简单的
https://i-blog.csdnimg.cn/direct/7cdce630d5b04a6998c175d4a28fce6b.png
8.打开emqxWeb 界面

https://i-blog.csdnimg.cn/direct/55c615124f214c8fa363519cd3dd6d82.png
然后进入
ip:18083 
如果进入不了,就去服务器那里放行18083端口,都应该会了吧
https://i-blog.csdnimg.cn/direct/842e36f2a05b4d8787d4ea71d4848855.png
9.下载MQTTX

这个下不下都可以吧,只是可以模拟一个客户端
https://mqttx.app/zh/downloads
https://i-blog.csdnimg.cn/direct/fa28a433d6294f529a6703b27010d32b.png
直接无脑下就可以了,然后打开
https://i-blog.csdnimg.cn/direct/5eaae1613a374c9a840499e68aa057a7.png
https://i-blog.csdnimg.cn/direct/b2732f307e5b4bc0a19fb2b43153512b.png
https://i-blog.csdnimg.cn/direct/49ffd35ec3a84a77834277667e479f2f.png
要是不行的话,就去服务器放行1883端口
10.EMQX加一个客户端

https://i-blog.csdnimg.cn/direct/813193baa4404d2f92f07ae9ddc838bb.png
https://i-blog.csdnimg.cn/direct/e61670b19097443e932aa6a8e716a354.png
11.开始通讯

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

https://i-blog.csdnimg.cn/direct/cc63ce199cdf4085b58de65c8896d6c1.png
在EMQX客户端设置发布和订阅的主题都为topic
https://i-blog.csdnimg.cn/direct/cb518080a45c4790a7cbc66b9ce6dca5.png
在MQTTX设置主题与发布的内容
https://i-blog.csdnimg.cn/direct/4cbe5a9cbcfc46bbb06e4fc612fe57e3.png
https://i-blog.csdnimg.cn/direct/9e0478a8085d4b309c04eb5e5ff50677.png
发送后,在web端接收成功
https://i-blog.csdnimg.cn/direct/4f53629d23cd49968cfd747d6ca1298e.png
在web端发送,在MQTTX端接收
https://i-blog.csdnimg.cn/direct/cac47020ab3847699044819a26a398b6.png

在MQTTX也可以成功接收
https://i-blog.csdnimg.cn/direct/aa2c4ee9958544419df8ba188d60176b.png
成功了
12.加入单片机ESP8266

开发板是这个
https://i-blog.csdnimg.cn/direct/1801f1541b1c401cab2e04d4fee4afb7.png
单片机代码如下
#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;
for (int i = 0; i < length; i++) {
    message = (char)payload;
}
message = '\0';

Serial.println(message);


} 接入单片机,打开串口
https://i-blog.csdnimg.cn/direct/8aead9b432bb4fde8c204807f326a0a6.png
https://i-blog.csdnimg.cn/direct/0f56ecb1eae542378882d188386c8526.png
客户端发送,esp8266接收
https://i-blog.csdnimg.cn/direct/d08fec4fd0f84b27a75d206434907892.png
https://i-blog.csdnimg.cn/direct/084fa7e642c44ed7bd43e0e6f4302dd0.png
esp8266成功接收

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