//#define BLYNK_TEMPLATE_ID "TMPL6y_evQ3cH"
//#define BLYNK_TEMPLATE_NAME "KONTROL SUHU DAN LAMPU"
//#define BLYNK_AUTH_TOKEN "z9kEs23g-ZkAbLVdyIA5bAOMMqbZf11_"
#define BLYNK_TEMPLATE_ID "TMPL6y_evQ3cH"
#define BLYNK_TEMPLATE_NAME "KONTROL SUHU DAN LAMPU"
#define BLYNK_AUTH_TOKEN "z9kEs23g-ZkAbLVdyIA5bAOMMqbZf11_"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#include "DHT.h"
//#define DHTPIN 5 //PIN DHT11 DI KONEKAN KE PIN DIGITAL 13 (BISA GUNAKAN PIN LAIN SELAIN DO DAN D1)
//#define DHTTYPE DHT22
// Set alamat I2C serta jenis LCD
// Alamt I2C adalah 0x27
LiquidCrystal_I2C lcd (0x27, 16, 2); //alamt I2C adalah 0x27
//DHT dht(DHTPIN, DHTTYPE);
//int powerPin = 4; // untuk pengganti vcc/5 volt (vcc sensor ke pin3)
//void suhu () {
//#define BLYNK_TEMPLATE_ID "TMPL6d2LrvgbC"
//#define BLYNK_TEMPLATE_NAME "latihan login blynk"
//#define BLYNK_AUTH_TOKEN "X8lHCgxxC4VePcOkC9rnZ4sHGvIjtG11"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHTPIN 5 //MENTION THE DIGITAL PIN WHERE YOU CONNECTED
#define DHTTYPE DHT22 //DHT 11
DHT dht (DHTPIN, DHTTYPE);
char auth[]= BLYNK_AUTH_TOKEN;
char ssid[]="Wokwi-GUEST"; //nama hotspot yang digunakan
char pass []="" ;//password hotspot yang digunakan
//BlynkTimer timer;
//}
//kontrol lampu
//#define BLYNK_TEMPLATE_ID "TMPL6wBbgB7cn"
//#define BLYNK_TEMPLATE_NAME "KONTROL LAMPU"
//#define BLYNK_AUTH_TOKEN "paFS55g7jyfnXhcNJs3sZhrrOlBeYFSk"
// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial
//#include <WiFi.h>
//#include <WiFiClient.h>
//#include <BlynkSimpleEsp32.h>
//char auth[] = BLYNK_AUTH_TOKEN;
// Your WiFi credentials.
// Set password to "" for open networks.
//char ssid[] = "Wokwi-GUEST";
//char pass[] = "";
BlynkTimer timer;
#define button1_pin 26
#define button2_pin 25
#define button3_pin 33
//#define button4_pin 32
#define relay1_pin 13
#define relay2_pin 12
#define relay3_pin 14
//#define relay4_pin 27
int relay1_state = 0;
int relay2_state = 0;
int relay3_state = 0;
//int relay4_state = 0;
//Change the virtual pins according the rooms
#define button1_vpin V1
#define button2_vpin V2
#define button3_vpin V3
//#define button4_vpin V4
//------------------------------------------------------------------------------
// This function is called every time the device is connected to the Blynk.Cloud
// Request the latest state from the server
BLYNK_CONNECTED() {
Blynk.syncVirtual(button1_vpin);
Blynk.syncVirtual(button2_vpin);
Blynk.syncVirtual(button3_vpin);
//Blynk.syncVirtual(button4_vpin);
}
//--------------------------------------------------------------------------
// This function is called every time the Virtual Pin state change
//i.e when web push switch from Blynk App or Web Dashboard
BLYNK_WRITE(button1_vpin) {
relay1_state =! param.asInt();
digitalWrite(relay1_pin, relay1_state);
}
//--------------------------------------------------------------------------
BLYNK_WRITE(button2_vpin) {
relay2_state =! param.asInt();
digitalWrite(relay2_pin, relay2_state);
}
//--------------------------------------------------------------------------
BLYNK_WRITE(button3_vpin) {
relay3_state =! param.asInt();
digitalWrite(relay3_pin, relay3_state);
}
//--------------------------------------------------------------------------
//BLYNK_WRITE(button4_vpin) {
//relay4_state = param.asInt();
//digitalWrite(relay4_pin, relay4_state);
//}
//--------------------------------------------------------------------------
void setup()
{
lcd.init ();
//lcd.begin();
//dht.begin();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(F("ANTONIUS P/NIM 23220701"));
//JEDA 2 DETIK AGAR PEMBACAAN STABIL
delay(2000);
//pinMode (powerPin, OUTPUT);
//digitalWrite (powerPin, LOW); //default bernilai LOW
//Serial.begin(9600);
//}
Serial.begin(115200);
Serial.println("Sistem Monitoring Suhu");
dht.begin();
Blynk.begin(auth,ssid,pass);
// Debug console
//Serial.begin(115200);
//--------------------------------------------------------------------
pinMode(button1_pin, INPUT_PULLUP);
pinMode(button2_pin, INPUT_PULLUP);
pinMode(button3_pin, INPUT_PULLUP);
//pinMode(button4_pin, INPUT_PULLUP);
//--------------------------------------------------------------------
pinMode(relay1_pin, OUTPUT);
pinMode(relay2_pin, OUTPUT);
pinMode(relay3_pin, OUTPUT);
//pinMode(relay4_pin, OUTPUT);
//--------------------------------------------------------------------
//During Starting all Relays should TURN OFF
digitalWrite(relay1_pin, HIGH);
digitalWrite(relay2_pin, HIGH);
digitalWrite(relay3_pin, HIGH);
//digitalWrite(relay4_pin, HIGH);
//--------------------------------------------------------------------
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
//--------------------------------------------------------------------
//Blynk.virtualWrite(button1_vpin, relay1_state);
//Blynk.virtualWrite(button2_vpin, relay2_state);
//Blynk.virtualWrite(button3_vpin, relay3_state);
//Blynk.virtualWrite(button4_vpin, relay4_state);
//--------------------------------------------------------------------
}
void loop()
{
float h =dht.readHumidity(); //membaca kelembaban
float t = dht.readTemperature(); //membaca suhu
delay(1000);
Blynk.virtualWrite(V6,h);//mengirim data humidity ke blynk
Blynk.virtualWrite(V7,t); //mengirim data suhu ke blynk
if (isnan(h) || isnan(t)) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(F("GAGAL MEMBACA"));
return;
//CEK SEMUA PEMBACAA
}
float hic = dht.computeHeatIndex(t, h, false);
// MENDEFINISIKAN "t" SEBAGAI NILAI DARI SUHU
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp = ");
lcd.print(t); //TAMPILKAN SUHU DALAM CELCIUS
lcd.print("'C");
lcd.setCursor(0,1);
lcd.print("Humd = ");//TAMPILKAN KELEMBABAN UDARA
lcd.print(h);
lcd.print("% ");
delay(2000);
//}
//menampilkan data padaserial monitor
Serial.println("Temperature : ");;
Serial.print(t);
Serial.println(" Humidity :");;
Serial.print(h);
Blynk.run();
timer.run();
// You can inject your own code or combine it with other sketches.
// Check other examples on how to communicate with Blynk. Remember
// to avoid delay() function!
listen_push_buttons();
}
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
void listen_push_buttons(){
//--------------------------------------------------------------------------
if(digitalRead(button1_pin) == LOW){
delay(200);
control_relay(1);
Blynk.virtualWrite(button1_vpin, relay1_state); //update button state
}
//--------------------------------------------------------------------------
else if (digitalRead(button2_pin) == LOW){
delay(200);
control_relay(2);
Blynk.virtualWrite(button2_vpin, relay2_state); //update button state
}
//--------------------------------------------------------------------------
else if (digitalRead(button3_pin) == LOW){
delay(200);
control_relay(3);
Blynk.virtualWrite(button3_vpin, relay3_state); //update button state
}
//--------------------------------------------------------------------------
//else if (digitalRead(button4_pin) == LOW){
//delay(200);
//control_relay(4);
//Blynk.virtualWrite(button4_vpin, relay4_state); //update button state
}
//--------------------------------------------------------------------------
//}
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
void control_relay(int relay){
//------------------------------------------------
if(relay == 1){
relay1_state = !relay1_state;
digitalWrite(relay1_pin, relay1_state);
Serial.print("Relay1 State = ");
Serial.println(relay1_state);
delay(50);
}
//------------------------------------------------
else if(relay == 2){
relay2_state = !relay2_state;
digitalWrite(relay2_pin, relay2_state);
delay(50);
}
//------------------------------------------------
else if(relay == 3){
relay3_state = !relay3_state;
digitalWrite(relay3_pin, relay3_state);
delay(50);
}
//------------------------------------------------
//else if(relay == 4){
//relay4_state = !relay4_state;
//digitalWrite(relay4_pin, relay4_state);
//delay(50);
}
//------------------------------------------------
//void loop() {
//float h = dht.readHumidity();
// Baca Kelembaban dalam RH (%)
//float t = dht.readTemperature();
// Baca Temperature dalam celcius (default)
// Cek Pembacaan dan komunikasi dengan DHT22
//Serial.print("Temperature = ");
// Serial.print(t); //TAMPILKAN SUHU DALAM CELCIUS
//Serial.print("°C | ");
// Serial.print("Humidity = ");//TAMPILKAN KELEMBABAN UDARA
// Serial.print(h);
// Serial.println("% ");
// Serial.println("");