#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Replace with your network credentials
const char* ssid = "Rakhmat";
const char* password = "wifirakhmat123";
// Initialize Telegram BOT
#define BOTtoken "1836141078:AAGpUQW4JH-xgZ5545kLCr4G49o00MkIeBo" // your Bot Token (Get from Botfather)
// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
#define CHAT_ID "574967010"
const unsigned long BOT_MTBS = 1000; // mean time between scan messages
UniversalTelegramBot bot(BOTtoken, client);
unsigned long bot_lasttime; // last time messages' scan has been done
const int ldrA1 = 25; // ldr sens
const int ldrA2 = 26; // ldr sens
const int ldrA3 = 27; // ldr sens
const int ldrB1 = 18; // ldr sens
const int ldrB2 = 19; // ldr sens
const int ldrB3 = 21; // ldr sens
void(*restart) (void) = 0;
// PIR Motion Sensor mode INPUT_PULLUP
pinMode(ldrA1, INPUT); //sensor ldr 1 input
pinMode(ldrA2, INPUT); //sensor ldr 2 input
// Attempt to connect to Wifi network:
// configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
Serial.print("Connecting to Wifi SSID ");
WiFi.begin(ssid, password);
client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while (WiFi.status() != WL_CONNECTED) {
Serial.print("\nWiFi connected. IP address: ");
Serial.println(WiFi.localIP());
// Check NTP/Time, usually it is instantaneous and you can delete the code below.
// Serial.print("Retrieving time: ");
// time_t now = time(nullptr);
// while (now < 24 * 3600)
bot.sendMessage(CHAT_ID, "Bot started up & Sensor Ready", "");
void handleNewMessages(int numNewMessages)
Serial.print("handleNewMessages ");
Serial.println(numNewMessages);
for (int i = 0; i < numNewMessages; i++)
String chat_id = bot.messages[i].chat_id;
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
bot.sendMessage(CHAT_ID, "Sensor telah direset");
else if (text == "/start")
String welcome = "Welcome to Automated Message Sensor Bot" + from_name + ".\n";
welcome += "Ini adalah bot untuk mengontrol sensor. \n\n";
welcome += "/done : Untuk memberitau sensor jika lampu sudah diperbaiki.\n";
bot.sendMessage(chat_id, welcome, "Markdown");
int sensorData1 = digitalRead (ldrA1);
int sensorData2 = digitalRead (ldrA2);
int sensorData3 = digitalRead (ldrA3);
int sensorData4 = digitalRead (ldrB1);
int sensorData5 = digitalRead (ldrB2);
int sensorData6 = digitalRead (ldrB3);
Serial.print("Sensor value:");
Serial.println(sensorData1);
Serial.println(sensorData2);
Serial.println(sensorData3);
Serial.println(sensorData4);
Serial.println(sensorData5);
Serial.println(sensorData6);
if (millis() - bot_lasttime > BOT_MTBS)
if (sensorData1 ==HIGH && cahaya == true) // lampu A1
bot.sendMessage(CHAT_ID, "LAMPU GANG A NOMOR 1 MATI", "");
Serial.println("LAMPU GANG A NOMOR 1 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData2 ==HIGH && cahaya == true) // lampu A2
bot.sendMessage(CHAT_ID, "LAMPU GANG A NOMOR 2 MATI", "");
Serial.println("LAMPU GANG A NOMOR 2 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData3 ==HIGH && cahaya == true) // lampu A3
bot.sendMessage(CHAT_ID, "LAMPU GANG A NOMOR 3 MATI", "");
Serial.println("LAMPU GANG A NOMOR 3 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData4 ==HIGH && cahaya == true) // lampu B1
bot.sendMessage(CHAT_ID, "LAMPU GANG B NOMOR 1 MATI", "");
Serial.println("LAMPU GANG B NOMOR 1 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData5 ==HIGH && cahaya == true) // lampu B2
bot.sendMessage(CHAT_ID, "LAMPU GANG B NOMOR 2 MATI", "");
Serial.println("LAMPU GANG B NOMOR 2 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData6 ==HIGH && cahaya == true) // lampu B3
bot.sendMessage(CHAT_ID, "LAMPU GANG B NOMOR 3 MATI", "");
Serial.println("LAMPU GANG B NOMOR 3 MATI");
cahaya = false; // meniadakan persyaratan agar tidak berulang
else if (sensorData1 ==LOW && sensorData2 ==LOW && sensorData3 ==LOW && sensorData4 ==LOW && sensorData5 ==LOW && sensorData6 ==LOW)
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);