• Tidak ada hasil yang ditemukan

PENGEMBANGAN SISTEM MONITORING POTENSI BANJIR BERBASIS APLIKASI MOBILE DAN IOT CLOUD PLATFORM BERBASIS PROTOKOL HTTP

N/A
N/A
Protected

Academic year: 2023

Membagikan "PENGEMBANGAN SISTEM MONITORING POTENSI BANJIR BERBASIS APLIKASI MOBILE DAN IOT CLOUD PLATFORM BERBASIS PROTOKOL HTTP"

Copied!
157
0
0

Teks penuh

(1)

PENGEMBANGAN SISTEM MONITORING POTENSI BANJIR BERBASIS APLIKASI MOBILE DAN IOT CLOUD PLATFORM

BERBASIS PROTOKOL HTTP

SKRIPSI

Disusun sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik (S.T)

Disusun oleh:

IQBAL MOHAMMAD ABDUL GHONI NPM. 3332160053

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SULTAN AGENG TIRTAYASA

2021

(2)

LEMBAR PERNYATAAN KEASLIAN SKRIPSI

Dengan ini saya sebagai penulis Skripsi berikut:

Judul : Pengembangan Sistem Monitoring Potensi Banjir Berbasis Aplikasi Mobile dan IoT Cloud Platform Berbasis Protokol HTTP

Nama Mahasiswa : Iqbal Mohammad Abdul Ghoni

NPM : 3332160053

Fakultas / Jurusan : Teknik/Teknik Elektro

Menyatakan dengan sesungguhnya bahwa Skripsi tersebut di atas adalah benar- benar hasil karya asli saya dan tidak memuat hasil karya orang lain, kecuali dinyatakan melalui rujukan yang benar dan dapat dipertanggungjawabkan.

Apabila di kemudian hari ditemukan hal-hal yang menunjukan bahwa sebagian atau seluruh karya ini bukan karya saya, maka saya bersedia dituntut melalui hukum yang berlaku. Saya juga bersedia menanggung segala akibat hukum yang timbul dari pernyataan yang secara sadar dan sengaja saya nyatakan melalui lembar ini.

Cilegon, 12 Juli 2021

Iqbal Mohammad Abdul Ghoni

NPM. 3332160053

(3)

LEMBAR PENGESAHAN

Dengan ini ditetapkan bahwa Skripsi berikut:

Judul : Pengembangan Sistem Monitoring Potensi Banjir Berbasis Aplikasi Mobile dan IoT Cloud Platform Berbasis Protokol HTTP

Nama Mahasiswa : Iqbal Mohammad Abdul Ghoni

NPM : 3332160053

Fakultas / Jurusan : Teknik/Teknik Elektro

Telah diuji dan dipertahankan pada tanggal 12 Juli 2021 melalui Sidang Skripsi di Fakultas Teknik Untiversitas Sultan Ageng Tirtayasa Cilegon dan dinyatakan LULUS.

Dewan Penguji

Tanda Tangan

Pembimbing I : Rian Fahrizal, S.T., M.Eng. ...

Pembimbing II : Anggoro Suryo Pramudyo, M.Kom. ...

Penguji I : Masjudin, S.T., M.Eng. ...

Penguji II : Fadil Muhammad, S.T., M.T. ...

Mengetahui, Ketua Jurusan

Dr. Romi Wiryadinata, M.Eng.

NIP. 198307032009121006

(4)

KATA PENGANTAR

Puji syukur saya panjatkan kepada Tuhan Yang Maha Esa, karena atas berkat dan rahmat-Nya, saya dapat menyelesaikan skripsi ini. Penulisan skripsi ini dilakukan dalam rangka memenuhi salah satu syarat untuk mencapai gelar Sarjana Teknik Jurusan Teknik Elektro pada Fakultas Teknik Universitas Sultan Ageng Tirtayasa.

Saya menyadari bahwa, tanpa bantuan dan bimbingan dari berbagai pihak, dari masa perkuliahan sampai pada penyusunan skripsi ini, sangatlah sulit bagi saya untuk menyelesaikan skripsi ini. Oleh karena itu, saya mengucapkan terima kasih kepada:

(1) Orang tua dan keluarga yang telah memberikan bantuan dukungan material dan moril;

(2) Bapak Dr. Romi Wiryadinata, M.Eng. selaku Ketua Jurusan Teknik Elektro;

(3) Bapak Rian Fahrizal, S.T., M.Eng. dan bapak Anggoro Suryo Pramudyo, M.Kom. sebagai dosen pembimbing yang telah memberikan arahan dan bimbingan selama penyusunan skripsi;

(4) Bapak Agusutrisno, S.Si., M.Sc. dan bapak Muhamad Otong, S.T., M.T.

selaku dosen wali yang telah mengarahkan dalam hal akademik;

(5) Semua pihak yang telah banyak membantu yang tidak dapat disebutkan satu persatu, terima kasih banyak atas bantuan, dukungan dan motivasinya selama melaksanakan studi dan menyelesaikan skripsi ini.

Akhir kata, saya berharap Tuhan Yang Maha Esa berkenan membalas segala kebaikan semua pihak yang telah membantu. Semoga skripsi ini membawa manfaat bagi pengembangan ilmu.

Cilegon, 12 Juli 2021

Penulis

(5)

ABSTRAK

Iqbal Mohammad Abdul Ghoni Teknik Elektro

Pengembangan Sistem Monitoring Potensi Banjir Berbasis Aplikasi Mobile dan IoT Cloud Platform Berbasis Protokol HTTP

Salah satu upaya untuk mengantisipasi banjir adalah dengan mengembangkan sistem peringatan dini berbasis Internet of Things (IoT). Dari hasil implementasi, IoT Platform dapat mengelola identitas dan meneruskan data dari perangkat IoT ke aplikasi mobile. Pengiriman data oleh perangkat IoT juga diautentikasi dengan JWT dan dienkripsi melalui TLS. Perangkat IoT juga dapat mengirimkan data dengan notifikasi yang berhasil diterima dengan baik oleh aplikasi mobile. Hasil pengukuran performa menunjukan IoT Platform mampu menerima 278 request per detik dari perangkat IoT dan 295 request per detik dari aplikasi mobile.

Kata kunci:

Platform IoT, Aplikasi Mobile, HTTP, Pemantauan, Sistem Informasi

(6)

ABSTRACT

Iqbal Mohammad Abdul Ghoni Electrical Engineering

Development of Flood Potential Monitoring System Based on Mobile Application and HTTP Protocol Based IoT Cloud Platform

One of the efforts to anticipate flooding is to develop an Internet of Things (IoT) based early warning system. From the implementation results, the IoT Platform can manage identities and forward data from IoT devices to mobile applications.

Data transmission by IoT devices is also authenticated with JWT and encrypted via TLS. IoT devices can also send data with notifications that are successfully received by mobile applications. The performance measurement results show that the IoT Platform is able to receive 278 requests per second from IoT devices and 295 requests per second from mobile applications.

Keywords:

IoT Platform, Mobile App, HTTP, Monitoring, Information System

(7)

DAFTAR ISI

LEMBAR PERNYATAAN KEASLIAN SKRIPSI ... ii

LEMBAR PENGESAHAN ... iii

KATA PENGANTAR ... iv

ABSTRAK ... v

ABSTRACT ... vi

DAFTAR ISI ... vii

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... x

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 3

1.3 Tujuan Penelitian ... 3

1.4 Manfaat Penelitian ... 3

1.5 Batasan Masalah ... 4

1.6 Sistematika Penulisan ... 4

BAB II TINJAUAN PUSTAKA ... 6

2.1 Internet of Things ... 6

2.2 IoT Platform ... 7

2.3 TCP/IP ... 7

2.4 Transmission Control Protocol (TCP) ... 8

2.5 Hypertext Transfer Protocol (HTTP) ... 9

2.6 JSON Web Token (JWT) ... 10

2.7 Transport Layer Security (TLS) ... 11

2.8 Node.JS ... 12

2.9 MongoDB... 12

2.10 Nginx ... 12

2.11 Android ... 13

2.12 Flutter SDK ... 13

2.13 Open Street Map ... 13

2.14 Kajian Pustaka... 13

BAB III METODE PENELITIAN... 15

3.1 Alir Penelitian ... 15

(8)

3.2 Komponen Penelitian ... 16

3.2.1 Hardware ... 16

3.2.2 Software ... 17

3.3 Analisis Permasalahan ... 18

3.4 Analisis Kebutuhan ... 18

3.5 Rancangan Sistem ... 19

3.5.1 Arsitektur IoT Platform ... 19

3.5.2 Alur Kerja ... 21

3.5.3 Skema Database ... 21

3.5.4 Skema Akses Protokol HTTP ... 22

3.5.5 Tampilan UI Admin ... 22

3.5.6 Tampilan UI Aplikasi Mobile ... 23

3.6 Skenario Pengujian ... 24

3.6.1 Pengujian TLS ... 24

3.6.2 Pengujian Fungsional ... 24

3.6.3 Pengujian Performa ... 25

3.7 Tempat dan Jadwal Penelitian... 26

BAB IV PEMBAHASAN ... 27

4.1 Persiapan Sistem ... 27

4.2 Implementasi ... 27

4.2.1 Implementasi IoT Platform ... 27

4.2.2 Implementasi Aplikasi Mobile ... 30

4.3 Pengujian ... 34

4.3.1 Pengujian Fungsional ... 34

4.3.2 Pengujian Performa ... 42

BAB V PENUTUP ... 49

5.1 Kesimpulan ... 49

5.2 Saran... 49

DAFTAR PUSTAKA ... 51

LAMPIRAN ... 55

Lampiran A Berkas Konfigurasi dan Catatan ... A-1

Lampiran B Kode Program IOT Platform ... B-1

Lampiran C Kode Program Aplikasi Mobile ... C-1

Lampiran D Data Pengukuran Performa ... D-1

(9)

DAFTAR TABEL

Tabel 3.1 Spesifikasi komputer 1 ... 16

Tabel 3.2 Spesifikasi komputer 2 ... 17

Tabel 3.3 Spesifikasi smartphone ... 17

(10)

DAFTAR GAMBAR

Gambar 2.1 Arsitektur tiga- dan lima- lapisan ... 6

Gambar 2.2 OSI model vs TCP/IP model ... 7

Gambar 2.3 TCP/IP stack ... 8

Gambar 2.4 Penyelarasan sequence number untuk koneksi TCP ... 9

Gambar 2.5 Model request/response... 10

Gambar 2.6 Skema URI ... 10

Gambar 2.7 Format JWT... 11

Gambar 2.8 Proses membangun koneksi TLS ... 11

Gambar 3.1 Alir penelitian ... 15

Gambar 3.2 Arsitektur tiga layer ... 19

Gambar 3.3 Arsitektur lima layer ... 20

Gambar 3.4 Alur kerja sistem ... 21

Gambar 3.5 Skema database... 22

Gambar 3.6 Tampilan UI admin ... 23

Gambar 3.7 Tampilan UI aplikasi mobile ... 23

Gambar 3.8 Skenario pengujian TLS ... 24

Gambar 3.9 Skenario pengujian fungsional ... 25

Gambar 3.10 Skenario pengujian performa 1 ... 25

Gambar 3.11 Skenario pengujian performa 2 ... 26

Gambar 4.1 Halaman akun layanan Firebase Console ... 28

Gambar 4.2 IoT platform telah berjalan ... 30

Gambar 4.3 Penyiapan dan konfigurasi SDK ... 31

Gambar 4.4 Menjalankan mode debug di Visual Studio Code ... 32

Gambar 4.5 Menampilkan aplikasi mobile pada mode debug ... 32

Gambar 4.6 Menampilkan aplikasi ter-install ... 33

Gambar 4.7 Rekaman TLS pada Wireshark ... 35

Gambar 4.8 Login Web admin ... 35

Gambar 4.9 Membuat identitas perangkat IoT ... 36

Gambar 4.10 Mengubah identitas perangkat IoT ... 37

(11)

Gambar 4.11 Menghapus identitas perangkat IoT ... 37

Gambar 4.12 Menambahkan perangkat ke halaman list ... 38

Gambar 4.13 Tampilan detail perangkat IoT ... 39

Gambar 4.14 Menghapus perangkat IoT dari halaman list ... 41

Gambar 4.15 Menampilkan notifikasi di aplikasi mobile ... 41

Gambar 4.16 Latensi saat perangkat iot mengirim data ... 43

Gambar 4.17 Success rate saat perangkat iot mengirim data... 43

Gambar 4.18 Bandwidth downstream saat perangkat IoT mengirim data ... 44

Gambar 4.19 Bandwidth upstream saat perangkat IoT mengirim data ... 44

Gambar 4.20 CPU saat perangkat IoT mengirim data ... 45

Gambar 4.21 Memory saat perangkat IoT mengirim data... 45

Gambar 4.22 Latensi saat pengguna mengakses aplikasi mobile ... 46

Gambar 4.23 Success rate saat pengguna mengakses aplikasi mobile ... 47

Gambar 4.24 Bandwidth downstream saat pengguna mengakses aplikasi mobile 47 Gambar 4.25 Bandwidth upstream saat pengguna mengakses aplikasi mobile .... 47

Gambar 4.26 CPU saat pengguna mengakses aplikasi mobile ... 48

Gambar 4.27 Memory saat pengguna mengakses aplikasi mobile ... 48

(12)

1.1 Latar Belakang

Banjir merupakan bencana yang sering terjadi di wilayah Indonesia.

Menurut data yang dihimpun oleh Katadata, pada tahun 2019 terjadi bencana banjir sebanyak 1.276 kasus dan pada tahun 2020 sudah terjadi bencana banjir sebanyak 555 kasus tercatat per 6 Juni [1]. Ada tiga faktor utama penyebab banjir di Indonesia yaitu kurangnya tutupan pohon, cuaca ekstrim (hujan lebat) dan kondisi topografis wilayah [2]. Banjir yang terjadi umumnya bisa menimbulkan masalah kesehatan, masalah kesehatan yang terjadi biasanya masyarakat yang terkena dampak banjir, terkena berbagai macam penyakit. Selain itu bencana banjir juga bisa menyebabkan kerusakan infrastruktur dan tentu hal ini menjadi semakin merugikan. Sehingga diperlukan adanya upaya mitigasi dan adaptasi untuk mengurangi resiko tersebut. Salah satu upaya adapatasi yang harus dilakukan adalah dengan mengembangan sistem peringatan dini banjir agar dampak merugikan bisa dikurangi dan segera diatasi.

Pemanfaatan Internet of Things (IoT) [3][4] bisa menjadi solusi untuk masalah di atas. Sistem peringatan dini banjir bisa dibuat dengan mengandalkan pembacaan sensor tentang keadaan potensi banjir di suatu wilayah secara real time dan terhubung ke Internet. Sehingga harusnya potensi bencana banjir bisa segera diketahui lebih cepat dan tindakan pencegahan dampak banjir bisa dilakukan segera pada saat yang bersamaan.

Implementasi Internet of Things di dunia semakin bertambah pesat seiring dengan kemajuan teknologi di bidang Sistem Tertanam dan Jaringan. Jumlah perangkat yang terhubung ke internet semakin banyak dari tahun ke tahun.

Menurut data yang diperoleh McKinsey yang dipublikasikan pada Juli 2019,

bisnis yang memanfaatkan Internet of Things bertambah dari 13% di tahun 2014

menjadi 25% saat itu [5]. Harga mikrokontroler dan komponen pendukungnya

menjadi lebih murah dan mudah dibeli. Selain itu perkembangan jaringan nirkabel

untuk perangkat kecil terus digalangkan hingga sekarang mengarah ke 5G [6]. Hal

(13)

ini membuka kemungkinan baru dalam hal Internet of Things seperti analisis real- time yang lebih baik dan kemungkinan keterlibatan Artificial Intelegence [7].

Menurut data dari Gartner, jumlah endpoints Internet of Things bertumbuh 32%

dari tahun 2016 ke 2021 hingga mencapai 25,1 miliar pemasangan di seluruh dunia sehingga ada sekitar 7,6 miliar perangkat terjual di tahun 2021 dan 64% di antaranya adalah peralatan consumer [8]. Selain dari manufaktur besar, pengembang kecil dan bahkan penghobi juga ikut berkontribusi dalam pesatnya proyek-proyek Internet of Things.

Namun, terdapat serangkaian masalah pada implementasi Internet of Things.

Kemampuan komputasi dan memori yang dimiliki perangkat IoT umumnya sangat kecil [9]. Masalah lainnya adalah soal skalabilitas, interoperabilitas dan heterogenitas karena perangkat yang terhubung bisa sangat banyak dan bermacam-macam [9]. Masalah keamanan juga tidak luput dari perhatian.

Dikarenakan kemampuan komputasi yang terbatas, perangkat IoT harus menggunakan teknik keamanan yang lebih ringan. Beberapa tipe mikrokontroler mungkin memiliki chip tersendiri untuk mempercepat enkripsi. Namun, tentu saja itu tidak secepat komputer atau Smartphone.

Maka dari itu diperlukan IoT Platform [10] dengan protokol komunikasi yang ringan, aman dan terstandarisasi untuk menghubungkan perangkat-perangkat IoT tersebut [11]. Salah satu protokol yang sering digunakan oleh para pengembang perangkat IoT adalah HTTP untuk mengirim data real-time berkelanjutan [12]. HTTP memiliki versi komunikasi khusus yang terenkripsi melalui lapisan TLS yaitu HTTPS [13][14]. Sehingga data yang dikirimkan melalui perangkat tidak bisa dicuri di dalam jaringan saat menuju ke IoT Platform.

Autentikasi umumnya menggunakan secret key per masing-masing perangkat.

Saat ini sudah banyak IoT Platform yang mendukung sistem komunikasi seperti di

atas. Seperti Amazon IoT, Azure IoT, Thingspeak, Google Cloud IoT dan lain-

lain. Namun, belum ada IoT Platform khusus yang berfokus menangani masalah

banjir. Pengembang umumnya masih harus membuat lagi sistem untuk memantau

nilai sensor. Hal ini menambah beban pengembang untuk membuat sistem

tambahan tersebut. Akhirnya pengembang yang lebih fokus ke perangkat IoT

(14)

membuat sistem monitoring secukupnya. Sehingga menghasilkan software monitoring yang rumit digunakan oleh masyarakat.

Jadi penelitian ini mengembangkan Sistem Monitoring Potensi Banjir Berbasis aplikasi mobile android dan IoT Platform Berbasis Protokol HTTP. Hal ini dilandaskan pada penggunaan Smartphone yang mencapai 63,3% populasi di Indonesia pada tahun 2019 dan diperkirakan terus naik hingga 89,2% pada tahun 2025 [15]. Aplikasi Mobile yang dibuat sangat mudah dijangkau dan digunakan masyarakat, kemudian pemilihan HTTP karena banyaknya perangkat IoT menggunkan protokol ini serta model komunikasi REST yang sesuai [16].

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas dapat dirumuskan bahwa perlu adanya sistem monitoring serta sistem peringatan yang baik agar resiko bencana banjir bisa dikurangi. Salah solusinya dengan memanfaatkan teknologi IoT dan aplikasi mobile. Kedua teknologi tersebut memiliki permasalahan sendiri dalam penerapannya yang harus diatasi juga agar bisa tercapai sistem monitoring dan sistem peringatan yang baik.

1.3 Tujuan Penelitian

Penelitian ini bertujuan untuk membangun sistem monitoring dan sistem peringatan potensi bencana banjir berbasis aplikasi mobile dan IoT Platform.

1. Membangun IoT Platform berbasis protokol HTTP untuk menjembatani pengiriman data dari perangkat IoT ke aplikasi mobile.

2. Mengukur performa IoT Platform dalam menangani jumlah pengguna aplikasi dan perangkat IoT yang banyak.

3. Membangun aplikasi monitoring potensi bencana banjir berbasis mobile android untuk pengguna.

1.4 Manfaat Penelitian

Hasil dari penelitian ini diharapkan menghasilkan manfaat bagi pengguna

(masyarakat) agar bisa memantau dan mendapatkan notifikasi peringatan potensi

(15)

bencana banjir melalui aplikasi mobile yang dibuat. Diharapkan juga dengan IoT Platform yang dibuat, management perangkat IoT lebih mudah serta lebih aman.

1.5 Batasan Masalah

Agar penulisan skripsi ini tidak membahas terlalu luas dan dapat mencapai hasil yang optimal, maka batasan ruang lingkup pembahasannya sebagai berikut:

1. Pengujian dilakukan di perangkat local dan jaringan local area network.

2. Pengujian akses perangkat IoT digantikan oleh program mock device yang melakukan pengiriman data selayaknya perangkat IoT.

3. Spesifikasi protokol HTTP yang diterapkan merupakan versi 1,1.

4. Keamanan yang dibahas hanya mencakup TLS dan autentikasi yang merupakan standar wajib.

5. Pengujian meliputi pengujian TLS, fungsional dan performa saja.

6. Pengujian performa hanya dilakukan untuk IoT Platform dengan parameter success rate, recource usage dan latency.

7. Aplikasi mobile hanya dibuat untuk sistem operasi Android dan diuji pada versi 8.

8. Pengujian IoT Platform hanya di sistem operasi Ubuntu 16.04.

1.6 Sistematika Penulisan

Sistematika penulisan digunakan untuk memberi gambaran yang jelas tentang susunan materi yang dibuat. Sistematika pada penelitian ini sebagai berikut. Bab I, pendahuluan yang berisi tentang latar belakang, tujuan penelitian, rumusan masalah, batasan masalah, manfaat penelitian, dan sistematika penulisan.

Bab II, tinjauan pustaka yang membahas Internet of Things secara konseptual,

protokol komunikasi, algoritma dan konsep kerja software yang digunakan. Bab

III, metodologi penelitian yang digunakan untuk membangun IoT Platform serta

aplikasi mobile. Selain itu bab ini juga memuat instrumen penelitian yang

menjelaskan perangkat-perangkat yang digunakan dalam penelitian ini, baik

perangkat lunak dan perangkat keras. Terdapat pula perancangan penelitian yang

berisi analisis permasalahan, analisis kebutuhan, alur kerja, skema database,

(16)

desain UI, flowchart sistem, metode pengujian. Pada bagian akhir bab ini adalah

tempat dan waktu penelitian. Bab IV, hasil dan pembahasan yang berisi tentang

hasil penelitian dan pembahasan yang berupa penjelasan dari implementasi dan

hasil pengujian yang telah didapat. Bab V, penutup yang berisi tentang uraian

hasil penelitian yang ditulis secara singkat, jelas dan padat serta berkorelasi

dengan tujuan yang dibuat. Terdapat pula saran yang dapat memperbaiki

penelitian yang telah dilakukan.

(17)

2.1 Internet of Things

Internet of Things (IoT) merupakan jaringan yang menghubungkan perangkat apa saja dengan Internet melalui protokol tertentu untuk melakukan pertukaran informasi, komunikasi dan membangun sistem cerdas [3]. Perangkat- perangkat IoT ini mengandalkan protokol komunikasi mesin ke mesin (Machine- to-machine/M2M), jaringan sensor nirkabel, dan komponen komputasi di sistem tertanam seperti mikrokontroler [4].

A. Arsitektur IoT

Internet of Things memiliki karakteristik yang membedakannya dengan implementasi Internet pada umumnya. Hal ini karena perbedaan skala, ukuran komputasi yang dibutuhkan, dan variasi perangkat yang ada. Menurut ITU-T Y.2060 [9] karakteristik fundamental dari IoT yaitu interkonektifitas, layanan terkait benda (things-related), heterogensi, perubahan dinamis dan skala yang sangat besar. Berikut merupakan arsitektur tiga dan lima lapisan yang dapat dilihat pada Gambar 2.1.

Gambar 2.1 Arsitektur tiga- dan lima- lapisan

Penelitian ini yang merujuk pada arsitektur “Three- and Five- Layer” [17]

seperti ditunjukan pada (Gambar 2.1). Bentuk dasar arsitektur ini menggunakan

tiga lapisan (Three layer) yang menunjukan gagasan utama sistem. Lapisan

tersebut terdiri dari Application, Network, dan Perception. Meski secara prinsip

sudah memadai, tiga lapisan arsitektur ini tidak cukup spesifik untuk digunakan

(18)

dalam penelitian. Sehingga dikembangkan menjadi lima lapisan yang terdiri dari Business, Application, Processing, Transport, dan Perception.

Protokol jaringan IoT bisa dibentuk dengan landasan protokol TCP/IP.

Namun, Internet Engineering Task Force (IETF) dan Internet Protocol for Smart Objects (IPSO) mempunyai rekomendasi alternatif yang diperuntukan khusus pada IoT[9]. IETF juga menerbitkan RFC6550 ditahun 2012 tentang Low-Power and Lossy Networks (LLNs) yang menstandarisasi routing protocol IPv6 untuk jaringan perangkat berdaya rendah [18].

B. IoT Platform

IoT Platform dapat didefinisikan sebagai sebuah lapisan cerdas yang menghubungkan perangkat IoT ke jaringan dengan tujuan untuk memungkinkan pengembangan suatu layanan tertentu [10]. Secara umum, ada enam komponen fungsional dari IoT Platform yaitu penyimpanan data, kemanan dan privasi, menejemen perangkat, menejemen pemrosesan dan tindakan, perangkat tambahan dan antarmuka eksternal [11].

2.2 TCP/IP

Paket protokol TCP/IP (Transmission Control Protocol / Internet Protocol) merupakan sebuah kesatuan konvensi yang memperkenalkan konsep empat lapisan terdiri dari Application, Transport, Internet, dan Network Interface [19].

Berbeda dengan pemodelan OSI yang berdasarkan tujuh layer [20]. (Gambar 2.2) menunjukan perbandingan antara pemodelan OSI dengan TCP/IP. Model OSI kerap digunakan dalam konsep-konsep jaringan.

Gambar 2.2 OSI model vs TCP/IP model

(19)

Berdasarkan pada Gambar 2.2, setiap lapisan TCP/IP memiliki kegunaan masing-masing dan implementasi yang bermacam-macam. Protokol di lapisan aplikasi bisa bergantung pada protokol tertentu pada lapisan transport. (Gambar 2.3) ini diperlihatkan protokol yang sering dijumpai pada masing-masing lapisan.

Gambar 2.3 TCP/IP stack

Berdasarkan pada Gambar 2.3, terdapat 4 lapisan yang sering dijumpai.

Diantaranya yaitu terdapat Network Interface Layer atau Link Layer, kemudian ada Internet Layer, lalu dilanjut ke Transport Layer, dan yang terakhir ialah Application Layer.

2.3 Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP) merupakan standar yang mendefiniskan cara untuk membangun dan mempertahankan percakapan berlangsung di jaringan melalui penerapan program yang bisa bertukar data [21].

Protokol ini termasuk di lapisan Transport pada model TCP/IP dan lapisan

Session pada model OSI (2.3). TCP merupakan connection-oriented protocol,

sehingga koneksinya tetap terhubung dan dipertahankan hingga perangkat di

kedua sisi selesai bertukar data. Paket-paket dari lapisan aplikasi dipecah pada

protokol ini menjadi paket-paket kecil yang bisa dilewatkan oleh lapisan intenet

(20)

dan network interface. Proses sebaliknya dilakukan ketika menerima paket dari luar perangkat. TCP juga menangani pengiriman ulang paket jika paket rusak saat ditransmisikan. Ini yang mebedakannya dengan UDP secara signifikan [22]. TCP didefinisikan secara lengkap oleh Internet Engineering Task Force (IETF) dalam RFC793 [23]. TCP sangat penting karena mendefinisikan aturan dan prosedur standar untuk bagaimana informasi dikomunikasikan melalui internet. Sambungan TCP dilakukan dengan jabat tangan 3 arah antara klien dan server [24]. Proses sambungan tersebut bisa diilustrasikan seperti pada Gambar 2.4 berikut.

Gambar 2.4 Penyelarasan sequence number untuk koneksi TCP

Berdasarkan pada Gambar 2.4, proses sambungan tersebut mengilustrasikan jabat tangan tiga arah. Nomor urutan digunakan untuk memastikan data dipasang kembali dalam urutan yang benar sebelum diteruskan ke protokol aplikasi.

2.4 Hypertext Transfer Protocol (HTTP)

Hypertext Transfer Protocol (HTTP) merupakan protokol bermodel

stateless request/response pada Application Layer dengan menggunakan semantik

yang dapat diperluas dan muatan pesan yang self-descriptive untuk berinteraksi

secara fleksibel dengan sistem informasi hypertext berbasis jaringan [25]. HTTP

merupakan protokol bermodel stateless request/response yang bekerja dengan

(21)

pertukaran pesan melalui lapisan Transport atau Session yang dapat diandalkan.

Pertukaran ini terjadi antara Client dan Server seperti ditunjukan Gambar 2.5.

Gambar 2.5 Model request/response

Berdasarkan Gambar 2.5, model request/response memiliki timbal balik 2 arah. Uniform Resource Identifiers (URI) [26] digunakan di seluruh HTTP sebagai sarana untuk mengidentifikasi resource. Server menggunakan referensi URI ini untuk menargetkan maksud request dari Client. Skema URI ditunjukan pada Gambar 2.6 berikut.

Gambar 2.6 Skema URI

Gambar 2.6 menunjukkan skema URI, yang dimana Request dan Response HTTP memiliki semantic masing-masing yang mendefinisikan bagaimana pemformatan data dalam isi pesan yang dikirimkan melalui TCP. Kedua format pesan tersebut memiliki isi yang disebut Payload atau Content pada baris byte setelah header. Setiap Request HTTP terdiri dari Request Method dan Request Header. Sementara Response HTTP terdiri dari Status Code dan Response Header. Hal ini terstandarisasi dalam RFC7231 [27].

2.5 JSON Web Token (JWT)

JSON Web Token merupakan format representasi sebuah klaim yang ringkas

yang digunakan di lingkungan ruang terbatas seperti header autorisasi HTTP dan

parameter kueri URI [28]. JWT terdiri dari tiga bagian string (header, payload

(22)

dan signature) yang dipisahkan dengan titik [29]. Hal tersebut seperti ditunjukan pada Gambar 2.7 berikut.

Gambar 2.7 Format JWT

Berdasarkan pada Gambar 2.7, dapat dilihat bahwa terdapat klaim sub yang merupakan standar klaim untuk Subject. JWT terdiri dari tiga bagian string yang dipisahkan dengan titik. Bagian tersebut yaitu header, payload dan signature.

2.6 Transport Layer Security (TLS)

Transport Layer Security merupakan protokol yang bertujuan menyediakan saluran aman antara dua pihak yang berkomunikasi. Protokol ini distandarisasi dalam RFC8446 [30]. Saluran aman tersebut harus menyediakan autentikasi, konfidensialitas, dan integritas. Secara umum TLS/SSL menggunakan sembilan pesan untuk membangun komunikasi terenkripsi [14]. Berikut merupakan proses membangun koneksi pada Gambar 2.8 berikut.

Gambar 2.8 Proses membangun koneksi TLS

(23)

Berdasarkan pada Gambar 2.8, terdapat 9 langkah untuk membangun koneksi TLS. Setelah koneksi TCP berhasil terjalin, lapisan di atasnya sudah bisa menggunakan jaringan secara terenkripsi.

2.7 Program Pendukung Pengembangan IoT A. Node.JS

Node.JS merupakan sebuah runtime environment untuk JavaScript yang umumnya digunakan di server untuk menjalankan Back-end dari aplikasi [31].

JavaScript pada dasarnya berjalan secara single-threaded. Dalam filosofi Node.JS yang dinyatakan oleh Felix Geisendörfer, everything runs in parallel except your code [32]. Node.js menyediakan pustaka untuk menjalankan proses yang lebih dekat ke hardware. Pada program high-level (JavaScript), proses bisa meminta program low-level (C/C++) untuk mengerjakan pekerjaan berat. Program high- level tidak perlu menunggu sampai proses low-level selesai dan bisa melakukan proses yang lainnya. Ketika proses low-level tersebut selesai maka dapat memanggil callback yang diberikan oleh proses high-level. Itulah kenapa disebut asynchronous event-driven.

B. MongoDB

MongoDB merupakan database NoSQL (Not only SQL) yang berbasis dokumen [33]. Database ini terinspirasi dari Lotus Notes dan sangat mirip dengan model penyimpanan database key-value. Model ini pada dasarnya merupakan bentuk lebih lanjut dari penyimpanan key-value yang memungkinan key- nya bersarang. Setiap struktur dalam satu bentuk dokumen database ini disebut BSON yang sangat terinspirasi dari JSON dan kumpulan dokumen itu disebut collection.

C. Nginx

Nginx adalah perangkat lunak open source untuk penyajian web, reverse

proxying, caching, load balancing, streaming media, dan banyak lagi. Dahulunya,

perangkat lunak ini digunakan sebagai server web yang dirancang untuk kinerja

dan stabilitas maksimum. Selain kemampuan server HTTP-nya, Nginx juga dapat

berfungsi sebagai server proxy untuk email (IMAP, POP3, dan SMTP) serta proxy

balik dan penyeimbang beban untuk server HTTP, TCP, dan UDP. [34]

(24)

D. Android

Android merupakan sebuah sistem operasi open-source yang dikembangkan untuk Smartphone. Selain menjalankan sistem utama dari telepon genggam.

Sistem operasi ini juga menjembatani antara aplikasi dengan hardware pada Smartphone. Biasanya aplikasi Android ditulis dalam bahasa Java dan berjalan pada Virtual Machine (misal: Dalvik). Android memiliki Standard Development Kit (SDK) yang lengkap terdiri dari Integrated Development Environment (IDE), compiler, emulator, dan package bundler [35].

E. Flutter SDK

Flutter merupakan sebuah framework berbasis mobile open-source yang dapat digunakan untuk membangun aplikasi berbasis Android dan iOS dengan kode sumber yang sama menggunakan bahasa pemrograman Dart dengan sistem Ahead of Time [36]. Flutter dapat dengan mudah berkomunikasi dengan platform tanpa memerlukan jembatan yang melibatkan peralihan konteks antara ranah kode Dart dan ranah aplikasi native. Sehingga meningkatkan waktu mulai aplikasi.

F. Open Street Map

Open Street Map (OSM) merupakan layanan peta dunia yang bersifat terbuka, dibangun secara publik dan berlisensi Open Data Commons Open Database License 1.0 [37]. Sehingga kontributor dapat memiliki, memodifikasi dan membagikan data secara luas. Open Street Map memiliki beberapa Tile Server yang dapat digunakan secara terbuka dan gratis. Pengembang dapat mengintegrasikan software pemetaan mereka dengan menghubungkan Tile Server milik OSM dalam sebuah Tile Layer.

2.8 Kajian Pustaka

Sedikit banyak terinspirasi dan mereferensi dari penelitian-penelitian sebelumnya yang berkaitan dengan latar belakang masalah pada skripsi ini.

Beberapa tentang penelitian-penelitan terdahulu yang sejenis, diantaranya

penelitian yang memanfaatkan protokol HTTP melalui jaringan GSM pada modul

Sim900. Data dari sensor kemudian dikirimkan ke Thingspeak melalui protokol

HTTP tersebut. Hasilnya banjir dapat dipantau melalui aplikasi khusus. Sensor

(25)

juga dapat mengirimkan SMS peringatan ke nomor yang tersimpan dalam alat melalui jaringan GSM yang tersedia [38].

Kemudian, ada penelitian yang menggunakan Thingspeak sebagai media perantara untuk mengirimkan data dari sensor ke sosial media (twitter). Tweet yang terkirim dijadikan seperti notifikasi. Sementara pemantauan ketinggian airnya masih harus melalui dashboard Thingspeak [39]. Terdapat juga penelitian yang memanfaatkan protokol MQTT dan jaringan WLAN untuk komunikasi datanya [40].

Penelitian lainnya yaitu memanfaatkan API Twitter secara langsung.

Sehingga setiap perangkat IoT memerlukan API Key Twitter. Hal ini tentu tidak

cocok untuk penggunaan massal [41]. Terdapat juga penelitian yang data

pengukuran sensor ditampilkan pada sebuah website. Sehingga dapat di-monitor

dalam bentuk grafik. Kekurangan sistem ini adalah tidak memiliki sistem

peringatan saat website tersebut tertutup [42].

(26)

3.1 Alir Penelitian

Alir penelitian diadaptasi dari salah satu metode pengembangan software yaitu Waterfall. Penelitian ini terdiri dari beberapa tahap yang disusun dalam alir penelitian seperti ditunjukan pada Gambar 3.1 berikut.

Gambar 3.1 Alir Penelitian

Berdasarkan alir penelitian pada Gambar 3.1, dapat diketahui tahapan- tahapan yang digunakan untuk menyelesaikan penelitian tersebut dimulai dari dilakukannya analisis permasalahan, analisis kebutuhan dan tinjauan pustaka.

Selanjutnya yaitu perancangan sistem, tahap ini memastikan apakah rancangan

(27)

sistem sudah sesuai atau belum, jika sudah, maka dilanjut ke persiapan sistem.

Lalu dilakukannya impelementasi, dimana terdapat pengujian fungsional. Jika sistem sudah berjalan sesuai dengan rancangan, maka dilanjutkan dengan pengujian performa dan pengumpulan data. Tahap terakhir yaitu dilakukannya analisis data serta dibuat kesimpulan.

3.2 Komponen Penelitian

Penelitian ini menggunakan beberapa instrumen yang terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Proses implementasi program perangkat keras yang digunakan terdiri dari sebuah komputer dan sebuah Smartphone. Sementara untuk pengujian, perangkat keras yang diperlukan terdiri dari dua buah komputer dan satu Smartphone.

3.2.1 Hardware

Penelitian ini melibatkan tiga hardware yang terdiri dari dua komputer dan satu Smartphone. Masing-masing spesifikasi dan perannya sebagai berikut:

1. Komputer 1

Berikut merupakan spesifikasi lengkap yang ditunjukkan pada Tabel 3.1 di bawah.

Tabel 3.1 Spesifikasi komputer 1

Manufaktur Hawlett Packard

Arsitektur x86_64

Prosesor Intel® Core™ i3 CPU M 330 @ 2.13GHz

Memori 6 GB

Hardisk 250 GB

Sistem Operasi Linux Ubuntu OS 16.04 LTS (kernel: 4.4.0)

Berdasarkan Tabel 3.1, komputer 1 digunakan untuk proses implementasi

membangun program, sebagai pengganti perangkat IoT dalam pengujian

fungsional dan sebagai pengganti perangkat IoT pada pengujian performa

IoT Platform.

(28)

2. Komputer 2

Berikut merupakan spesifikasi lengkap yang ditunjukkan pada Tabel 3.2 di bawah.

Tabel 3.2 Spesifikasi komputer 2

Manufaktur ASUS

Arsitektur x86_64

Prosesor Intel Celeron N3060

Memori 2 GB

Hardisk 500 GB

Sistem Operasi Linux Lubuntu OS 16.04 LTS (kernel: 4.4.0)

Berdasarkan Tabel 3.2, komputer 2 digunakan sebagai IoT Platform pada pengujian fungsional dan performa.

3. Smartphone

Berikut merupakan spesifikasi lengkap yang ditunjukkan pada Tabel 3.3 di bawah.

Tabel 3.3 Spesifikasi smartphone

Manufaktur Xiaomi

Prosesor Snapdragon Quad-core Max 2.00GHz

Memori (RAM) 2 GB

Memori (ROM) 16 GB Total

Sistem Operasi Android 8.1.0 (kernel: 4.9.77)

Berdasarkan Tabel 3.3, smartphone digunakan untuk proses implementasi program serta pengujian fungsional aplikasi mobile.

3.2.2 Software

Sementara pada penelitian ini menggunakan beberapa software pendukung

yang dibutuhkan saat proses pengembangan sistem (development), instalasi dan

saat berjalan di lingkungan kerja sebenarnya (production). Software di bawah ini

merupakan yang dibutuhkan oleh komputer. Beberapa software hanya perlu

dipasang di komputer 1, yaitu: Android Studio, Flutter SDK dan VS Code.

(29)

Sementara pada komputer 2, yaitu: MongoDB v4.2.7, Node.js v12.13.1 LTS, Yarn 1.22.4, Nginx, PM2, OpenSSL dan Wireshark.

3.3 Analisis Permasalahan

Berdasarkan uraian latar belakang (1.1) dan rumusan masalah (1.2), didapati beberapa analisis permasalahan. Berikut analisis permasalahan yang ditemukan:

1. Kemungkinan jumlah perangkat IoT yang digunakan sangat banyak dan beragam. Sehingga ada kemungkinan IoT Platform mendapat sangat banyak permintaan komunikasi dari perangkat tersebut.

2. Perangkat IoT diletakan di tempat yang berbeda-beda dan memiliki nilai pengukuran yang berbeda-beda tergantung peletakannya.

3. Ada kemungkinan satu pihak yang tidak bertanggung jawab mecoba mengirim data ke IoT Platform dengan meniru perangkat IoT.

4. Posisi pengguna aplikasi mobile secara geografis berbeda-beda. Sementara pengguna hanya perlu peringatan potensi banjir di daerah sekitarnya saja.

5. Pengguna perlu tahu perkembangan banjir berdasarkan rekaman data-data terakhir untuk bisa memperkirakan kemungkinan potensi terburuk.

6. Sangat ada kemungkinan aplikasi mobile sedang tidak dibuka saat potensi banjir mulai muncul.

3.4 Analisis Kebutuhan

Setelah melalui analisis permasalahan tersbut, berikut analisis kebutuhan sistem secara fungsional dari penelitian ini yang di antaranya:

1. IoT Platform harus sanggup menerima banyak permintaan komunikasi.

2. Perangkat IoT harus memiliki identitas masing-masing sesuai nama atau lokasi peletakannya.

3. Perangkat IoT harus di-autentikasi dan komunikasinya dienkripsi saat mengirimkan data ke IoT Platform.

4. Pengguna bisa memilih perangkat IoT yang ingin ditampilkan di aplikasi

dan notifikasi.

(30)

5. Aplikasi mobile menampilkan rekaman data pengukuran berbanding waktu terakhir pembacaannya dalam bentuk grafik.

6. Aplikasi memunculkan notifikasi peringatan beserta status terakhirnya saat perangkat IoT meminta mengirimkannya.

3.5 Rancangan Sistem

Berlandaskan analisis kebutuhan tersebut, dibuat rancangan sistem yang dibuat. Hasil rancangan ini digunakan dalam implementasi yang sebenarnya.

3.5.1 Arsitektur IoT Platform

Penelitian ini menggunakan dua referensi arsitektur yaitu Tiga-Layer dan Lima-Layer. Arsitektur tiga-layer digunakan untuk menjelaskan gagasan IoT Platform yang dibuat. Sementara arsitektur lima-layer digunakan untuk menjelaskan secara rinci teknologi yang digunakan dan masing-masing perannya.

Berikut merupakan arsitektur tiga layer yang dapat dilihat pada Gambar 3.2.

Gambar 3.2 Arsitektur tiga layer

Berdasarkan pada Gambar 3.2, secara prinsip, IoT Platform ini bekerja dengan mengambil data pengukuran di lingkungan menggunakan IoT Device, mengirimnya melalui IoT Platform dan menampilkannya ke aplikasi mobile.

Berikut ini penjelasan untuk masing-masing layer:

1. Perception Layer

Pada lapisan ini ada IoT Device yang bertugas melakukan pengukuran di lingkungan dan mengirimkan datanya ke IoT Platform.

2. Network Layer

(31)

Pada lapisan ini terdapat IoT Platform yang merupakan jembatan untuk menyimpan dan mengirimkan data dari IoT Device ke Aplikasi Mobile.

3. Application Layer

Pada lapisan ini terdapat aplikasi mobile bernama Awas Banjir. Pengguna aplikasi ini merupakan masyarakat di daerah yang terpantau potensi banjir.

Aplikasi ini menampilkan hasil pengukuran dari IoT Device baik melalui tampilan utama sampai notifikasi. Berikut arsitektur lima layer yang dapat dilihat pada Gambar 3.3.

Gambar 3.3 Arsitektur lima layer

Berdasarkan pada Gambar 3.3, ini diperlihatkan arsitektur lima-layer yang

menjelaskan hal secara teknis. Arsitektur lima-layer memiliki komponen masing-

masing pada setiap layer-nya.

(32)

3.5.2 Alur Kerja

Perangkat IoT mengirim data ke IoT Platform, kemudian data direkam ke database di dalamnya. Jika perangkat IoT ingin menyebarkan notifikasi, maka IoT Platform mengirimnya ke Firebase Cloud Messaging yang kemudian diteruskan ke Smartphone pengguna. Smartphone pengguna mengambil data yang telah direkam saat pengguna membuka aplikasi mobile. Aplikasi mobile dan browser admin juga menggunakan Open Street Map untuk memunculkan peta lokasi perangkat IoT. Sementara Browser diperlukan oleh Administrator untuk mengatur identitas perangkat IoT. Alur kerja dari setiap komponen ditunjukan oleh Gambar 3.4 berikut.

Gambar 3.4 Alur kerja sistem

Berdasarkan pada Gambar 3.4, perangkat IoT mengirim data ke IoT Platform, kemudian data direkam ke database di dalamnya. Jika perangkat IoT ingin menyebarkan notifikasi, maka IoT Platform mengirimnya ke Firebase Cloud Messaging yang kemudian diteruskan ke Smartphone pengguna.

Smartphone pengguna mengambil data yang telah direkam saat pengguna membuka aplikasi mobile. Aplikasi mobile dan browser admin juga menggunakan Open Street Map untuk memunculkan peta lokasi perangkat IoT. Sementara Browser diperlukan oleh Administrator untuk mengatur identitas perangkat IoT.

3.5.3 Skema Database

Berikut skema database serta relasi antara satu sama lain yang dapat dilihat

pada Gambar 3.5 di bawah.

(33)

Gambar 3.5 Skema database

Berdasarkan pada Gambar 3.5, Database pada sistem ini terdiri dari tiga

collection

yaitu Devices dan Records_origin dan Records_perhour. Terdapat field last_recorded yang merupakan embeded object dari nilai rekaman terakhir.

Hal ini berguna seperti cache agar sistem tidak perlu melakukan look-up database terlalu lama untuk mencarinya. Sementara itu Records_perhour merupakan agregasi nilai rata-rata setiap 1 jam dari Records_origin agar tidak melakukan perhitungan berulang kali saat mengambil data. Field recorded_at diberi index khusus yaitu Time To Live (TTL) untuk memberi tahu kapan data harus dihapus dari database karena sudah tidak diperlukan lagi. Pada penelitian ini nilai TTL yang diberikan adalah 1 jam pada Records_origin dan 2 minggu pada Records_perhour.

3.5.4 Skema Akses Protokol HTTP

Perancangan akses protokol HTTP digunakan untuk mendefinisikan aturan dalam mengirimkan HTTP request ketika ingin mengirim atau mengambil data dari IoT Platform. Pada penelitian ini terdapat beberapa endpoint dengan masing- masing fungsi yang detailnya didefinisikan dalam (Lampiran A-9).

3.5.5 Tampilan UI Admin

Web admin yang dibuat merupakan Single Page App (hanya terdiri dari satu

halaman) dengan tiga layar seperti ditunjukan pada Gambar 3.6 berikut.

(34)

Gambar 3.6 Tampilan UI admin

Berdasarkan pada Gambar 3.6, admin bisa mengakses halaman admin melalui browser dengan mengetikan home-page domain aplikasi yang secara langsung mengakses endpoint GET /. Setelah itu muncul layar login, kemudian admin masuk menggunakan username dan password khusus admin. Halaman devices menampilkan daftar IoT Device. Jika diklik pada namanya maka muncul detail IoT Device dan admin bisa mengubah datanya pada halaman tersebut.

3.5.6 Tampilan UI Aplikasi Mobile

Tampilan aplikasi mobile terdiri dari tiga halaman yaitu List Devices, Add Device to List dan Detail Device seperti ditunjukan oleh Gambar 3.7 berikut.

Gambar 3.7 Tampilan UI aplikasi mobile

(35)

Berdasarkan pada Gambar 3.7, saat membuka aplikasi mobile ditampilkan daftar perangkat IoT yang sudah ditambahkan ke list sebelumnya. Jika diklik, maka muncul detail rekaman dari perangkat IoT dalam bentuk grafik sesuai dengan masing-masing pengukuran sensor. Pengguna juga bisa mendapatkan notifikasi saat aplikasi tertutup. Jika notifikasi itu ditekan, maka langsung ditujukan ke detail perangkat IoT yang terkait. Pengguna bisa menekan tombol tambahkan pada halaman awal untuk menuju halaman Add Device to List. Pada halaman tersebut pengguna bisa menambahkan perangkat IoT baru agar nantinya tampil di halaman List Device. Pengguna bisa menekan tombol hapus pada halaman Detail Device untuk menghapus perangkat IoT dari List.

3.6 Skenario Pengujian 3.6.1 Pengujian TLS

Berikut merupakan scenario pengujian TLS dengan pertukaran data antara Client dan Server yang dapat dilihat pada Gambar 3.8.

Gambar 3.8 Skenario pengujian TLS

Berdasarkan pada Gambar 3.8, pengujian TLS secara spesifik menguji enkripsi data pada lapisan transport. Pengujian TLS menggunakan Wireshark untuk melakukan sniffing packet data yang lewat antara perangkat IoT dengan IoT Platform atau aplikasi mobile dengan IoT Platform. Jika pertukaran data antara Client dan Server dienkripsi maka dianggap bahwa pengujian TLS berhasil.

3.6.2 Pengujian Fungsional

Pengujian fungsional dimaksudkan untuk memastikan bahwa sistem dapat melakukan sesuai yang perancangan (sesuai spesifikasi di Lampiran A-11).

Berikut skenario pengujian fungsional yang dapat dilihat pada Gambar 3.9.

(36)

Gambar 3.9 Skenario pengujian fungsional

Berdasarkan pada Gambar 3.9, perangkat IoT diperankan oleh sebuah program pada komputer 1 yang meniru cara kerja perangkat IoT yang sebenarnya.

Sementara IoT Platform diperankan oleh komputer 2 dan aplikasi mobile langsung diinstal di Smartphone.

3.6.3 Pengujian Performa

Pengujian performa terdiri dari dua kelompok yaitu antara perangkat IoT dengan IoT Platform dan aplikasi mobile dengan IoT Platform. Pengujian performa 1 mensimulasikan sejumlah 20 sampai 200 perangkat IoT yang mengirim ke IoT Platform. Skenario pengujian performa 1 dapat dilihat pada Gambar 3.10 berikut.

Gambar 3.10 Skenario pengujian performa 1

Berdasarkan pada Gambar 3.10, setiap perangkat IoT mengirim sebuah request. Namun, sebelumnya perlu dipersiapkan terlebih dahulu identitas perangkat IoT sebanyak 200 perangkat. Sehingga seluruh perangkat IoT menggunakan identitas yang berbeda.

Sementara pada pengujian performa 2 mensimulasikan 50 sampai 500

smartphone yang mengambil data dari IoT Platform. Skenario pengujian performa

1 dapat dilihat pada Gambar 3.11 berikut.

(37)

Gambar 3.11 Skenario pengujian performa 2

Berdasarkan pada Gambar 3.11, setiap smartphone mengirim sebuah request berisi permintaan mengambil 10 perangkat IoT yang terdaftar.

3.7 Tempat dan Jadwal Penelitian

Penelitian dilaksanakan di Laboratorium Student Research Club Teknik

Elektro Universitas Sultan Ageng Tirtayasa dari tanggal 7 Januari sampai dengan

7 Maret 2021.

(38)

4.1 Persiapan Sistem

Persiapan sistem dilakukan sebelum melangkah ke implementasi rancangan sistem penelitian. Hal ini berguna untuk memastikan bahwa lingkungan kerja yang digunakan telah siap dan tidak ada lagi kendala dalam pengembangan.

Diantaranya yaitu menginstall software terkait, mempersiapkan Firebase Cloud Messaging dan mempersiapkan mode debug pada smartphone.

Persiapan Firebase Cloud Messaging dilakukan dengan membuka halaman https://console.firebase.google.com, kemudian memilih

Tambahkan Project

. lalu masukkan nama proyek “awas-banjir” di Firebase Console tersebut dan menekan

Lanjutkan

. Lalu menekan

Lanjutkan

juga pada pilihan Google Analytics. Lalu tekan

Buat Project

dan tunggu hingga Project FCM berhasil dibuat.

Disini perlu diaktifkan developer mode melalui

Setelan > Sistem >

Tentang Ponsel

dan menekan nomor ponsel hingga 7 kali, kemudian mengaktifkan mode debug pada

Sistem dan Perangkat > Setelan Tambahan

> Opsi Pengembang

. Lalu mencentang bagian Debugging USB dan Install via USB.

4.2 Implementasi

4.2.1 Implementasi IoT Platform

Implementasi IoT Platform dilaksanakan dengan mengacu pada rancangan sistem dan menghasilkan program yang tersusun pada (Lampiran A-1). Setelah itu perlu serangkaian tahap berikut untuk menjalankannya.

1. Persiapan UI Web admin

Program UI Web admin tersimpan di dalam direktori admin. Program tersebut menggunakan package dari pihak ketiga yang perlu di-install terlebih dahulu agar bisa digunakan, kemudian perlu juga melakukan build untuk menghasilkan program khusus yang nantinya digunakan oleh IoT Platform.

Keduanya dilaksanakan dengan perintah berikut melalui terminal:

(39)

cd admin yarn install yarn build cd ..

Keluaran dari perintah di atas menghasilkan catatan (Lampiran A-2) yang menunjukan bahwa proses instalasi dan "build" telah berhasil meski dengan beberapa "warning".

2. Persiapan API Gateway

Program API Gateway tersimpan di dalam direktori server. Sama hal nya dengan web admin, program ini menggunakan package dari pihak ketiga yang perlu di-install terlebih dahulu dengan perintah di bawah ini:

cd server yarn install

Keluaran perintah di atas menghasilkan catatan (Lampiran A-3) yang menunjukan bahwa instalasi package berhasil. Sampai di sini, gateway masih menggunakan konfigurasi bawaan. Konfigurasinya diganti dengan membuat berkas

.env

di direktori server dengan isian sesuai (Lampiran A-15). Berikut merupakan halaman akun yang dapat dilihat pada Gambar 4.1.

Gambar 4.1 Halaman Akun Layanan Firebase Console

Berdasarkan Gambar 4.1, program memerlukan sebuah kunci pribadi untuk

menghubungkan ke Firebase Cloud Messaging yang berformat

JSON

. Berkas itu

(40)

didapat melalui Firebase Console, pada Setelan

project > Akun Layanan >

klik pada

Buat kunci pribadi baru

. Lalu menyimpan berkas tersebut dengan nama

fcm-key.json

di direktori server yang dapat dilihat pada (Lampiran A-7).

3. Membuat Sertifikat SSL

Sertifikat SSL diperlukan untuk membangun koneksi SSL di jaringan. Pada penelitian ini, digunakan metode self-signed certificate. Sertifikat yang dibuat ditanda-tangan sendiri dan tidak melibatkan Certificate Authority. Sertifikat ini cocok untuk pengujian atau penggunaan pribadi, tetapi tidak bisa digunakan secara publik. Sertifikat tersebut dihasilkan dengan perintah berikut:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/self-signed-skripsi.key -out /etc/ssl/certs/self- signed-skripsi.crt

Saat perintah tersebut dijalankan, muncul masukan data diri yang diperlukan (Lampiran A-4), kemudian private key tersimpan pada berkas

self-signed- skripsi.key

(Lampiran A-5) dalam direktori

/etc/ssl/private/

dan sertifikat tersimpan pada berkas

self-signed-skripsi.crt

(Lampiran A-6) pada direktori

/etc/ssl/certs/

.

4. Konfigurasi Nginx

Konfigurasi bawaan dari Nginx harus diganti karena IoT Platform menggunakan server utama tanpa domain khusus. Sehingga gateway memungkinkan untuk diakses melalui localhost dan alamat IP komputer tersebut.

Berkas konfigurasi bawaan terletak di dalam direktori

/etc/nginx/sites- available/

dengan nama

default

. Isi berkas diganti dengan (Lampiran A-16).

Konfigurasi di atas perlu diverifikasi untuk memastikan validitas sintaks dengan cara menjalankan perintah

nginx -t

. Hasil yang muncul seperti di bawah ini:

$ nginx –t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

5. Menjalankan IoT Platform

(41)

IoT Platform pada penelitian ini membutuhkan Nginx dan MongoDB untuk bisa berjalan. Sehingga kedua layanan tersebut perlu dijalankan terlebih dahulu menggunakan perintah di bawah.

sudo systemctl start nginx sudo systemctl start mongod

Setelah Nginx dan MongoDB berjalan, kemudian menjalankan program IoT Platform. Pertama,

index.js

yang merupakan program utama IoT Platform.

Kedua,

script cron-aweek-aggregate.js

yang mengkalkulasi nilai rata-rata rekaman sensor setiap jamnya.

cd server

pm2 start index.js cd scripts

pm2 start cron-aweek-aggregate.js cd ../..

Berikut merupakan halaman IoT platform yang telah berjalan yang dapat dilihat pada Gambar 4.2.

Gambar 4.2 IoT Platform Telah Berjalan

Berdasarkan pada Gambar 4.2, halaman web admin dibuka untuk memastikan bahwa IoT Platform telah berjalan dengan baik dan terbukti halamannya dapat diakses dengan baik.

4.2.2 Implementasi Aplikasi Mobile

Implementasi aplikasi mobile dilaksanakan dengan mengacu pada

rancangan sistem dan menghasilkan program khusus yang tersusun seperti pada

(Lampiran A-6). Namun, program tersebut belum bisa langsung digunakan pada

(42)

smartphone. Ada beberapa tahap dan berkas tambahan yang perlu dibuat menggunakan Visual Studio Code.

1. Persiapan dan Konfigurasi

Program aplikasi mobile menggunakan package dari pihak ketiga yang perlu di-install. Tata caranya yaitu, buka

terminal

melalui pilihan

Terminal > New Terminal

. Kamudian untuk meng-install package yang dibutuhkan menggunakan perintah di bawah ini.

$ flutter pub get

Running "flutter pub get" in mobile... 1,5s

Setelah itu, aplikasi perlu dikonfigurasi agar dapat mengakses IoT Platform dengan alamat yang tepat. Pada penelitian ini, IoT Platform berada di alamat

192.168.43.108

. IoT Platform sudah mendukung TLS, maka skema URI yang digunakan adalah HTTPS. Konfigurasi tersebut diterapkan dengan membuat sebuah berkas bernama

.env

dengan isian berikut:

API_BASE=https://192.168.43.108

Satu berkas lagi yang perlu diterapkan yaitu

google-service.json

. Berkas ini digunakan oleh aplikasi agar bisa menerima notifikasi dari IoT Platform melalui Firebase Cloud Messaging. Penyiapan dan konfigurasinya dapat dilihat pada Gambar 4.3 berikut.

Gambar 4.3 Penyiapan dan konfigurasi SDK

Berdasarkan pada Gambar 4.3, berkas ini didapatkan di Firebase Console melalui pilihan

Setelan Project > Umum >

lalu pada bagian

Aplikasi Anda

ada bagian

Penyiapan dan Konfigurasi SDK

. Berkas pengaturan diunduh dengan menekan

google-services.json

lalu diletakkan di dalam direktori

android/app

.

2. Percobaan Smartphone Mode Debug

(43)

Pada penelitian ini, dilakukan percobaan aplikasi terlebih dahulu melalui smartphone yang sudah diaktifkan mode debug atau mode pengembang dan terhubung ke komputer dengan Visual Studio Code. Mode debug dapat dilihat pada Gambar 4.4 berikut.

Gambar 4.4 Menjalankan mode debug di Visual Studio Code

Berdasarkan pada Gambar 4.4, Percobaan ini bertujuan memastikan tidak ada kecacatan dari sisi program. Setelah menekan F5 pada Visual Studio Code, muncul bilah mode debug dan debug console yang menyatakan aplikasi mode debug telah berjalan. Sementara itu juga muncul konfirmasi untuk meng-install aplikasi pada smartphone seperti pada Gambar 4.5 berikut.

Gambar 4.5 Menampilkan aplikasi mobile pada mode debug

Berdasarkan pada Gambar 4.5, aplikasi mobile berhasil berjalan dengan baik dan ditandai dengan label

debug

.

3. Bundel Aplikasi Android

Sebuah berkas tanda-tangan berformat

JKS

perlu disiapkan terlebih dahulu

sebelum menghasilkan bundel aplikasi android. Tanda tangan ini diperlukan oleh

(44)

compiler android dalam menghasilkan aplikasi yang sah. Berkas tanda tangan tersebut dibuat menggunakan software keytool yang merupakan bawaan dari Android Studio dengan perintah berikut.

keytool -genkey -v -keystore ~/skripsi-key.jks -keyalg RSA - keysize 2048 -validity 10000 -alias key

Hasilnya, berkas

skripsi-key.jks

pada (Lampiran A-7) tersimpan dalam direktori

/home/arsfiqball/

, kemudian menghubungkan berkas tersebut dengan aplikasi mobile dengan membuat sebuah berkas bernama

key.properties

di dalam direktori

app

dengan isian berikut:

storePassword=awasbanjir keyPassword=awasbanjir keyAlias=key

storeFile=/home/arsfiqball/skripsi-key.jks

Bundel aplikasi android dihasilkan dengan perintah di bawah ini. Perintah ini menghasilkan berkas

.apk

yang bisa dipasang oleh smartphone dengan arsitektur prosesor ARM, ARM64, atau X64.

flutter clean flutter build apk

Catatan perintah di atas (Lampiran A-7 sampai A-8) menunjukan bahwa aplikasi berhasil dibuat. Sementara bundel aplikasi mobile tersimpan dalam direktori

build/app/outputs/apk/release

dengan nama berkas

app- release.apk

. Berikut merupakan tampilan aplikasi yang sudah di install, yang dapat dilihat pada Gambar 4.6.

Gambar 4.6 Menampilkan aplikasi ter-install

Berdasarkan pada Gambar 4.6, aplikasi dapat dipasang dengan baik dengan

bundel tersebut aplikasi mobile yang tersimpan.

(45)

4.3 Pengujian

Penelitian ini menerapkan dua metode pengujian software yaitu pengujian fungsional dan performa. Pengujian TLS dikelompokan ke dalam pengujian fungsional. Pengujian menggunakan berbagai alat yang berbeda-beda (bawaan Ubuntu OS dan pihak ketiga). Maka untuk mempermudah, dibuat sebuah alat utilitas khusus berbasis command line yang menjembatani semua kebutuhan pengujian. Alat tersebut terletak dalam direktori

cloud/utils

dan di-install ke sistem menggunakan perintah di bawah ini.

cd utils

yarn global add $PWD

Seperti ditunjukan pada catatan instalasi (Lampiran A-8) bahwa instalasi berhasil dan menghasilkan sebuah alat command line bernama

awban-util

. Alat tersebut digunakan dalam pengujian sistem ke depan.

4.3.1 Pengujian Fungsional

Pengujian fungsional menguji apakah sistem berjalan dengan baik secara fungsi. Hasil masing-masing pengujiannya sebagai berikut.

1. Pengujian TLS

Pengujian TLS dilakukan dengan menangkap paket data yang lewat antara komputer client dan server menggunakan Wireshark. Tahap ini dicoba mengirimkan data pengukuran sensor dengan alat command line yang telah dibuat. Namun, terdapat kendala saat pengiriman. Yaitu penggunaan self-signed certificate yang ditandai sebagai bad certificate oleh sistem. Sehingga untuk memperbolehkan sistem melakukan request, percobaan ini diharuskan mengikut sertakan opsi

NODE_TLS_REJECT_UNAUTHORIZED=0

. Ini juga berakibat pada pengujian berikutnya. Hal ini tidak masalah mengingat sertifikat ini hanya digunakan untuk pengujian. Namun pada penerapan sebenarnya, sebaiknya menggunakan sertifikat resmi yang ditanda-tangani oleh Certificate Authority.

NODE_TLS_REJECT_UNAUTHORIZED=0 awban-util simulate-device-write- log -s https://192.168.43.108 -k private.pem -u 90 -w 1 -p 1 5ffab94c29c5cb10111aec4f

(46)

Setelah perintah di atas dijalankan, muncul paket-paket komunikasi antara dua host sesuai dengan teori TLS seperti ditunjukkan pada Gambar 4.7 berikut.

Gambar 4.7 Rekaman TLS pada Wireshark

Berdasarkan Gambar 4.7, setelah handshake terjadi, kemudian client bisa mengirim data melalui paket Application Data. Saat paket tersebut dibedah, terlihat bahwa data berhasil terenkripsi pada segmen Encyrpted Application Data dan tidak bisa dibaca oleh Wireshark.

2. Login Web Admin

Tampilan dari halaman login web admin dapat dilihat pada Gambar 4.8 berikut ini.

Gambar 4.8 Login web admin

Berdasarkan pada Gambar 4.8, hasilnya menunjukkan bahwa login web

admin berhasil. Setelah memasukan username dan password yang dikonfigurasi

pada Implementasi IoT Platform, kemudian menekan

login

. Tampilan diarahkan

ke halaman list perangkat.

(47)

3. Membuat identitas perangkat IoT

Hasil implementasi IoT Platform menuntut setiap perangkat IoT untuk memiliki pasangan kunci berbasis ES256 atau RS256. Kunci private dipegang oleh perangkat IoT, sementara kunci public dipegang oleh IoT Platform. Pada pengujian ini, dibuat sepasang kunci berbasis ES256 menggunakan perintah di bawah ini.

openssl ecparam -name prime256v1 -genkey -noout -out skripsi- private.pem

openssl ec -in skripsi-private.pem -pubout -out skripsi-public.pem

Berkas kunci private bernama

skripsi-private.pem

(Lampiran A-8).

Sementara berkas kunci public bernama

skripsi-public.pem

(Lampiran A-9).

Kunci public ini hanya bisa digunakan untuk memvalidasi data masuk dan tidak bisa digunakan untuk menandatangani data keluar. Hal ini menjamin bahwa hanya perangkat IoT saja yang bisa mengirim data. Penanganan terhadap perangkat palsu juga lebih kuat. Jika salah satu kunci bocor, hal tersebut tidak mempengaruhi data identitas perangkat IoT lainnya. Setiap perangkat IoT memiliki kunci yang berbeda. Kunci perangkat IoT juga bisa diganti dengan mudah. Langkah membuat identitasnya seperti pada Gambar 4.9 berikut.

Gambar 4.9 Membuat identitas perangkat IoT

Berdasarkan pada Gambar 4.9, berkas kunci private digunakan untuk

menandatangani identitas saat pengiriman data. Sementara berkas kunci public

digunakan untuk mengisi isian Secret Key.

(48)

Setelah admin menekan

Tambahkan

muncul halaman untuk mengisi data identitas perangkat IoT. Pada pengujian ini, dimasukkan nama Untirta dengan lokasi yang menunjuk ke Fakultas Teknik. Ketika tombol

Simpan

ditekan, halaman berpindah ke list perangkat IoT yang menunjukan ada identitas baru yang ditambahkan.

4. Mengubah identitas perangkat IoT

Langkah dalam mengubah identitas dapat dilihat pada Gambar 4.10 berikut.

Gambar 4.10 Mengubah identitas perangkat IoT

Berdasarkan Gambar 4.10, menunjukan web admin berhasil mengubah identitas perangkat IoT. Setelah admin mengubah data dan menekan tombol

Simpan

, sistem segera mengubah identitas sesuai dengan perubahan.

5. Menghapus identitas perangkat IoT

Langkah dalam menghapus identitas dapat dilihat pada Gambar 4.11 ini.

Gambar 4.11 Menghapus identitas perangkat IoT

Berdasarkan pada Gambar 4.11, menunjukan bahwa perangkat IoT bisa

dihapus. Terdapat alert untuk mengkonfirmasi apakah admin yakin menghapus

Referensi

Dokumen terkait

Life review therapy belum pernah diberikan pada lansia di Panti Sosial Tresna Werdha Sabai Nan Aluih Sicincin baik secara individu maupun kelompok, padahal terapi ini

Adakah pengaruh yang signifikan antara keterampilan proses dan kemampuan kemampuan berpikir kritis siswa kelas XI IPA 2 terhadap hasil belajar yang menerapkan

algae bio - mass with a hybrid process of algae biomass–silica coated MNPs that are formed by a sol–gel simultaneous process followed by coating with MNPs has

Uji normalitas menurut Dwi Priyatno bertujuan untuk mengetahui apakah populasi data berdistribusi normal atau tidak. Uji ini biasanya digunakan untuk mengukur

• Pengangkutan sungai adalah lebih penting di Sabah dan Sarawak kerana jalan raya dan jalan kereta api kurang dimajukan. • Pengangkutan ini hanya terhad di kawasan pedalaman kerana

Ijarah memiliki fleksibilitas yang tinggi dan potensi yang besar untuk penerbitan sukuk, tapi beberapa karakteristik penerbitan sukuk ijarah atau kesepakatan yang

Berbagai masalah yang dihadapi oleh guru disentra balok yaitu kurangnya kemampuan visual spasial didalam membangun balok dan pemahaman anak dalam berkreasi

Analisis potensi wilayah menggunakan parameter location quotient (LQ) dan faktor-faktor pengembangan sapi potong dianalisis dengan model regresi linier berganda,