#include <WiFi.h>
#include <WiFiClient.h>
#include <DHT.h>
#include <ThingSpeak.h>

#define DHTPIN 32
#define DHTTYPE DHT22
#define RED_LED 33
#define YELLOW_LED 27
#define BLUE_LED 26

DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "Wokwi-GUEST";
const char* password = "";

WiFiClient client;

unsigned long channelID = 2367345;
const char* writeAPIKey = "6T2CQUYW30SYS2M6";

void setup() {
  Serial.begin(9600);
  dht.begin();

  pinMode(RED_LED, OUTPUT);
  pinMode(YELLOW_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);

  Serial.println("Connecting to WiFi...");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi Connected.");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  ThingSpeak.begin(client);
}

void loop() {
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  if (temperature > 30) {
    digitalWrite(RED_LED, HIGH);
    digitalWrite(YELLOW_LED, LOW);
    digitalWrite(BLUE_LED, LOW);
    Serial.println("\nHava çok sıcak!");
  } else if (temperature > 10) {
    digitalWrite(RED_LED, LOW);
    digitalWrite(YELLOW_LED, HIGH);
    digitalWrite(BLUE_LED, LOW);
    Serial.println("\nHava normal!");
  } else {
    digitalWrite(RED_LED, LOW);
    digitalWrite(YELLOW_LED, LOW);
    digitalWrite(BLUE_LED, HIGH);
    Serial.println("\nHava soğuk!");
  }

  Serial.println("Sıcaklık: " + String(temperature));
  Serial.println("Nem: " + String(humidity));

int response = ThingSpeak.writeField(channelID, 1, temperature, writeAPIKey);
  if (response == 200) {
    Serial.println("Sıcaklık değeri ThingSpeak kanalına yazıldı.");
  } else {
    Serial.println("Sıcaklık değeri ThingSpeak kanalına yazılamadı. Hata kodu: "+ String(response));
  }
 delay(15000); // ThingSpeak'in minimum güncelleme süresi
  int response2 = ThingSpeak.writeField(channelID, 2, humidity, writeAPIKey);
  if (response2 == 200) {
    Serial.println("Nem değeri ThingSpeak kanalına yazıldı.");
  } else {
    Serial.println("Nem değeri ThingSpeak kanalına yazılamadı. Hata kodu: " + String(response2));
  }
  delay(15000); // ThingSpeak'in minimum güncelleme süresi

}