#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#include <ArduinoJson.h>
#define DHT_PIN 15
String serverName = "https://postman-echo.com/post";
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
DHTesp dhtSensor;
void setup() {
//setup for serial communication
Serial.begin(9600);
Serial.print("Connecting to WiFi");
//setup for WiFi connection
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("WiFi Connected!");
Serial.print("ESP32 collecting sensors data");
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("ESP32 collecting data ...");
delay(1000);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
lcd.clear();
lcd.setCursor(0, 0);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int temp = data.temperature;
int humid = data.humidity;
lcd.print("Temp: " + String(temp) + "C");
lcd.setCursor(0, 1);
lcd.print("Humidity: " + String(humid) + "%");
// Log temperature and humidity data
Serial.println("Temp: " + String(temp) + "C");
Serial.println("Humidity: " + String(humid) + "%");
HTTPClient http;
http.begin(serverName.c_str()); // Send HTTP POST request
http.addHeader("Content-Type", "application/json");
// Create JSON document
StaticJsonDocument<200> doc;
doc["temp"] = temp;
doc["humid"] = humid;
// Serialize JSON document
String requestBody;
serializeJson(doc, requestBody);
int httpResponseCode = http.POST(requestBody);
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: "); Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.print("Error code: "); Serial.println(httpResponseCode);
}
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
delay(3000);
}