#include <ArduinoJson.h>
#include "CTBot.h"
CTBot myBot;
TBMessage msg;
const String ssid = "Wokwi-GUEST";
const String pass = "";
String token = "5974586883:AAG0hAQa17biKIgI1FNPDj5yEsZp5DOuWpc"; // Token API Telegram Bot
const int id = 6001135119; // ChatID
const int moisturePin = A0; // A0
const int pumpPin = 1; // D1
const int dryThreshold = 300;
const int wetThreshold = 500;
const int stabilityDelay = 100;
int moistureValue;
void setup()
{
Serial.begin(9600);
pinMode(pumpPin, OUTPUT);
delay(500);
Serial.println("Starting System...");
Serial.println("Conneting to Network...");
myBot.wifiConnect(ssid, pass);
Serial.println("Conneted");
myBot.setTelegramToken(token);
Serial.println("Connecting to Telegram Bot...");
if (myBot.testConnection())
{
Serial.println("TeleBot Connected");
}
else
{
Serial.println("TeleBot Failed");
}
if (msg.text.equalsIgnoreCase("/Start"))
{
String welcome = "Welcome to Selada Otomatis System.\n\n";
welcome += "Sistem ini digunakan untuk monitoring Kondisi Tanah dan Menyalakan Pompa.\n";
welcome += "-----------------------------------------\n";
welcome += "List Action\n";
welcome += "/Help : untuk melihat list \n";
welcome += "/Status : untuk Status Tanah \n";
welcome += "/On : untuk Menyalakan Pompa \n";
welcome += "/Off : untuk Mematikan Pompa \n";
welcome += "/Reset : untuk Reset Program \n";
welcome += "-----------------------------------------\n";
myBot.sendMessage(msg.sender.id, welcome);
}
moistureValue = analogRead(moisturePin);
Serial.print("Initial moisture level: ");
Serial.println(moistureValue);
}
void loop()
{
moistureValue = analogRead(moisturePin);
if (moistureValue <= wetThreshold)
{
digitalWrite(pumpPin, LOW);
Serial.println("Moisture level: Wet");
myBot.sendMessage(msg.sender.id, "Moisture level: Wet");
}
else if (moistureValue >= dryThreshold)
{
digitalWrite(pumpPin, HIGH);
Serial.println("Moisture level: Dry");
myBot.sendMessage(msg.sender.id, "Moisture level: Dry");
}
if (CTBotMessageText == myBot.getNewMessage(msg))
{
Serial.print("Pesan Masuk: ");
Serial.println(msg.text);
if (msg.text.equalsIgnoreCase("/Help"))
{
String list = "Action Salah\n";
list += "-----------------------------------------\n";
list += "List Action\n";
list += "/Help : untuk melihat list \n";
list += "/Start : untuk Welcome Page \n";
list += "/Status : untuk Status Tanah \n";
list += "/On : untuk Menyalakan Pompa \n";
list += "/Off : untuk Mematikan Pompa \n";
list += "/Reset : untuk Reset Program \n";
list += "-----------------------------------------\n";
myBot.sendMessage(msg.sender.id, list);
}
else if (msg.text.equalsIgnoreCase("/Start"))
{
String welcome = "Welcome to Selada Otomatis System.\n\n";
welcome += "Sistem ini digunakan untuk monitoring Kondisi Tanah dan Menyalakan Pompa.\n";
welcome += "-----------------------------------------\n";
welcome += "List Action\n";
welcome += "/Help : untuk melihat list \n";
welcome += "/Status : untuk Status Tanah \n";
welcome += "/On : untuk Menyalakan Pompa \n";
welcome += "/Off : untuk Mematikan Pompa \n";
welcome += "/Reset : untuk Reset Program \n";
welcome += "-----------------------------------------\n";
myBot.sendMessage(msg.sender.id, welcome);
}
else if (msg.text.equalsIgnoreCase("/Status"))
{
String sensor = "Moisture Level : ";
sensor += moistureValue;
myBot.sendMessage(msg.sender.id, sensor);
}
else if (msg.text.equalsIgnoreCase("/On"))
{
digitalWrite(pumpPin, LOW);
myBot.sendMessage(msg.sender.id, "Status Pompa ON");
}
else if (msg.text.equalsIgnoreCase("/Off"))
{
digitalWrite(pumpPin, HIGH);
myBot.sendMessage(msg.sender.id, "Status Pompa OFF");
}
else if (msg.text.equalsIgnoreCase("/Reset"))
{
myBot.sendMessage(msg.sender.id, "Reset");
setup();
}
else
{
String list = "Action Salah\n";
list += "-----------------------------------------\n";
list += "List Action\n";
list += "/Help : untuk melihat list \n";
list += "/Status : untuk Status Tanah \n";
list += "/On : untuk Menyalakan Pompa \n";
list += "/Off : untuk Mematikan Pompa \n";
list += "/Reset : untuk Reset Program \n";
list += "-----------------------------------------\n";
myBot.sendMessage(msg.sender.id, list);
Serial.println("Perintah Salah");
}
}
delay(stabilityDelay);
}