#define BLYNK_TEMPLATE_ID "TMPL6PhrUFYP0"
#define BLYNK_TEMPLATE_NAME "Smart Kontak"
#define BLYNK_AUTH_TOKEN "yiUEbyT59f50OtXQavAFqbasAon4u_tY"
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <WiFiManager.h>
#include <LiquidCrystal_I2C.h>
// Pin relay
const int relayPin = D4; // Sesuaikan dengan pin yang Anda gunakan
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Connecting to WiFi...");
// Inisialisasi WiFiManager
WiFiManager wifiManager;
wifiManager.resetSettings();
wifiManager.autoConnect("SMART_KONTAK"); // Nama AP yang akan digunakan jika tidak ada koneksi WiFi
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi Connected");
lcd.setCursor(0, 1);
lcd.print("SSID: ");
lcd.print(WiFi.SSID());
lcd.setCursor(0, 2);
lcd.print("IP: ");
lcd.print(WiFi.localIP());
// Inisialisasi Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, WiFi.SSID().c_str(), WiFi.psk().c_str());
// Update LCD setelah terhubung ke Blynk
lcd.setCursor(0, 3);
lcd.print("Blynk Connected ");
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Matikan relay saat startup
}
void loop() {
Blynk.run();
}
// Fungsi ini akan dipanggil setiap kali ada perubahan state di aplikasi Blynk
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
digitalWrite(relayPin, !pinValue); // Relay biasanya aktif rendah, jadi kita invert nilai
// Update LCD sesuai status relay
if (pinValue == 1) {
lcd.clear();
lcd.setCursor(4, 1);
lcd.print("SMART_KONTAK");
lcd.setCursor(6, 2);
lcd.print("Relay ON ");
} else {
lcd.setCursor(6, 2);
lcd.print("Relay OFF ");
}
}