记录ESP32+WIFI+MQTT使用

 MQTT使用的是本地的MQTT服务器(emqx下载

#include <WiFi.h>
#include <PubSubClient.h>

long lastMsg = 0;

//wifi+MQTT
long lastMsg = 0;
const char *ssid="xxx";  //wifi name
const char *password = "xxx";
const char *mqtt_server = "192.168.xx.xx";
const int mqtt_port = 1883;
const char* topic="xxxx"; //发送消息的主题
const char* resTopic="xxx"; //接受消息的主题 


WiFiClient espClient;
PubSubClient client(espClient);


void callback(char* topic, byte* payload, unsigned int length) {
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    String receivedMessage = "";
    for (int i = 0; i < length; i++) {
      receivedMessage += (char)payload[i];
    }
    Serial.println(receivedMessage);

}
void setup() {

  Serial.begin(115200);
  delay(2000); // 等待串口稳定

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connect to WiFi success!!");

  // Connect to MQTT
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);  //获取订阅主题的消息

}

void loop() {
    if(!client.connected()){
      reconnect();
     }
    client.loop();
    

    //mqtt发送数据
    sendData();
    delay(1000); // Adjust delay as needed
}
void reconnect() {
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
    if (client.connect("ESP32Client")) {
      Serial.println("Connect to MQTT success!!");
      client.subscribe(resTopic);    // 订阅主题
    } else {
      Serial.print("Failed, rc=");
      Serial.print(client.state());
      Serial.println("Retrying in 5 seconds...");
      delay(5000);
    }
  }
}
void sendData() {
  long now = millis();
  //每5秒发送一次
   if (now - lastMsg > 5000) {
    lastMsg=now;
    String payload = "xxxx";   //要发送的内容
    Serial.print("Publish message: ");
     Serial.println(payload);
    client.publish(topic, payload.c_str());  //发布主题
  }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值