步骤如下:

  1. 确保你已经安装了MQTT库,例如PubSubClient。

  2. 连接ESP8266和DHT11。

  3. 在代码中包含必要的库和声明变量。

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "your_MQTT_SERVER";
const char* mqtt_username = "your_MQTT_USERNAME";
const char* mqtt_password = "your_MQTT_PASSWORD";
const char* mqtt_topic = "your_MQTT_TOPIC";

#define DHTPIN D2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

WiFiClient espClient;
PubSubClient client(espClient);

float temperature;
float humidity;
  1. 在setup()中连接WiFi,并连接MQTT服务器。
void setup() {
  Serial.begin(9600);
  dht.begin();
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");

  client.setServer(mqtt_server, 1883);

  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
    if (client.connect("ESP8266Client", mqtt_username, mqtt_password)) {
      Serial.println("Connected to MQTT");
    } else {
      Serial.print("Failed with state ");
      Serial.print(client.state());
      delay(2000);
    }
  }
}
  1. 在loop()中读取DHT11的温度和湿度,并将它们发布到MQTT服务器中。
void loop() {
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor");
    return;
  }

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\tTemperature: ");
  Serial.print(temperature);
  Serial.println(" *C");

  String temperatureString = String(temperature);
  String humidityString = String(humidity);

  client.publish(mqtt_topic, (temperatureString + "," + humidityString).c_str());
  delay(5000);
}
  1. 现在,你可以通过订阅你的MQTT主题来接收ESP8266发送的DHT11数据了。
esp8266 使用mqtt传输dht11参数

原文地址: https://www.cveoy.top/t/topic/bcAL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录