#define BLYNK_TEMPLATE_ID "TMPL65bKgx31F"
#define BLYNK_TEMPLATE_NAME "TempDHT"
#define BLYNK_AUTH_TOKEN "QsRHr5vm3-Xf6A5VFJqcOrlP-K6gAl6Q"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHTesp.h>
#include <ESP32Servo.h> // Library untuk ESP32 Servo
#include <LiquidCrystal_I2C.h> // Include LCD library
const int DHT_PIN = 15;
const int RELAY_PIN = 4; // Pin untuk relay
DHTesp dhtSensor;
Servo myServo; // Create servo object
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
// Initialize the LCD (I2C address 0x27, 16 columns and 2 rows)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void sendSensor()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
// Display on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: " + String(data.temperature, 2) + "C");
lcd.setCursor(0, 1);
lcd.print("Hum: " + String(data.humidity, 1) + "%");
Blynk.virtualWrite(V0, data.temperature);
Blynk.virtualWrite(V1, data.humidity);
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(RELAY_PIN, OUTPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
myServo.attach(14); // Attach servo to pin 14
myServo.write(0); // Set initial servo position to 0 degrees
timer.setInterval(1000, sendSensor);
// Initialize the LCD
lcd.init();
lcd.backlight(); // Turn on the backlight
}
void loop()
{
Blynk.run();
timer.run();
}
BLYNK_WRITE(V2)
{
int pinValue = param.asInt();
Serial.print("V2 Switch value is: ");
Serial.println(pinValue);
if (pinValue == 1) {
myServo.write(90); // Move servo to 90 degrees when switch is on
digitalWrite(RELAY_PIN, HIGH); // Turn on relay
} else {
myServo.write(0); // Move servo back to 0 degrees when switch is off
digitalWrite(RELAY_PIN, LOW); // Turn off relay
}
}