#include <Arduino.h>
#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
//Provide the token generation process info.
#include "addons/TokenHelper.h"
//Provide the RTDB payload printing info and other helper functions.
#include "addons/RTDBHelper.h"
#define DHTPIN 15
#define DHTTYPE DHT22
// Replace with your network credentials
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// Replace with your Firebase project details
#define FIREBASE_HOST "q4ict276-default-rtdb.firebaseio.com/"
#define FIREBASE_API_KEY "AIzaSyA9uQgSEAIbs4xJ89YZvK2g7nTntWX0-wk"
DHT dht(DHTPIN, DHTTYPE);
FirebaseData firebaseData;
FirebaseConfig firebaseConfig;
FirebaseAuth firebaseAuth;
unsigned long sendDataPrevMillis = 0;
int count = 0;
bool signupOK = false;
void setup(){
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
// Set Firebase configuration and authentication details
firebaseConfig.database_url = FIREBASE_HOST;
firebaseConfig.api_key = FIREBASE_API_KEY;
/* Sign up */
if (Firebase.signUp(&firebaseConfig, &firebaseAuth, "", "")){
Serial.println("ok");
signupOK = true;
}
else{
Serial.printf("%s\n", firebaseConfig.signer.signupError.message.c_str());
}
/* Assign the callback function for the long running token generation task */
firebaseConfig.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
// Connect to Firebase
Firebase.begin(&firebaseConfig, &firebaseAuth);
Firebase.reconnectWiFi(true);
// Initialize DHT sensor
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Send data to Firebase
if (Firebase.setFloat(firebaseData, "/temperature", temperature)) {
Serial.println("Temperature data sent successfully!");
} else {
Serial.println("Failed to send temperature data");
Serial.println(firebaseData.errorReason());
}
if (Firebase.setFloat(firebaseData, "/humidity", humidity)) {
Serial.println("Humidity data sent successfully!");
} else {
Serial.println("Failed to send humidity data");
Serial.println(firebaseData.errorReason());
}
delay(2000); // Delay for 2 seconds before the next loop
}
// package com.example.weathermonitor;
// import androidx.appcompat.app.AppCompatActivity;
// import android.os.Bundle;
// import android.widget.TextView;
// import com.google.firebase.database.*;
// public class MainActivity extends AppCompatActivity {
// private TextView tempText, humidityText;
// private DatabaseReference databaseReference;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// tempText = findViewById(R.id.tempText);
// humidityText = findViewById(R.id.humidityText);
// databaseReference = FirebaseDatabase.getInstance().getReference("Weather-Monitoring");
// databaseReference.child("Temperature").addValueEventListener(new ValueEventListener() {
// @Override
// public void onDataChange(DataSnapshot snapshot) {
// if (snapshot.exists()) {
// tempText.setText("Temperature: " + snapshot.getValue() + " °C");
// }
// }
// @Override
// public void onCancelled(DatabaseError error) { }
// });
// databaseReference.child("Humidity").addValueEventListener(new ValueEventListener() {
// @Override
// public void onDataChange(DataSnapshot snapshot) {
// if (snapshot.exists()) {
// humidityText.setText("Humidity: " + snapshot.getValue() + " %");
// }
// }
// @Override
// public void onCancelled(DatabaseError error) { }
// });
// }
// }
// <?xml version="1.0" encoding="utf-8"?>
// <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
// android:layout_width="match_parent"
// android:layout_height="match_parent"
// android:orientation="vertical"
// android:gravity="center"
// android:padding="20dp">
// <TextView
// android:id="@+id/tempText"
// android:layout_width="wrap_content"
// android:layout_height="wrap_content"
// android:text="Temperature: -- °C"
// android:textSize="22sp"
// android:textStyle="bold"
// android:padding="10dp"/>
// <TextView
// android:id="@+id/humidityText"
// android:layout_width="wrap_content"
// android:layout_height="wrap_content"
// android:text="Humidity: -- %"
// android:textSize="22sp"
// android:textStyle="bold"
// android:padding="10dp"/>
// </LinearLayout>