#include <WiFi.h>
#include <DHT.h>
#include <MQTT.h>
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "test.mosquitto.org";
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
WiFiClient wifiClient;
MQTTClient mqtt;
void connectToWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void connectToMQTT() {
mqtt.begin(mqtt_server, wifiClient);
mqtt.connect("NodeMCU");
Serial.println("Connected to MQTT broker");
}
void sendTemperatureHumidity(float temperature, float humidity) {
// Create a JSON object
StaticJsonDocument<256> jsonDocument;
jsonDocument["temperature"] = temperature/1;
jsonDocument["humidity"] = humidity;
// Serialize the JSON object to a string
String jsonString;
serializeJson(jsonDocument, jsonString);
// Publish the JSON payload
mqtt.publish("sensor_data", jsonString.c_str());
}
void setup() {
Serial.begin(115200);
connectToWiFi();
connectToMQTT();
dht.begin();
}
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!isnan(humidity) && !isnan(temperature)) {
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
sendTemperatureHumidity(temperature, humidity);
}
}