#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
#include <LiquidCrystal_I2C.h>
const int DHT_PIN = 15;
const int buzzer = 2;
const int LED1 = 25;
const int LED2 = 26;
const int LED3 = 27;
// esp32 wifi parameters
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2308820; //thingspeak channel ID
const char* myApiKey = "2TPP3XJSEVKRQ2PK"; //write API key from ThingSpeak
const char* server = "api.thingspeak.com";
DHTesp dhtSensor;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27,20,4); //setting LCD address
void setup()
{
lcd.init(); //initialize LCD
lcd.backlight(); //brightness for LCD
// initialize DHT22, led's, and the buzzer
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(buzzer, OUTPUT);
//esp32 module code
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
//sensor code
TempAndHumidity data = dhtSensor.getTempAndHumidity();
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
// led code for water detection
if (data.humidity > 90 ) {
digitalWrite(LED1, HIGH);
tone(buzzer, 35);
digitalWrite(buzzer, HIGH);
}else{
digitalWrite(LED1, LOW);
}
if (data.humidity > 40 && data.humidity < 90) {
digitalWrite(LED2, HIGH);
}else{
digitalWrite(LED2, LOW);
}
if (data.humidity < 40 ) {
digitalWrite(LED3, HIGH);
}else{
digitalWrite(LED3, LOW);
}
//Thingspeak code
int x = ThingSpeak.writeFields(myChannelNumber,myApiKey);
//lcd monitor code
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
lcd.setCursor(1,0);
lcd.print("T:");
lcd.print(data.temperature);
lcd.setCursor(2,1);
lcd.print("H:");
lcd.print(data.humidity);
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error" + String(x));
}
Serial.println("---");
delay(10000);
}