#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h> // Include the DHT library
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* ap_ssid = "Access-Point";
const char* ap_password = "123456789";
const char* mqtt_server = "192.168.1.100"; // IP address of your MQTT broker
WiFiServer server(1883);
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
#define DHTPIN 4 // Pin where the DHT22 sensor is connected
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// Connect to WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.print(".");
}
Serial.println();
Serial.println("Connected");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Start MQTT server
server.begin();
Serial.println("MQTT broker started");
mqttClient.setServer(mqtt_server, 1883);
dht.begin(); // Initialize DHT sensor
}
void loop() {
mqttClient.loop();
// Read temperature and humidity from DHT sensor
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(); // Celsius
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print temperature and humidity to serial monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
// Publish temperature and humidity to MQTT topic
char tempString[8];
char humString[8];
dtostrf(temperature, 4, 2, tempString);
dtostrf(humidity, 4, 2, humString);
mqttClient.connect("ESP32Client");
if (mqttClient.connected()) {
mqttClient.publish("home/temperature", tempString);
mqttClient.publish("home/humidity", humString);
} else {
Serial.println("Failed to connect to MQTT broker!");
}
delay(5000); // Wait 5 seconds before publishing again
}