#include <WiFi.h>
#include "DHTesp.h"
#define DHT_PIN 15
#define RELAYPIN1 12
#define DHT_TYPE DHTesp::DHT22
DHTesp dhtSensor;
bool isFanOn;
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 3600*7
#define UTC_OFFSET_DST 0
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %d-%b-%y | %H:%M:%S");
}
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHT_TYPE);
pinMode(RELAYPIN1, OUTPUT);
digitalWrite(RELAYPIN1, LOW);
isFanOn = false;
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Updating time...");
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
printLocalTime();
}
void loop() {
Serial.println("---");
printLocalTime();
float dataT = dhtSensor.getTemperature();
Serial.println("Temp: " + String(dataT) + "°C");
Serial.println("---");
if (dataT >= 28.5 && isFanOn == false){
isFanOn = true;
delay(1000);
digitalWrite(RELAYPIN1, HIGH);
Serial.println("Kipas Menyala");
} else if (dataT < 28.5 && isFanOn == true) {
isFanOn = false;
delay(1000);
digitalWrite(RELAYPIN1, LOW);
Serial.println("Kipas Mati");
}
delay(10000);
}