#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#include <WiFi.h>
#include <HTTPClient.h>
const char ssid[] = "Wokwi-GUEST";
const char password[] = "";
const int dht = 15;
int lcdColumns = 16;
int lcdRows = 2;
int inputPin = 14;
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
String writeData = "https://api.thingspeak.com/update?api_key=J67K3JZJIAIX0D7X";
void setup()
{
pinMode(inputPin, INPUT);
lcd.init();
lcd.backlight();
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.println("-");
}
Serial.println("");
Serial.print("ESP 32 Connected");
Serial.println(WiFi.localIP());
dhtSensor.setup(dht, DHTesp::DHT22);
}
void loop()
{
bool activity = digitalRead(inputPin);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temperature: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
if (activity)
{
Serial.println("Activity: Activity Found!");
}
else
{
Serial.println("Activity: No Activity");
}
Serial.println("*************************************");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(data.temperature);
lcd.write(223);
lcd.print(" ");
lcd.print(data.humidity);
lcd.print("%");
lcd.setCursor(0, 1);
if (activity)
{
lcd.print("Activity Found!");
}
else
{
lcd.print("No Activity");
}
sendData(data.temperature, data.humidity, activity);
delay(500);
}
void sendData(float temperature, float humidity, bool activity)
{
if (WiFi.status() == WL_CONNECTED)
{
HTTPClient http;
http.begin(writeData);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String httpRequestData = "&field1=" + String(temperature) + "&field2=" + String(humidity) + "&field3=" + String(activity);
int httpResponseCode = http.POST(httpRequestData);
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
http.end();
}
else
{
Serial.println("WiFi Disconnected");
}
}