#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// DHT 11
#define DHTPIN D4 // pin D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// WiFi
const char *ssid = "CPH1605"; // Nama WiFi Anda
const char *password = "12345678"; // Kata sandi WiFi Anda
// Telegram bot
const char *botToken = "<YOUR_BOT_TOKEN>"; // Ganti dengan token bot Anda
const char *chatID = "<YOUR_CHAT_ID>"; // Ganti dengan ID obrolan Telegram Anda
UniversalTelegramBot bot(botToken, WiFiClientSecure());
// LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD: 0x27, 16 kolom, 2 baris
void setup() {
Serial.begin(115200);
// Menghubungkan ke jaringan WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.print("Suhu dan Kelembaban");
delay(2000); // Delay 2 detik untuk memberi waktu LCD menampilkan pesan
Serial.println("Reading temperature and humidity...");
}
void sendTelegramMessage(String message) {
bot.sendMessage(chatID, message, "");
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Menampilkan suhu dan kelembaban di Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
Serial.println("====================");
// Menampilkan suhu dan kelembaban di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Kelembaban: ");
lcd.print(humidity);
lcd.print(" %");
// Kirim pesan ke Telegram
String message = "Temperature: " + String(temperature) + " C, Humidity: " + String(humidity) + " %";
sendTelegramMessage(message);
delay(5000); // Menunggu 5 detik sebelum membaca data lagi
}