#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
WiFiClient client;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
long myChannelNumber=2733572;
const char * myWriteAPIKey="ZBBQVSGAR44UTDRI";
int statusCode;
int thread = -1;
int yieldprod = 0;
const int tempPin = 15;
const int ldrPin = 34;
const int vgled = 26;
const int gled = 25;
const int aled = 27;
const int bled = 12;
const int vbled = 13;
DHTesp dht;
void setup() {
Serial.begin(115200);
dht.setup(tempPin, DHTesp::DHT22);
ThingSpeak.begin(client);
pinMode(vgled, OUTPUT);
pinMode(gled, OUTPUT);
pinMode(aled, OUTPUT);
pinMode(bled, OUTPUT);
pinMode(vbled, OUTPUT);
WiFi.begin(ssid,pass);
Serial.println("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
}
void loop() {
float temp = dht.getTemperature();
float humi = dht.getHumidity();
int moist = analogRead(ldrPin);
if (isnan(temp) || isnan(humi)) return;
digitalWrite(vgled, LOW);
digitalWrite(gled, LOW);
digitalWrite(aled, LOW);
digitalWrite(bled, LOW);
digitalWrite(vbled, LOW);
Serial.println("Temperature: " + String(temp));
Serial.println("Humidity: " + String(humi));
Serial.println("Moisture: " + String(moist));
if (temp > 20 && temp < 30 && humi > 60 && humi < 80 && moist > 800) {
digitalWrite(vgled, HIGH);
thread = 0;
yieldprod = 90;
}
else if (temp > 18 && temp < 32 && humi > 55 && humi < 75 && moist > 700) {
digitalWrite(gled, HIGH);
thread = 1;
yieldprod = 70;
}
else if (temp > 15 && temp < 35 && humi > 50 && humi < 70 && moist > 600) {
digitalWrite(aled, HIGH);
thread = 2;
yieldprod = 50;
}
else if (temp > 10 && temp < 40 && humi > 45 && humi < 65 && moist > 400) {
digitalWrite(bled, HIGH);
thread = 3;
yieldprod = 30;
}
else {
digitalWrite(vbled, HIGH);
thread = 4;
yieldprod = 10;
}
// Update ThingSpeak fields
ThingSpeak.setField(1, humi);
ThingSpeak.setField(2, temp);
ThingSpeak.setField(3, moist);
ThingSpeak.setField(4, yieldprod);
ThingSpeak.setField(5, thread);
statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (statusCode == 200) {
Serial.println("Data sent to ThingSpeak successfully");
} else {
Serial.println("Failed to send data to ThingSpeak");
}
delay(15000);
}