//#include <ESP8266WiFi.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// WiFi Parameters
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// MQTT Server Parameters
const char* MQTT_CLIENT_ID = "esp8266-weather-demo";
const char* MQTT_BROKER = "broker.mqttdashboard.com";
const char* MQTT_USER = "";
const char* MQTT_PASSWORD = "";
const char* MQTT_TOPIC = "wokwi-weather";
const int DHT_PIN = 15; // Pin D4 on NodeMCU
DHT dht(DHT_PIN, DHT22);
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
delay(10);
Serial.print("Connecting to WiFi");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected!");
client.setServer(MQTT_BROKER, 1883);
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
Serial.print("Measuring weather conditions... ");
if (isnan(temp) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println("Updated!");
// Create JSON message
String message = "{\"temp\":" + String(temp) + ",\"humidity\":" + String(humidity) + "}";
// Publish message to MQTT topic
Serial.print("Reporting to MQTT topic ");
Serial.print(MQTT_TOPIC);
Serial.print(": ");
Serial.println(message);
client.publish(MQTT_TOPIC, message.c_str());
delay(1000);
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4