#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <DHT.h>
#include <ESP32Servo.h>


char ssid[] = "Wokwi-GUEST";     // Gantilah dengan SSID WiFi Anda
char pass[] = " "; // Gantilah dengan kata sandi WiFi Anda

#define BOTtoken "6669315474:AAGtDqs3vWNw8XIC8h7GzFb4CQUW85Qd_CQ" // Gantilah dengan token bot Telegram Anda
#define CHAT_ID "1711422258"    // Gantilah dengan ID chat Anda

#define DHTPIN 2
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOTtoken, secured_client);

Servo myServo;
int servoPin = 2;   // Pin untuk servo motor
int servoOpenAngle = 90; // Sudut untuk atap terbuka
int servoClosedAngle = 0; // Sudut untuk atap tertutup

void setup() {
  Serial.begin(115200);

  // Inisialisasi servo
  myServo.attach(servoPin);
  myServo.write(servoClosedAngle);

  // Inisialisasi Wi-Fi
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Inisialisasi sensor DHT
  dht.begin();
}

void loop() {
  // Membaca sensor DHT
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (!isnan(humidity) && !isnan(temperature)) {
    // Mengirim pesan suhu dan kelembaban ke bot Telegram
    String message = "Suhu: " + String(temperature) + " °C\nKelembaban: " + String(humidity) + " %";
    bot.sendMessage(CHAT_ID, message); // Gantilah YOUR_CHAT_ID dengan ID chat Anda
  }

  // Membaca sensor LDR dan memberikan respons sesuai kondisi cahaya
  int ldrValue = analogRead(A0); // A0 adalah pin analog yang digunakan untuk sensor LDR
  if (ldrValue < 500) { // Sesuaikan ambang cahaya sesuai kebutuhan
    myServo.write(servoOpenAngle);
  } else {
    myServo.write(servoClosedAngle);
  }
  
  delay(1000); // Delay antara pembacaan sensor
}