#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
// Firebase config
#define FIREBASE_HOST "https://nhet-9909b-default-rtdb.firebaseio.com/" // Firebase URL
#define FIREBASE_AUTH "1JQ2ymw72vUk4kdfYs1LZxch9GPfgmVykoHgSkBh" // Firebase Auth Key
// Wi-Fi config
#define WIFI_SSID "Wokwi-GUEST" // Wi-Fi name
#define WIFI_PASSWORD "" // Wi-Fi password (public network)
// DHT sensor config
#define DHTPIN 4 // GPIO pin connected to DHT22 sensor
#define DHTTYPE DHT22 // Specify DHT sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE); // Create a DHT object
// Variables to store temperature and humidity
float temperature = 0.0;
float humidity = 0.0;
void connectWiFi() {
Serial.print("Connecting to Wi-Fi...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println(" Connected!");
}
void sendDataToFirebase(float temp, float hum) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// Combine data into a single JSON payload
String url = String(FIREBASE_HOST) + "/SensorData.json?auth=" + FIREBASE_AUTH;
http.begin(url);
http.addHeader("Content-Type", "application/json");
String payload = "{\"temperature\": " + String(temp) + ", \"humidity\": " + String(hum) + "}";
int httpCode = http.POST(payload);
Serial.print("HTTP Response Code: ");
Serial.println(httpCode);
http.end();
} else {
Serial.println("Wi-Fi not connected!");
}
}
void setup() {
Serial.begin(115200);
connectWiFi();
dht.begin(); // Initialize DHT sensor
}
void loop() {
// Read temperature and humidity using DHT library
humidity = dht.readHumidity();
temperature = dht.readTemperature();
// Check if reading was successful
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
} else {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Send data to Firebase
sendDataToFirebase(temperature, humidity);
}
delay(5000); // Wait 5 seconds before the next read
}