#include "DHTesp.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include "ThingSpeak.h"
const int DHT_PIN = 15;
const int LED_MERAH_PIN = 32;
const int LED_HIJAU_PIN = 27;
const int LDR_PIN = 34; // Pin analog untuk LDR
const int BATAS_CAHAYA = 500; // Batas untuk nilai cahaya, sesuaikan sesuai dengan kalibrasi Anda
// connection
const char *ssid = "Wokwi-GUEST";
const char *pwd = "";
WiFiClient client;
unsigned long myChannelNumber = 2 ;
const char* myWriteAPIKey = "THGX3BFIRLUZCA5Z";
const char* server = "api.thingspeak.com";
unsigned long lastTime = 0 ;
unsigned long timeDelay = 30000 ;
int temperatureC; // Mendeklarasikan variabel suhu
int humidity; // Mendeklarasikan variabel kelembaban
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_MERAH_PIN, OUTPUT);
pinMode(LED_HIJAU_PIN, OUTPUT);
WiFi.begin(ssid, pwd);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(400);
}
Serial.println("wifi connected");
Serial.println(WiFi.localIP()); // Mengganti Wifi menjadi WiFi
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
temperatureC = dhtSensor.getTemperature();
Serial.print("Temperature (°C): ");
Serial.println(temperatureC);
humidity = dhtSensor.getHumidity();
Serial.print("humidity (%): ");
Serial.println(humidity);
// Membaca nilai LDR
int nilaiLDR = analogRead(LDR_PIN);
// Konversi nilai LDR menjadi nilai cahaya
int nilaiCahaya = map(nilaiLDR, 0, 1023, 0, 255); // Sesuaikan rentang sesuai dengan kalibrasi Anda
Serial.println("Light Value: " + String(nilaiCahaya));
Serial.println("---");
if (temperatureC < 30.0) {
analogWrite(LED_MERAH_PIN, 0); // Lampu merah - Mati
analogWrite(LED_HIJAU_PIN, nilaiCahaya); // Lampu hijau - Sesuai dengan nilai cahaya
} else {
analogWrite(LED_MERAH_PIN, nilaiCahaya); // Lampu merah - Sesuai dengan nilai cahaya
analogWrite(LED_HIJAU_PIN, 0); // Lampu hijau - Mati
}
ThingSpeak.setField(1, temperatureC);
ThingSpeak.setField(2, humidity);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Channel update succsess. ");
}
else {
Serial.println("Problem updating channel. HTTP error code" + String(x));
}
delay(1500); // Tunggu untuk membaca sensor kembali
}