You are on page 1of 7

PRAK.

ALAT PENGEMBANGAN PERANGKAT LUNAK

Judul : Telegram Bot


Percobaan : 7
Nama : Hamim Fadli
NRP : 2210191023
Dosen : Mochamad Mobed
Bachtiar
1. Telegram LED
a. Source Code

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram
Bot Library written by Brian Lough:
https://github.com/witnessmenow/Universal-Arduino-
Telegram-Bot
#include <ArduinoJson.h>
// Replace with your network credentials
const char* ssid = "Uji coba 1";
const char* password = "fadli0500";
// Initialize Telegram BOT
#define BOTtoken "1892181776:AAHQ2-ogR1-
ryPQOvHnqO_lh2gGRfv0DqCw" // 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
// message you
#define CHAT_ID "1046958219"
#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
// Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;
const int ledPin = 2;
bool ledState = LOW;
// Handle what happens when you receive new messages
void handleNewMessages(int numNewMessages) {
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++) {
// Chat id of the requester
String chat_id = String(bot.messages[i].chat_id);
if (chat_id != CHAT_ID){
bot.sendMessage(chat_id, "Unauthorized user",
"");continue;
}
// Print the received message
String text = bot.messages[i].text;
Serial.println(text);
String from_name = bot.messages[i].from_name;
if (text == "/start") {
String welcome = "Welcome, " + from_name + ".\n";
welcome += "Use the following commands to control your
outputs.\n\n";
welcome += "/led_on to turn GPIO ON \n";
welcome += "/led_off to turn GPIO OFF \n";
welcome += "/state to request current GPIO state \n";
bot.sendMessage(chat_id, welcome, "");
}
if (text == "/led_on") {
bot.sendMessage(chat_id, "LED state set to ON", "");
ledState = HIGH;
digitalWrite(ledPin, ledState);
}
if (text == "/led_off") {
bot.sendMessage(chat_id, "LED state set to OFF", "");
ledState = LOW;
digitalWrite(ledPin, ledState);
}
if (text == "/state") {
if (digitalRead(ledPin)){
bot.sendMessage(chat_id, "LED is ON", "");
}
else{
bot.sendMessage(chat_id, "LED is OFF", "");
}
}
}
}
void setup() {
Serial.begin(115200);
#ifdef ESP8266
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
client.setTrustAnchors(&cert); // Add root certificate
for api.telegram.org
#endif
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root
certificate for api.telegram.org
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() > lastTimeBotRan + botRequestDelay) {
int numNewMessages =
bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) {Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received
+ 1);
}
lastTimeBotRan = millis();
}
}

b. Output
c. Analisa

Pada percobaan ini mengenai Controlling LED melalui Bot yang akan
kita buat pada Telegram. Kita akan membuat Bot terlebih dahulu pada Telegram
dengan botfather. Dimana setelah kita membuat bot kita sendiri, kita
membutuhkan id yang akan kita dapatkan pada IDBot. Pada program di Arduino
IDE perintah percakapan digunakan printah /led_on untuk menyalakan led, dan
/led_off untuk mematikan led. Apabila ID yang digunakan user merupakan
sama dengan yang memulai percakapan, maka ID tersebut akan menjalakan
kode yang dibuat dengan ESP32.

d. Kesimpulan
 Kita memerlukan bot dari bothfather sebagai monitoring dan pusat perintah
untuk ESP23 ini.
 Jika kita mencoba berinteraksi dengan bot dari akun lain, akan
mendapatkan pesan "Pengguna tidak resmi".

2. Telegram Notif
a. Source Code

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// Replace with your network credentials
const char* ssid = "Uji coba 1";
const char* password = "fadli0500";
// Initialize Telegram BOT, Token (Get from Botfather) &
ID (Get from myidbot)
#define BOTtoken "1892181776:AAHQ2-ogR1-
ryPQOvHnqO_lh2gGRfv0DqCw"
#define CHAT_ID "1046958219"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
const int motionSensor = 14; // PIR Motion Sensor
bool motionDetected = false;
// Indicates when motion is detected
void ICACHE_RAM_ATTR detectsMovement() {
//Serial.println("MOTION DETECTED!!!");
motionDetected = true;
}
void setup() {
Serial.begin(115200);
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
// PIR Motion Sensor mode INPUT_PULLUP
pinMode(motionSensor, INPUT_PULLUP);
// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
#endif
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
bot.sendMessage(CHAT_ID, "Bot started up", "");
}
void loop() {
if(motionDetected){
bot.sendMessage(CHAT_ID, "Motion detected!!", "");
Serial.println("Motion Detected");
motionDetected = false;
}
}

b. Output
c. Analisa

Pada percobaan kali ini mengenai Sensor yang akan dihubungkan


dengan Telegram ini, hampi sama seperti percobaan sebelumnya, yaitu
mengirimkan sebuah data ke Telegram melalui API dari Telegram. Hanya saja
pada percobaan kali ini digunakan sebuah sensor, namun dikarenakan kita tidak
punya sensor kita menggantinya dengan push button. Hampir sama dengan
percobaan sebelumnya kita harus membuat bot terlebih dahulu, dan kita bisa
menggunakan bot yang kita buat pada percobaan sebelumnya. Kemudian pada
program, pada void detectsmovement(), fungsi callback yang akan dijalankan
saat Gerakan terdeteksi.

d. Kesimjulan
 Telegram adalah sebuah layanan chat yang mendukung bot. Bot tersebutlah
yang dapat digunakan untuk berkomunikasi dengan NodeMCU salah
satunya ESP32
 Interaksi dengan BOT telegram dilakukan menggunakan permintaan
HTTPS.

You might also like