#include <WiFi.h>
#include <DHT.h>
#include <FirebaseArduino.h>
#include <PubSubClient.h>
// Replace with your Wi-Fi credentials
const char* ssid = "Wokwi-Guest";
const char* password = "YourWiFiPassword";
// Your Firebase project credentials
const char* firebaseHost = "https://ibmgr1-default-rtdb.firebaseio.com/ibmgr1";
const char* firebaseAuth = "AIzaSyBy9qLB8-kIxS1Kftv3I6pY3aVWmOI83w8";
const int DHTPin = 4; // Pin to which the DHT sensor is connected
DHT dht(DHTPin, DHT22);
// MQTT Broker
const char* mqttServer = "ed342ccf55c1484eb534c8c92861048b.s2.eu.hivemq.cloud"; // Replace with your MQTT broker address
const int mqttPort = 8883;
const char* mqttUser = "aiyengar";
const char* mqttPassword = "Mh12hn4226!!!";
const char* mqttTopic = "/ESP32";
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize Firebase
Firebase.begin(firebaseHost, firebaseAuth);
// MQTT setup
mqttClient.setServer(mqttServer, mqttPort);
mqttClient.setCallback(mqttCallback);
// Connect to MQTT broker
if (mqttClient.connect("ESP32Client", mqttUser, mqttPassword)) {
Serial.println("Connected to MQTT broker");
}
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!isnan(humidity) && !isnan(temperature)) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Firebase
Firebase.pushFloat("/environment/temperature", temperature);
Firebase.pushFloat("/environment/humidity", humidity);
// MQTT publish
String tempPayload = String(temperature);
String humidityPayload = String(humidity);
mqttClient.publish((String(mqttTopic) + "/temperature").c_str(), tempPayload.c_str());
mqttClient.publish((String(mqttTopic) + "/humidity").c_str(), humidityPayload.c_str());
} else {
Serial.println("Failed to read from DHT sensor");
}
mqttClient.loop();
delay(60000); // Send data every 60 seconds
}
void mqttCallback(char* topic, byte* payload, unsigned int length) {
// Handle MQTT subscription messages if needed
}