#include <WiFi.h>
#include <HTTPClient.h>
#include "DHTesp.h"
// WiFi Wokwi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak
String writeAPIKey = "A6GO86RO0MDEFHFX";
// Pin
const int DHT_PIN = 15;
const int LED_LAMPU = 18;
const int LED_KIPAS = 19;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_LAMPU, OUTPUT);
pinMode(LED_KIPAS, OUTPUT);
WiFi.begin(ssid, password);
Serial.print("Menghubungkan WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Terhubung!");
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float suhu = data.temperature;
float hum = data.humidity;
int lamp = 0;
int fan = 0;
if (suhu > 30) {
digitalWrite(LED_KIPAS, HIGH);
digitalWrite(LED_LAMPU, LOW);
fan = 1;
}
else if (suhu < 25) {
digitalWrite(LED_LAMPU, HIGH);
digitalWrite(LED_KIPAS, LOW);
lamp = 1;
}
else {
digitalWrite(LED_LAMPU, LOW);
digitalWrite(LED_KIPAS, LOW);
}
Serial.print("Suhu : ");
Serial.print(suhu);
Serial.print(" C | Humidity : ");
Serial.println(hum);
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = "http://api.thingspeak.com/update?api_key=" +
writeAPIKey +
"&field1=" + String(suhu) +
"&field2=" + String(hum) +
"&field3=" + String(lamp) +
"&field4=" + String(fan);
http.begin(url);
int httpCode = http.GET();
Serial.print("HTTP Response: ");
Serial.println(httpCode);
http.end();
}
delay(20000); // ThingSpeak minimal 15 detik
}