#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <CTBot.h>


CTBot ctbot;


const char* ssid = "Wokwi-GUEST";
const char* pass = "";

String  token = "6732175702:AAHXtnssXPVIcVGD7LfpSvb2QxdBaXUm2WM";
const int id = 6951009799;

#define DHTPIN 15        // Pin data pada sensor DHT22
#define DHTTYPE DHT22    // Tipe sensor DHT22
#define SOIL_PIN 34      // Pin data pada soil sensor

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 4);  // Alamat I2C dan ukuran LCD (16x2)

#define RELAY_PIN 18     // Pin kontrol pada relay

void setup() {
  lcd.init();
  lcd.backlight();

  dht.begin();
  pinMode(RELAY_PIN, OUTPUT);
  ctbot.wifiConnect(ssid, pass);
  ctbot.setTelegramToken(token);
  delay(3000);
  if(ctbot.testConnection()){
    Serial.println("Koneksi Berhasil");
  } else{
    Serial.println("Koneksi Gagal");
    return ;
  }
}

void loop() {
   

  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();
  int soilMoisture = analogRead(SOIL_PIN);

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Gagal membaca data dari sensor DHT22!");
    return;
  }

  Serial.print("Suhu: ");
  Serial.print(temperature);
  Serial.print(" °C, Kelembaban: ");
  Serial.print(humidity);
  Serial.println(" %");

  Serial.print("Kelembaban Tanah: ");
  Serial.println(soilMoisture);

  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(" %");

  lcd.setCursor(0, 2);
  lcd.print("Kelembaban Tanah:");
  lcd.setCursor(0, 3);
  lcd.print(soilMoisture);

  // Mengontrol relay berdasarkan suhu
  if (soilMoisture < 2500) {
    digitalWrite(RELAY_PIN, HIGH);  // Mengaktifkan relay
    String pesan = "Siram tanaman karena dalam kondisi kering";
    Serial.println(pesan);

    TBMessage msg;
    ctbot.sendMessage(id, pesan);
  } else {
    digitalWrite(RELAY_PIN, LOW);   // Mematikan relay
    String pesan = "Tanaman dalam kondisi baik";
    Serial.println(pesan);

    TBMessage msg;
    ctbot.sendMessage(id, pesan);
  }
delay(100);
}
Soil SensorBreakout
NOCOMNCVCCGNDINLED1PWRRelay Module