#include <WiFi.h>
#include <DHT.h>
#define FIREBASE_AUTH "z4GRzd1LbNypZOxRM4ptWornyqUK8AbemaJZ2LbR"
#define FIREBASE_HOST "quy123456-3e068-default-rtdb.firebaseio.com"
#define API_KEY "AIzaSyBvtOhf9KMDhitIoXdgECbZm_NORx6kBLo"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define USER_EMAIL "[email protected]"
#define USER_PASSWORD "Quy-0911"
#define DHT_PIN 32 // GPIO pin connected to the DHT22 sensor
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
class FirebaseData {
public:
void begin(const char* host, const char* auth) {}
bool pushJSON(const char* path, const char* data) { return true; }
const char* errorReason() { return ""; }
};
FirebaseData firebaseData;
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize Firebase
firebaseData.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop() {
delay(2000);
// Read temperature and humidity from DHT22 sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C\t");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Push data to Firebase Realtime Database
pushToFirebase(temperature, humidity);
}
void pushToFirebase(float temperature, float humidity) {
String path = "/sensor_data";
String jsonData = "{\"temperature\":" + String(temperature) + ",\"humidity\":" + String(humidity) + "}";
if (firebaseData.pushJSON(path.c_str(), jsonData.c_str())) {
Serial.println("Data pushed to Firebase!");
Serial.println("Temperature: " + String(temperature));
Serial.println("Humidity: " + String(humidity));
} else {
Serial.println("Failed to push data to Firebase!");
Serial.print("Error: ");
Serial.println(firebaseData.errorReason());
}
}