#define BLYNK_TEMPLATE_ID "TMPL6Lc78xxMb"
#define BLYNK_TEMPLATE_NAME "Monitoring Suhu Menggunakan Sensor DHT22"
#define BLYNK_AUTH_TOKEN "rVg5GGyhjv_VifvlLnzAUu52N6sb7Hza"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <CTBot.h> // Pustaka CTBot
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
#define RELAY_PIN 2
#define BUZZER_PIN 4
LiquidCrystal_I2C lcd(0x27, 16, 2);
CTBot bot; // Inisialisasi objek CTBot
float previousTemperature = 0;
float previousHumidity = 0;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(2500L, sendSensor);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
lcd.init();
lcd.backlight();
// Inisialisasi bot Telegram
bot.wifiConnect(ssid, pass);
bot.setTelegramToken("6712572745:AAEKlsJkHEjQdJaiofJUEhzYCFkY_MlGNOo");
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V1, h);
Blynk.virtualWrite(V0, t);
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
if (t < 37.0) {
digitalWrite(RELAY_PIN, HIGH);
} else {
digitalWrite(RELAY_PIN, LOW);
}
if (t != previousTemperature || h != previousHumidity) {
digitalWrite(BUZZER_PIN, HIGH);
delay(100);
digitalWrite(BUZZER_PIN, LOW);
previousTemperature = t;
previousHumidity = h;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Kelembaban: ");
lcd.print(h);
lcd.print("%");
// Kirim data suhu dan kelembaban ke Telegram hanya saat ada perubahan
String message = "Suhu: " + String(t) + "°C, Kelembaban: " + String(h) + "%";
bot.sendMessage(1857347614, message);
}
}