#define BLYNK_TEMPLATE_ID "TMPL6s-_piTmH" // Mendefinisikan ID template Blynk
#define BLYNK_TEMPLATE_NAME "CS IOT9 MFarrelAthaillahNugroho 2106733875" // Mendefinisikan nama template Blynk
#define BLYNK_AUTH_TOKEN "DSkzFVUQBTIrsox0TKphMGLt0bjk2l8s" // Mendefinisikan token otentikasi Blynk
#define BLYNK_PRINT Serial // Mendefinisikan output Blynk ke Serial
#define CONTROLLED_PIN 0 // Mendefinisikan pin yang akan dikendalikan oleh Blynk
#include <WiFi.h> // Memasukkan library WiFi untuk ESP32
#include <WiFiClient.h> // Memasukkan library WiFiClient untuk ESP32
#include <BlynkSimpleEsp32.h> // Memasukkan library Blynk untuk ESP32
char blynkAuthToken[] = BLYNK_AUTH_TOKEN; // Menginisialisasi token otentikasi Blynk
char WIFI_SSID[] = "Wokwi-GUEST"; // Mendefinisikan SSID WiFi
char WIFI_PASSWORD[] = ""; // Mendefinisikan password WiFi
// Mendefinisikan pin yang akan dikendalikan melalui aplikasi Blynk
#define CONTROLLED_PIN 0
#define FAN_PIN 2
#define TEMP_PIN 4
// Variabel global untuk menyimpan nilai V0
int acState = 0;
// Fungsi ini akan dipanggil setiap kali widget Button di aplikasi Blynk mengirim nilai ke Virtual Pin V0
BLYNK_WRITE(V0) {
int value = param.asInt(); // Mendapatkan nilai yang dikirim dari aplikasi Blynk
digitalWrite(CONTROLLED_PIN, value); // Mengubah status pin berdasarkan nilai yang diterima
acState = value; // Menyimpan nilai V0 dalam variabel global
Serial.println(String("AC is ") + (value ? "ON" : "OFF")); // Mencetak status AC ke Serial Monitor
}
// Fungsi ini akan dipanggil setiap kali widget Slider di aplikasi Blynk mengirim nilai ke Virtual Pin V1
BLYNK_WRITE(V1) {
if (acState == 1) { // Memeriksa apakah AC sedang menyala
int fanValue = param.asInt(); // Mendapatkan nilai yang dikirim dari aplikasi Blynk
Serial.println("Fan Speed: " + String(fanValue)); // Mengubah status pin berdasarkan nilai yang diterima
Blynk.virtualWrite(V3, 1); // Mengirim sinyal integer ke server Blynk
delay(500); // Menunggu 0.5 detik
Blynk.virtualWrite(V3, 0); // Mengirim sinyal integer ke server Blynk
}
}
// Fungsi ini akan dipanggil setiap kali widget Slider di aplikasi Blynk mengirim nilai ke Virtual Pin V2
BLYNK_WRITE(V2) {
if (acState == 1) { // Memeriksa apakah AC sedang menyala
double tempValue = param.asDouble(); // Mendapatkan nilai yang dikirim dari aplikasi Blynk
char buffer[20];
sprintf(buffer, "Temperature: %.1f", tempValue); // Memformat nilai suhu menjadi string dengan satu titik desimal
Serial.println(buffer); // Mencetak nilai suhu ke Serial Monitor
Blynk.virtualWrite(V3, 1); // Mengirim sinyal integer ke server Blynk
delay(500); // Menunggu 0.5 detik
Blynk.virtualWrite(V3, 0); // Mengirim sinyal integer ke server Blynk
}
}
void setup() {
// Memulai komunikasi serial
Serial.begin(115200);
// Mengatur pin sebagai output
pinMode(CONTROLLED_PIN, OUTPUT);
pinMode(FAN_PIN, OUTPUT);
pinMode(TEMP_PIN, OUTPUT);
// Menghubungkan ke jaringan WiFi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Memulai Blynk
Blynk.begin(blynkAuthToken, WIFI_SSID, WIFI_PASSWORD);
}
void loop() {
// Menjalankan Blynk
Blynk.run();
}