Anda di halaman 1dari 20

Laporan Praktikum

Embedded System (IF3122)


Program Studi Teknik Informatika
Institut Teknologi Sumatera
2021

Nama Modul : IoT and Cloud 1


Kelompok : 12
Nama : Nazel Marfi Alfawwaz
Nim : 14116012

Pernyataan Orisinalitas
Dengan ini penulis bertanggung jawab sepenuhnya atas isi dari dokumen
ini dan menyatakan bahwa seluruh isi dokumen ini adalah hasil karya penulis
sendiri, dan setiap karya orang lain yang digunakan dalam dokumen ini telah
diparafrase dan sudah disitasi sesuai dengan ketentuan yang ada.

Lampung Selatan, 12 November 2021


Nazel Marfi Alfawwaz
14116012

Format Tata Tulis © martin.manullang@if.itera.ac.id - 2021


IoT and Cloud 1

Daftar Isi
1. Pendahuluan 3
1.2. Dasar Teori 3
Internet of Things 3
Cloud Computing 3
Firebase 3
Telegram 3
2. Percobaan Pertama : Penggunaan Firebase 4
2.1. Tujuan Percobaan 4
2.2. Alat dan Bahan Percobaan 4
Perangkat Lunak 4
Perangkat Keras 4
Kode / Script 4
2.3. Langkah Pengerjaan 6
2.4. Analisa Percobaan 7
2.5. Pertanyaan Praktikum 7
3. Percobaan Kedua : Penggunaan Telegram 7
3.1. Tujuan Percobaan 7
3.3. Alat dan Bahan Percobaan 8
Perangkat Lunak 8
Perangkat Keras 8
Kode / Script 8
3.4. Langkah Pengerjaan 10
3.5. Analisa Percobaan 11
3.6. Pertanyaan Praktikum 11
4. Challenge 1 : Percobaan menggunakan Firebase 11
4.1. Tujuan Percobaan 11
4.2. Alat dan Bahan Percobaan 12
Perangkat Lunak 12
Perangkat Keras 12
Kode / Script 12
4.3. Langkah Pengerjaan 13
4.4. Analisa Percobaan 14
5. Challenge 2 : Percobaan dengan Telegram 14
5.1. Tujuan Percobaan 14
5.2. Alat dan Bahan Percobaan 14

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 1
IoT and Cloud 1

Perangkat Lunak 14
Perangkat Keras 14
Kode / Script 14
5.3. Langkah Pengerjaan 16
5.4. Analisa Percobaan 17
Referensi 19

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 2
IoT and Cloud 1

1. Pendahuluan

1.2. Dasar Teori

Internet of Things
Menurut Casagras (Coordination and support action for global RFID-related
activities and standardisation) Internet Of Things (IoT) adalah sebuah infrastruktur
jaringan global, yang dapat menghubungkan perangkat keras dan virtual melalui
eksploitasi data capture serta kemampuan komunikasi. Dalam Infrastruktur terdiri
dari jaringan yang sudah ada dan internet serta pengembangan jaringannya.
Sehingga, IoT ini menawarkan objek, sensor dan kemampuan koneksi agar dapat
menyediakan layanan dan aplikasi kooperatif yang independen.
Cloud Computing
Komputasi awan atau Cloud computing adalah pengiriman layanan komputasi
termasuk server, penyimpanan, database, jaringan, perangkat lunak, analitik, dan
kecerdasan melalui Internet (“cloud”) untuk menawarkan inovasi yang lebih cepat,
sumber daya yang fleksibel, dan skala ekonomi. Anda biasanya hanya membayar
untuk layanan cloud yang Anda gunakan, membantu Anda menurunkan biaya
pengoperasian, menjalankan infrastruktur dengan lebih efisien, dan menskalakan
seiring dengan perubahan kebutuhan bisnis Anda. Beberapa Cloud provider saat
ini adalah Google Cloud, Microsoft Azure, Amazon, dan lainnya.
Firebase
Firebase adalah platform yang dikembangkan oleh Google yang berguna
mempermudah pengembangan aplikasi berbasis mobile maupun web. Beberapa
layanan Firebase yang dapat sering digunakan antara lain Firebase Cloudstore,
Authentication, Realtime Database dsb. Firebase Realtime Database merupakan
database No-SQL yang tergolong database terhost di cloud, data disimpan dalam
bentuk JSON dan disinkronkan secara realtime.
Telegram
Telegram adalah sistem pesan instan (IM) lintas platform berbasis cloud. Layanan
ini juga menyediakan panggilan video terenkripsi end-to-end, VoIP, berbagi file, dan
beberapa fitur lainnya. Ini diluncurkan untuk iOS pada 14 Agustus 2013 dan Android
pada Oktober 2013. Server Telegram didistribusikan di seluruh dunia untuk
mengurangi beban data dengan lima pusat data di berbagai wilayah, sedangkan
pusat operasional berbasis di Dubai di Uni Emirat Arab. Berbagai aplikasi klien
tersedia untuk platform desktop dan seluler termasuk aplikasi resmi untuk Android,
iOS, Windows, macOS, dan Linux (walaupun pendaftaran memerlukan perangkat
iOS atau Android dan nomor telepon yang berfungsi). Ada juga dua aplikasi kembar
web Telegram resmi WebK dan WebZ dan banyak klien tidak resmi yang
menggunakan protokol Telegram. Semua komponen resmi Telegram adalah open
source, kecuali server yang bersifat closed-source dan proprietary.

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 3
IoT and Cloud 1

2. Percobaan Pertama : Penggunaan Firebase

2.1. Tujuan Percobaan

Pada percobaan pertama ini akan membuat sebuah rangkaian menggunakan


NodeMCU ESP8266 yang terhubung pada firebase.

2.2. Alat dan Bahan Percobaan

Perangkat Lunak
Pada percobaan pertama, kami menggunakan Arduino IDE dan Firebase sebagai
perangkat lunak.
Perangkat Keras
Perangkat keras yang digunakan antara lain, ESP8266, DHT 11, breadboard, kabel
jumper, dan kabel USB.
Kode / Script
Pada eksperimen ini juga telah disediakan script yang akan dijalankan pada
Arduino IDE sebagai berikut:
#include <FirebaseESP8266.h>
#include <ESP8266WiFi.h>
#include "DHT.h"

#define FIREBASE_HOST "https://kelompok-12-embedded-


default-rtdb.firebaseio.com/"
#define WIFI_SSID "Internet"
#define WIFI_PASSWORD "!@#$%12345"
#define FIREBASE_Authorization_key
"hzHLubr4Mq0qhw19hdo6qBD5zcILNvYRnrkdmtye"

#define DHTPIN 14

#define DHTTYPE DHT11


DHT dht(DHTPIN, DHTTYPE);

FirebaseData firebaseData;
FirebaseJson json;

void setup() {

Serial.begin(115200);
dht.begin();
WiFi.begin (WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(300);
}
Serial.println();

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 4
IoT and Cloud 1

Serial.print("IP Address: ");


Serial.println(WiFi.localIP());
Serial.println();

Firebase.begin(FIREBASE_HOST,FIREBASE_Authorization_k
ey);
}

void loop() {

float hum = dht.readHumidity();


float temp = dht.readTemperature();

if (isnan(hum) || isnan(temp)){
Serial.println(F("Failed to read from DHT
sensor!"));
return;
}

Serial.print("Temperature: ");
Serial.print(temp);
Serial.print("°C");
Serial.print(" Humidity: ");
Serial.print(hum);
Serial.print("%");
Serial.println();

Firebase.setFloat(firebaseData,
"/ESP32_APP/TEMPERATURE", temp);
Firebase.setFloat(firebaseData,
"/ESP32_APP/HUMIDITY", hum);
delay(200);
}

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 5
IoT and Cloud 1

2.3. Langkah Pengerjaan

1. Siapkan perangkat lunak dan perangkat keras yang akan digunakan dalam
percobaan ini.
2. Melakukan konfigurasi pada firebase pada link berikut
https://console.firebase.google.com
3. Dan lakukan beberapa langkah untuk membuat project.
4. Setelah melakukan konfigurasi pada firebase, masuk ke realtime database
melalui bagian navigasi. Lalu buat database.
5. Langkah selanjutnya kita buat rangkaian menggunakan DHT 11 dan
ESP8266 seperti gambar dibawah ini.

Gambar 1 Rangkaian

6. Pada Aerduino IDE, kita ketik kode/script. Lalu lakukan verify dan upload.
7. Tunggu sampai proses upload selesai.
8. Lalu buka serial monitor dan realtime database yang telah dibuat
sebelumnya untuk menampilkan hasil.

Gambar 2 Tampilan pada serial monitor dan firebase

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 6
IoT and Cloud 1

2.4. Analisa Percobaan

Dalam percobaan pertama ini firebase dan serial monitor akan menampilkan
informasi yang dihasilkan dari sensor DHT 11. Hal ini disebabkan ESP8266 telah
dikonfigurasi ke firebase sehingga hasil yang didapat secara realtime akan
ditampilkan pada firebase.

2.5. Pertanyaan Praktikum

Pada percobaan ini, menurut anda mengapa harus menggunakan pin analog?
Pada percobaan modul ini menggunakan pin analog yang menerima input sinyal
analog dan dapat mengubah sinyal analog yang masuk menjadi output digital
dengan menggunakan perintah analogRead() sebagai penghubung pada pin
ESP8266.
Apa fungsi dari String path = "/Flame"?
String path = /Flame berfungsi sebagai penyimpan data kelembaban pada sensor
DHT 11.
Pada percobaan ini, mengapa harus menggunakan Realtime database?
Pada dasarnya data yang dikirim akan berubah terus menerus, dan realtime
database digunakan untuk menyimpan data serta melakukan sinkronisasi ke user.
Apa yang dimaksud dengan NoSQL dan apa perbedaannya dengan SQL?
Database NoSQL merupakan singkatan dari Not Only SQL dengan skema yang
fleksibel sehingga data dapat spesifik dan membuat aplikasi modern mempunyai
skema yang fleksibel.

Hal yang ada pada SQL:


1. Data yang dihasilkan dalam bentuk tabel
2. Biasanya digunakan untuk merancang dan membuat struktur bisnis data
terkait dengan kebutuhan pengembangan pada aplikasi.
3. Transaksi konsisten

Hal yang ada pada NoSQL:


1. Pemodelan data yang dihasilkan berupa grafik, dokumen, nilai kunci yang
dioptimalkan untuk kinerja.
2. Analitik data semi terstruktur.
3. Performa NoSQL bergantung pada jenis perangkat keras.

3. Percobaan Kedua : Penggunaan Telegram

3.1. Tujuan Percobaan

Pada percobaan kedua ini akan menggunakan media chat bot telegram untuk
melakukan kontrol terhadap led flash ESP8266 melalui pesan yang dikirimkan
kedalam chat bot telegram.

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 7
IoT and Cloud 1

3.3. Alat dan Bahan Percobaan

Perangkat Lunak
Pada percobaan kedua ini menggunakan Arduino IDE dan Telegram sebagai
perangkat lunak.
Perangkat Keras
Adapun perangkat keras yang digunakan ESP8266 dan kabel USB.
Kode / Script
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

const char* ssid = "Internet";


const char* password = "!@#$%12345";

#define BOTtoken "2109886039:AAHLmm27SSXpRVSEbpNqadC-


HLnQCVUVHWA"

#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int botRequestDelay = 1000;


unsigned long lastTimeBotRan;

const int ledPin = 2;


bool ledState = HIGH;

void handleNewMessages(int numNewMessages){


Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i = 0; i< numNewMessages; i++){
String chat_id = String(bot.messages[i].chat_id);

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";

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 8
IoT and Cloud 1

welcome += "Use the following commands to


control your output.\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 = LOW;
digitalWrite(ledPin, ledState);
}
if(text == "/led_off"){
bot.sendMessage(chat_id, "LED state set to
OFF", "");
ledState = HIGH;
digitalWrite(ledPin, ledState);
}
if(text == "/state"){
if(digitalRead(ledPin) == LOW){
bot.sendMessage(chat_id, "LED is ON", "");
} else{
bot.sendMessage(chat_id, "LED is OFF", "");
}
}
}
}

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
#ifdef ESP8266
configTime(0, 0, "pool.ntp.org");
client.setTrustAnchors(&cert);
#endif

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid,password);

#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
#endif
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
}

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 9
IoT and Cloud 1

void loop() {
// put your main code here, to run repeatedly:
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();
}
}

3.4. Langkah Pengerjaan

1. Siapkan perangkat lunak dan perangkat keras yang akan digunakan dalam
percobaan ini.
2. Hubungkan ESP8266 pada laptop menggunakan kabel USB.
3. Setelah terhubung, masukkan kode/script kedalam lembar kerja Arduino
IDE, lalu lakukan verify dan Upload.
4. Siapkan bot telegram yang ingin kita hubungkan ke perangkat keras.
5. Pada kolom pencarian ketik botfather
6. Ketik /start, dan buat bot baru menyesuaikan intsruksi yang disediakan oleh
botfather.
7. Setelah selesai, simpan token untuk mengakses API. Token akan
digunakan untuk melengkapi pada program yang kita buat. Klik link yang
diberikan botfather untuk mengarahkan ke bot yang baru kita buat.
8. Lakukan konfigurasi pada ESP8266 melalui kode/script yang telah
dibuatkan untuk menghubungkan.
9. Buka serial monitor pada Arduino IDE untuk melihat hasil.
10. Berikan beberapa intstruksi ke dalam bot telegram seperti /state untuk
mengetahui kondisi saat itu dan berikan instruksi lainnya.

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 10
IoT and Cloud 1

Gambar 3 Tampilan instruksi bot telegram dan serial monitor

3.5. Analisa Percobaan

Dalam percobaan ini kami mencoba memberikan instruksi untuk melakukan kontrol
pada led flash ESP8266 melalui bot telegram. Yang kami lakukan pertama kali
melakukan konfigurasi untuk menghubungkan ESP8266 melaui SSID dan
password wifi, setelah kedua media terhubung melalui kode/script kita dapat
memerintahkan bot telegram untuk menghidupkan dan mematikan led flash yang
ada pada ESP8266 melalui pesan yang kita kirimkan pada bot telegram.

3.6. Pertanyaan Praktikum

Apa yang dikerjakan pada fungsi handleNewMessages()?


handleNewMessages() berfungsi untuk menangani pesan baru ketika pesan baru
dikirim pada telegram.
Apa yang dimaksud dari if (millis() > lastTimeBotRan + botRequestDelay)?
Sebuah percabangan yang jika milis lebih besr dari waktu terakhir bot berjalan lalu
bot mengalami delay akan terjadi perintah selanjutnya.
Apa yang dimaksud dari kode ini String text = bot.messages[i].text?
String text = bot.messages[i].text merupakan fungsi ketika akan memanggil text
bertipe string maka akan sama jika memanggil fungsi bot.message[i].text.

4. Challenge 1 : Percobaan menggunakan Firebase

4.1. Tujuan Percobaan

Pada challenge pertama ini bertujuan membuatan rangkaian buzzer yang dapat
menyala saat kondisi dari sensor terpenuhi, dan sebaliknya jika kondisi tidak
terpenuhi maka buzzer akan mati.

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 11
IoT and Cloud 1

4.2. Alat dan Bahan Percobaan

Perangkat Lunak
Pada challenge ini menggunakan Arduino IDE dan Firebase.
Perangkat Keras
Adapun perangkat keras yang digunakan antara lain, breadboard, ESP8266,
buzzer, sensor ultrasonic, kabel jumper, dan kabel USB.
Kode / Script
#include <FirebaseESP8266.h>
#include <ESP8266WiFi.h>

#define FIREBASE_HOST "https://kelompok-12-embedded-


default-rtdb.firebaseio.com/"
#define WIFI_SSID "Internet"
#define WIFI_PASSWORD "!@#$%12345"
#define FIREBASE_Authorization_key
"hzHLubr4Mq0qhw19hdo6qBD5zcILNvYRnrkdmtye"
#define trig 5 //mendefinisikan trig pada GPIO 5
#define echo 4 //mendifinisikan echo pada GPIO 4
#define buzzer 15 //mendifinisikan buzzer pada GPIO
15

FirebaseData firebaseData;
FirebaseJson json;

void setup() {
Serial.begin(115200);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(buzzer,OUTPUT);
WiFi.begin (WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.println();

Firebase.begin(FIREBASE_HOST,FIREBASE_Authorization_key
);
}

void loop() {
digitalWrite(trig,LOW);
delay(10);
digitalWrite(trig,HIGH);
delay(10);

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 12
IoT and Cloud 1

digitalWrite(trig,LOW);

long durasi;
float jarak;

durasi = pulseIn(echo,HIGH);
jarak = durasi * 0.034/2;
Serial.print("Jarak (cm) : ");
Serial.println(jarak);
Firebase.setFloat(firebaseData, "/ESP32_APP/Jarak",
jarak);
if(jarak>5){
digitalWrite(buzzer,LOW);
Serial.println(F("buzzer tidak bersuara"));
delay(1000);
}else if(jarak<=5){
digitalWrite(buzzer,HIGH);
Serial.println(F("buzzer bersuara"));
delay(1000);
}
delay(1000);
}

4.3. Langkah Pengerjaan

1. Melkukan konfikurasi pada firebase


2. Melakukan pengiriman data pada firebase.
3. Selanjutnya mengatur database location ke us-central1 pada security
rules memilih test mode lalu klik enable.
4. Membuat rangkaian alat sesuai komponen yang telah disiapkan
sebelumnya.
5. masukkan kode/script kedalam lembar kerja Arduino IDE, lalu lakukan
verify dan Upload.
6. Berikut ini hasil yang ditampulkan pada firebase dan seial monitor.

Gambar 4 Tampilan pada firebase dan serial monitor

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 13
IoT and Cloud 1

4.4. Analisa Percobaan

Pada challenge pertama ini, akan mengirimkan data yang akan dibaca sensor
ultrasonik ke firebase. Yang harus kita lakukan pertamakali yaitu membuat
database real-time pada firebase. Sambungkan echo pin, trig pin ke pin 12, buzzer
pin 18, lalu tentukan SSID dan password pada salah satu praktisi, dan tidak lupa
juga untuk menentukan API key yang digunakan serta URL database sambungkan
pada firebase lalu ubah echo menjadi INPUT, buzzer menjadi output. Program akan
melakukan perintah untuk memancarkan ultrasonik pada pemicu selama 10ms dan
dimatikan 10ms.

5. Challenge 2 : Percobaan dengan Telegram

5.1. Tujuan Percobaan

Tujuan pada challenge kedua ini yaitu membuat rangkaian lampu lalu lintas
sederhana menggunakan ESP8266 yang dikendalikan melalui bot telegram.

5.2. Alat dan Bahan Percobaan

Perangkat Lunak
Pada challenge kedua ini akan menggunakan Arduino IDE dan Telegram sebagai
kontrol nyala lampu pada rangkaian.
Perangkat Keras
ESP8266, lampu led (merah, kuning, dan hijau), resistor, breadboard, kabel jumper,
dan kabel USB digunakan sebagi perangkat keras dalam percobaan ini.
Kode / Script
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>

const char* ssid = "Internet";


const char* password = "!@#$%12345";

#define BOTtoken
"2124461382:AAFRbYsM4h67sLPAy78_fCohzgmcS_UnOlU" //bot-
telegram_token

#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int botRequestDelay = 1000;


unsigned long lastTimeBotRan;

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 14
IoT and Cloud 1

const int merah = 0;


const int kuning = 4;
const int hijau = 5;

void handleNewMessages(int numNewMessages){


Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));
for (int i = 0; i< numNewMessages; i++){
String chat_id = String(bot.messages[i].chat_id);

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 += "Gunakan perintah ini untuk mengontrol
output.\n\n";
welcome += "/merah untuk menghidupkan led merah on
\n";
welcome += "/kuning untuk menghidupkan kuning on
\n";
welcome += "/hijau untuk menghidupkan on \n";
welcome += "/state to request current GPIO state
\n";
bot.sendMessage(chat_id, welcome, "");
}
if(text == "/merah"){
bot.sendMessage(chat_id, "LED merah menyala", "");
digitalWrite(merah, HIGH);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
}
if(text == "/kuning"){
bot.sendMessage(chat_id, "LED kuning menyala", "");
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau, LOW);
}
if(text == "/hijau"){
bot.sendMessage(chat_id, "LED hijau menyala", "");
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
}
if(text == "/state"){
if(digitalRead(merah)){
bot.sendMessage(chat_id, "LED merah menyala",
"");
}else if(digitalRead(kuning)){
bot.sendMessage(chat_id, "LED kuning menyala",
"");

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 15
IoT and Cloud 1

}else{
bot.sendMessage(chat_id, "LED hijau menyala",
"");
}
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
#ifdef ESP8266
configTime(0, 0, "pool.ntp.org");
client.setTrustAnchors(&cert);
#endif
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid,password);

while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
}

void loop() {
// put your main code here, to run repeatedly:
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();
}
}

5.3. Langkah Pengerjaan

1. Siapkan perangkat lunak dan perangkat keras yang akan digunakan dalam
percobaan ini.
2. Hubungkan ESP8266 pada laptop menggunakan kabel USB.
3. Setelah terhubung, masukkan kode/script kedalam lembar kerja Arduino
IDE, lalu lakukan verify dan Upload.
4. Siapkan bot telegram yang ingin kita hubungkan ke perangkat keras.

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 16
IoT and Cloud 1

5. Pada kolom pencarian ketik botfather


6. Ketik /start, dan buat bot baru menyesuaikan intsruksi yang disediakan oleh
botfather.
7. Setelah selesai, simpan token untuk mengakses API. Token akan
digunakan untuk melengkapi pada program yang kita buat. Klik link yang
diberikan botfather untuk mengarahkan ke bot yang baru kita buat.
8. Sesuaikan SSID dan password, lalu ganti Botoken dengan token API yang
didapatkan dari botfather.
9. Lakukan konfigurasi pada ESP8266 melalui kode/script yang telah
dibuatkan untuk menghubungkan dan restart.
10. Buka serial monitor pada Arduino IDE untuk melihat hasil.
11. Berikan beberapa intstruksi ke dalam bot telegram seperti /state untuk
mengetahui kondisi saat itu dan berikan instruksi lainnya.

Gambar 5 Tampilan pada rangkaian

Gambar 6 Tampilan perintah pada telegram dan serial monitor

5.4. Analisa Percobaan

Pada challenge kedua ini kita dapat melakukan perintah untuk mengontrol lampu
pada rangkaian menggunakan telegram. BotRequestDelay dan LastTimeBotRan

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 17
IoT and Cloud 1

digunakan untuk memeriksa pesen telegram baru setiap 1000ms.


handleNewMessages() melakukan apa yang terjadi ketika pesan baru masuk.
Chat_id berguna untuk menyimpan dan mengambil ID obrolan dari pesan tertentu.
Setelah mengirim pesan, akan memulai serial monitor pada baud rate 115200. LED
diatur sebagai output. Dalam void loop, pesan baru diperiksa setiap detik. Pada
saat pesan masuk akan memanggil fungsi handleNewMessages().

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 18
IoT and Cloud 1

Referensi
[1] A. Manullang, Martin Clinton Tosima Saputra, D. Sipangkar, and A. M. Bangun,
Alexander Diva Grael Ardhi, “IoT and Cloud 1,” vol. 0,

IF 3122 - 2021, Program Studi Teknik Informatika, Institut Teknologi Sumatera - Halaman 19

Anda mungkin juga menyukai