#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <DHT.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
#define BOT_TOKEN "6413217050:AAHu8vtZgvoRU--Zhcz3NOE38ayF_RTqUwY"
// Inisialisasi objek WiFiClientSecure
WiFiClientSecure secured_client;
// Inisialisasi objek UniversalTelegramBot
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
#define DHTPIN 22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int LIGHT_SENSOR_PIN = 4; // Pin sensor cahaya
const int MOTOR_PIN = 5; // Pin aktuator motor DC/servo
const int LED_PIN = 13; // Pin lampu indikator
bool isRoofOpen = false;
unsigned long lastUpdateTime = 0;
const unsigned long updateInterval = 10000; // Interval pengiriman pesan (1 menit)
void setup() {
Serial.begin(115200);
connectToWiFi();
dht.begin();
pinMode(LIGHT_SENSOR_PIN, INPUT);
pinMode(MOTOR_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastUpdateTime >= updateInterval) {
lastUpdateTime = currentMillis;
float temperature = dht.readTemperature();
int lightLevel = analogRead(LIGHT_SENSOR_PIN);
String message = "Suhu saat ini: " + String(temperature) + " °C\n";
message += "Level cahaya: " + String(lightLevel) + "\n";
// Kondisi terbuka jika suhu panas atau terang
if (temperature > 25 || lightLevel > 500) {
openRoof();
message += "Atap terbuka.";
}
// Kondisi ditutup jika suhu dingin, hujan, atau gelap
else {
closeRoof();
message += "Atap ditutup.";
}
sendMessage(message);
}
}
void sendMessage(String message) {
String chat_id = "1063631932"; // Ganti dengan chat ID penerima
bot.sendMessage(chat_id, message, "Markdown");
}
void connectToWiFi() {
Serial.println("Connecting to Wi-Fi...");
WiFi.begin(ssid, password);
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void openRoof() {
// Kontrol atap terbuka di sini, misalnya putar motor ke arah terbuka
digitalWrite(MOTOR_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
isRoofOpen = true;
}
void closeRoof() {
// Kontrol atap ditutup di sini, misalnya putar motor ke arah tertutup
digitalWrite(MOTOR_PIN, LOW);
digitalWrite(LED_PIN, LOW);
isRoofOpen = false;
}