#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
#define DHTPIN 9 // DHT22 data pin connected to GPIO 15
#define DHTTYPE DHT22
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "broker.hivemq.com"; // Public MQTT broker for demo
DHT dht(DHTPIN, DHTTYPE);
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32Client")) break;
delay(5000);
}
}
void setup() {
Serial.begin(115200);
dht.begin();
setup_wifi();
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
float temperature = dht.readTemperature();
if (!isnan(temperature)) {
char tempString[8];
dtostrf(temperature, 1, 2, tempString);
client.publish("wokwi/esp32/dht22/temperature", tempString);
Serial.print("Published temp: ");
Serial.println(tempString);
}
delay(5000); // publish every 5 seconds
}