esp8266 使用mqtt传输dht11参数
步骤如下:
-
确保你已经安装了MQTT库,例如PubSubClient。
-
连接ESP8266和DHT11。
-
在代码中包含必要的库和声明变量。
#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;
- 在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);
}
}
}
- 在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);
}
- 现在,你可以通过订阅你的MQTT主题来接收ESP8266发送的DHT11数据了。
原文地址: https://www.cveoy.top/t/topic/bcAL 著作权归作者所有。请勿转载和采集!