esp8266[ 连接巴发云mqtt/tcp ] 日志2024/6/19_巴法云esp8266-爱代码爱编程
设备:esp8266开发板
库文件:
#include <WiFiManager.h> //自动配网库
#include <PubSubClient.h>//MQTT支持库
#include <ESP8266WiFi.h>//ESP8266支持库
步骤一: 巴法科技&巴法云-巴法设备云-巴法物联网云平台巴法设备云,一站式物联网云平台解决方案https://bemfa.com/
注册账号并创建 MQTT主题:
MQTT连接源码:
#include <WiFiManager.h> // 包含WiFi管理器库
#include <PubSubClient.h> // 包含用于MQTT的PubSubClient库
#include <ESP8266WiFi.h> // 包含ESP8266 WiFi库
// 定义WiFi Manager对象
WiFiManager wifi;
// MQTT服务器的地址和端口
const char* mqttserver = "bemfa.com";
const int prot = 9501;
// 定义WiFi客户端对象
WiFiClient ClientA;
// 定义PubSubClient对象
PubSubClient ClientB(ClientA);
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置MQTT服务器和端口
ClientB.setServer(mqttserver, prot);
Serial.println("");
// 自动连接WiFi
wifi.autoConnect("路由名");//当连接失败可用于ap配网名
//wifi.autoConnect("路由名","密码");//直接连接
// 等待连接完成
delay(2500);
if (WiFi.status() == WL_CONNECTED) {
// 打印本地IP地址
Serial.println(WiFi.localIP());
} else {
// 如果没有连接到WiFi,打印错误信息并等待
delay(2500);
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Failed to connect to Wi-Fi!");
}
}
}
void loop() {
// 等待10毫秒
delay(10);
// 如果MQTT客户端已连接,则执行循环
if (ClientB.connected()) {
// 循环处理MQTT消息
ClientB.loop();
} else {
// 尝试连接到MQTT服务器
connectMQTTServer();
}
// 等待1秒钟
delay(1000);
}
// 连接到MQTT服务器的函数
void connectMQTTServer() {
// 客户端ID
String clientId = "连接标识,你的密匙";
// 使用clientId连接到MQTT服务器
if (ClientB.connect(clientId.c_str())) {
// 延迟200毫秒
delay(200);
// 如果状态为0(已连接)并且订阅了"MQTT"主题,则打印连接成功的消息
if (ClientB.state() == 0 && ClientB.subscribe("MQTT")) {
Serial.println("Connected successfully!");
}
} else {
// 打印连接失败的消息
Serial.println("Failed to connect!");
}
}
TCP连接
TCP 连接源码:
#include <WiFiManager.h> // 包含WiFi管理库
#include <ESP8266WiFi.h> // 包含ESP8266 Wi-Fi库
// 定义Wi-Fi和TCP相关常量
const char* mqttserver = "bemfa.com"; // TCP服务器地址
const int prot = 8344; // TCP服务器端口
WiFiClient ClientA; // 创建一个WiFi客户端对象
void setup() {
Serial.begin(9600); // 开始串行通信
Serial.println("");
wifi.autoConnect("路由器名"); // 自动连接Wi-Fi网络
delay(2500); // 等待2.5秒,以便Wi-Fi稳定连接
if (WiFi.status() == WL_CONNECTED) {
// 如果Wi-Fi已连接
Serial.println(WiFi.localIP()); // 打印本地IP地址
} else {
// 如果Wi-Fi连接失败
delay(2500); // 再等待2.5秒
if (WiFi.status() != WL_CONNECTED) {
Serial.println("联网失败!"); // 打印错误消息
}
}
}
void loop() {
delay(10); // 延时10毫秒
connectTCPServer(); // 调用函数连接TCP服务器
delay(1000); // 每秒执行一次循环
}
// 函数定义:连接TCP服务器
void connectTCPServer() {
// 预定义主题字符串
char topic[100] = "cmd=1&uid=填入你的密匙&topic=MQTT\r\n";
// 使用之前定义的WiFi客户端连接到TCP服务器
if (ClientA.connect(mqttserver, prot)) {
// 如果连接成功
ClientA.print(topic); // 向服务器发送主题字符串
delay(200); // 短暂延时
Serial.println("连接成功!"); // 打印成功信息
} else {
Serial.println("连接失败!"); // 如果连接失败,打印错误信息
}
}
连接成功
官方帮助文档:
MQTT
简介 | 巴法文档中心巴法1.0文档中心https://cloud.bemfa.com/docs/src/mqtt.html
TCP
简介 | 巴法文档中心巴法1.0文档中心https://cloud.bemfa.com/docs/src/tcp.html