Anda di halaman 1dari 16

LAPORAN PRAKTIKUM

MQTT
(Message Queuing Telemetry Transport)
MATA KULIAH SITEM EMBEDDED
TAHUN AJARAN 2018/2019

DISUSUN OLEH :

Nama : Moh. Arifin Ilham


Nim : 1703011
Kelas : D3TI 2A
Kelompok : 8

TEKNIK INFORMATIKA
POLITEKNIK NEGERI INDRAMAYU
Jl. Lohbener Lama No. 08 Lohbener Legok Kabupaten Indramayu Jawa Barat
Kode Pos 45252 Telp. (0234) 5746464 Email : info@polindra.ac.id
KATA PENGANTAR

Assalamualaikum wr., wb.

Dengan menyebut nama Allah SWT yang Maha Pengasih lagi Maha Panyayang, Saya
panjatkan puja dan puji syukur atas kehadirat-Nya, yang telah melimpahkan rahmat, hidayah, dan
inayah-Nya kepada saya, sehingga saya dapat menyelesaikan laporan tentang “MQTT (Message
Queuing Telemetry Transport)”.
Laporan ilmiah ini telah saya susun dengan maksimal dan mendapatkan bantuan dari
berbagai pihak sehingga dapat memperlancar pembuatan laporan ini. Untuk itu saya
menyampaikan banyak terima kasih kepada semua pihak yang telah berkontribusi dalam
pembuatan laporan ini.
Terlepas dari semua itu, Saya menyadari sepenuhnya bahwa masih ada kekurangan baik
dari segi susunan kalimat maupun tata bahasanya. Oleh karena itu dengan tangan terbuka saya
menerima segala saran dan kritik dari pembaca agar saya dapat memperbaiki laporan ilmiah ini.
Akhir kata saya berharap semoga laporan ilmiah tentang MQTT (Message Queuing
Telemetry Transport) ini dapat memberikan manfaat maupun inpirasi terhadap pembaca.
Puji syukur saya panjakan kehadirat Allah swt., yang mana atas limpahan rahmat dan karunia-Nya

Wassalamualaikum wr., wb.

Indramayu, Desember 2018

Penyusun

ii
DAFTAR ISI

KATA PENGANTAR .......................................................................................................... ii


DAFTAR ISI......................................................................................................................... iii
BAB 1 PENDAHULUAN
1.1.Latar Belakang.............................................................................................................. 1
1.2.Rumusan Masalah ........................................................................................................ 2
1.3.Tujuan Penulisan .......................................................................................................... 2
1.4.Manfaat Penulisan ........................................................................................................ 2
BAB 2 PEMBAHASAN
2.1.MQTT
2.1.1. Sekilas tentang Protokol ................................................................................... 3
2.1.2. Pengertian MQTT ............................................................................................ 3
2.1.3. Sinyal Kontrol .................................................................................................. 4
2.1.4. Broker, Publish, Subscribe dan Topic .............................................................. 5
2.2. Percobaan menggunaakn MQTT
2.2.1. Tujuan Percobaan ............................................................................................ 7
2.2.2. Alat dan Bahan ................................................................................................ 7
2.2.3. Langkah Kerja ................................................................................................. 7
2.2.4. Hasil Percobaan ............................................................................................... 11
BAB 3 PENUTUP
3.1. Kesimpulan ................................................................................................................ 12
3.2. Saran ........................................................................................................................... 12
DAFTAR PUSTAKA ........................................................................................................... 13

iii
BAB 1

PENDAHULUAN

1.1.Latar Belakang
Karena peran manusia yang belajar dan mendalami ilmu semua yang Anda maupun
penulis nikmati saat ini menjadi kenyataan, seperti: iPad, android, instagram, dan lain
sebagainya. Saat ini, menyebut nama Strawberry atau Blueberry, mungkin yang terlintas
dipikiran Anda adalah buah-buah segar untuk dimakan. Bagaimana jika penulis
menyebutkan Blackberry? tanpa berpikir panjang Anda dengan yakin mengetahuinya
sebagai salah satu smartphone yang terkenal dengan fasilitas BBM-nya. Walaupun
sebenarnya Blackberry pun adalah salah satu buah yang namanya berakhiran berry. Di
dunia ada lebih dari sepuluh buah – buahan yang namanya berakhiran berry.
Makalah ini akan membahas tentang Rapsberry. Rapsberry juga termasuk dalam
keluarga buah-buahan berry. Namun, penulis akan berbagi tentang salah satu berry, yaitu
Rapsberry Pi. Pernahkah terbayang dalam benak pikiran menggunakan komputer super
mini dalam menjalani aktifitas sehari – hari? Sebuah inovasi baru telah dilakukan oleh
yayasan nonprofit Rapsberry Pi Fondation asal Inggris dengan menciptakan sebuah
komputer mungil seukuran kartu kredit yang diberi nama sesuai dengan nama yayasan
pembuatnya, Rapsberry Pi.
Raspberry Pi adalah sebuah SBC (Single Board Computer) seukuran kartu kredit
yang dikembangkan oleh Yayasan Raspberry Pi di inggris (UK) dengan maksud untuk
memicu pengajaran ilmu komputer dasar di sekolah-sekolah (Putra, 2012). Raspberry Pi
dikenalkan pada tahun 2012 dan memiliki Processor bernama Broadcom BCM2835
system on chip (SOC) yang telah memiliki ARM1176JZF-S 700 MHz CPU, untuk
Graphics telah disertakan VideoCore IV GPU, serta telah memiliki ram sebesar 256MB
untuk model A, dan telah ditingkatkan ke 512 MB untuk model B dan B+ pada generasi
pertama. Sedangkan untuk generasi kedua Raspberry Pi, dimana diperkenalkan pada
Februari 2015 memiliki Processor Broadcom BCM2836 SoC, dengan Processor quad-core
ARM Cortex-A7 CPU dan sebuah VideoCore IV dual-core GPU; serta memiliki ram
sebesar 1 GB. System on Chip yang dipakai oleh Raspberry Pi diciptakan oleh Boradcom,
dan menggunakan arsitektur ARM. Arsitektur ARM merupakan arsitektur prosesor 32-bit
RISC yang dikembangkan oleh ARM Limited. Dikenal sebagai Advanced RISC Machine
dimana sebelumnya dikenal sebagai Acorn RISC Machine. Pada awalnya merupakan

1
prosesor desktop yang sekarang didominasi oleh keluarga x86. Namun desain yang
sederhana membuat prosesor ARM cocok untuk aplikasi berdaya rendah. Hal ini membuat
prosesor ARM mendominasi pasar mobile electronic dan embedded system dimana
membutuhkan daya dan harga yang rendah.
Protokol MQTT (Message Queuing Telemetry Transport) adalah protokol yang berjalan
pada diatas stack TCP/IP dan mempunyai ukuran paket data dengan low
overhead yang kecil (minimum 2 bytes) sehingga berefek pada konsumsi catu daya yang
juga cukup kecil.

1.2.Rumusan Masalah
Berdasarkan latar belakang diatas dapat disusun rumusan masalah, sebagai berikut:
1) Seperti apakah MQTT itu dan apa saja yang ada didalamnya?
2) Bagaimanakah hasil percobaan Raspberry Pi yang menggunakan Protokol
MQTT?

1.3.Tujuan Penulisan
Berdasarkan rumusan masalah diatas dapat dibuat tujuan penulisan, sebagai berikut:
1) Menjelaskan MQTT dan komponen didalamnya.
2) Memberikan penjelasan secara lengkap mengenai hasil percobaan Raspberry Pi
menggunakan Protokol MQTT yang telah dilakukan.
.
1.4.Manfaat Penulisan
Berdasarkan tujuan penulisan diatas dapat kita ketahui bahwa manfaat dari penulisan
makalah ini adalah sebagai berikut:
1) memberikan dorongan serta semangat untuk mencari hal-hal baru yang
sekiranya dapat dimanfaatkan oleh orang banyak.
2) Memenuhi salah satu tugas mata kuliah system embedded.

2
BAB 2

PEMBAHASAN

2.1.MQTT
2.1.1. Sekilas tentang Protokol
Protokol merupakan peraturan atau prosedur untuk mengirimkan sebuah data pada
perangkat elektronik. Pada sistem komputer, setiap komputer berkomunikasi dengan
komputer lainnya menggunakan sebuah protokol. Banyak sekali jenis protokol, seperti
jenis protokol yang tidak terlalu asing ditelinga seperti UDP, FTP, TCP, ICMP dan yang
sering kita pakai untuk komunikasi IoT pada artikel sebelumnya yaitu HTTP (Hyper Text
Transfer Protocol). Begitu pula dengan MQTT, MQTT merupakan salah satu protokol
yang dapat digunakan untuk komunikasi pada sistem komputer.
MQTT (Message Queuing Telemetry Transport) protokol merupakan sebuah
protokol yang berjalan diatas stack TCP/IP dan dirancang khusus untuk machine to
machine yang tidak memiliki alamat khusus. Maksud dari kata tidak memiliki alamat
khusus ini seperti halnya sebuah arduino, raspi atau device lain yang tidak memiliki
alamat khusus. Sistem kerja MQTT menerapkan Publish dan Subscribe data. Dan pada
penerapannya, device akan terhubung pada sebuah Broker dan mempunyai
suatu Topic tertentu.

2.1.2. Pengertian MQTT


Protokol MQTT (Message Queuing Telemetry Transport) adalah protokol yang
berjalan pada diatas stack TCP/IP dan mempunyai ukuran paket data dengan low
overhead yang kecil (minimum 2 bytes) sehingga berefek pada konsumsi catu daya yang
juga cukup kecil.

Protokol ini adalah jenis protokol data-agnostic yang artinya anda bisa mengirimkan data
apapun seperti data binary, text bahkan XML ataupun JSON dan protokol ini memakai
model publish/subscribe daripada model client-server.

Stack TCP/IP sekarang sudah banyak di dukung oleh mikrokontroler seperti seri
STM32Fx7 maupun device board yang umum dipasaran seperti Arduino Yun, Arduino +
Ethernet Shield, ESP8266 WiFi SoC, Raspberry Pi dll. Jadi sebenarnya banyak pilihan

3
untuk belajar IoT dengan memakai protokol ini ditambah lagi harga device yang semakin
murah dan terjangkau.

Sistem umum MQTT seperti pada gambar diatas membutuhkan dua komponent perangkat
lunak utama yaitu

 MQTT Client yang nantinya akan di install di device. Untuk Arduino anda bisa
memakai pubsubclient, pustaka seperti mqtt.js bisa dipakai pada platform Node.js
di Raspberry Pi ataupun laptop.

 MQTT Broker yang berfungsi untuk menangani publish dan subscribe data. Untuk
platform Node.js anda bisa memakai broker mosca sedangkan untuk platform yg lain
banyak broker tersedia seperti mosquitto, HiveMQ dll.

2.1.3. Sinyal Kontrol


MQTT mempunyai 14 tipe sinyal kontrol seperti berikut:

 CONNECT — Client request to connect to Server

 CONNACK — Connection Acknowledgement

 PUBLISH — A message which represents a new/separate publish

 PUBACK — QoS 1 Response to a PUBLISH message

 PUBREC — First part of QoS 2 message flow

 PUBREL — Second part of QoS 2 message flow

 PUBCOMP — Last part of the QoS 2 message flow

 SUBSCRIBE — A message used by clients to subscribe to specific topics

 SUBACK — Acknowledgement of a SUBSCRIBE message

 UNSUBSCRIBE — A message used by clients to unsubscribe from specific topics

 UNSUBACK — Acknowledgement of an UNSUBSCRIBE
message

4
 PINGREQ — Heartbeat message

 PINGRESP — Heartbeat message acknowledgement

 DISCONNECT — Graceful disconnect message sent by clients


before disconnecting

2.1.4. Broker, Publish, Subscribe dan Topic


Broker pada MQTT berfungsi untuk menghandle data publish dan subscribe dari
berbagai device, bisa diibaratkan sebagai server yang memiliki alamat IP khusus.
Beberapa contoh dari Broker yang ada seperti Mosquitto, HiveMQ dan Mosca.
Publish merupakan cara suatu device untuk mengirimkan datanya ke subscribers.
Biasanya pada publisher ini adalah sebuah device yang terhubung dengan sensor tertentu.
Subscribe merupakan cara suatu device untuk menerima berbagai macam data dari
publisher. Subscriber dapat berupa aplikasi monitoring sensor dan sebagainya,
subscriber ini yang nantinya akan meminta data dari publisher.
Topic seperti halnya pengelompokan data disuatu kategori tertentu. Pada sistem kerja
MQTT protokol ini, topic bersifat wajib hukumnya. Pada setiap transaksi data antara
Publisher dan Subscriber harus memiliki suatu topic tertentu.
Pada gambar desain sistem MQTT sederhana tersebut, terdapat 3 bagian penting
yaitu Publisher, Broker dan Subscriber. Setiap bagian memiliki tugas masing-masing,
berikut penjelasannya:

1. Blok Publisher

Pada blok Publisher, terdapat beberapa sensor, seperti contoh terdapat sensor A,
B dan C. Setiap sensor akan terhubung ke suatu gateway seperti Ethernet shield,
ESP8266, SIM800L atau device sejenisnya yang dapat menghubungkan kita ke
MQTT Broker. Antara gateway dan sensor pasti terdapat controller, Anda dapat
menggunakan controller seperti Arduino, RaspberryPi atau sejenisnya. Nah, tugas
dari Blok Publisher ini cukup sederhana yaitu mengirim data yang diambil
dari sensor A, B dan C ke suatu MQTT Broker dengan Topic data1.

2. MQTT Broker

MQTT Broker memiliki suatu alamat yang dapat diakses oleh Publisher dan
Subscriber. Tugas dari MQTT Broker ini yaitu sebagai penghubung transaksi

5
data antara publisher dan subscriber. MQTT Broker juga mengenali suatu data
lewat sebuah pengelompokan atau biasa disebut topic. Ketika Publisher mengirim
data sensor A, B, C dengan topic data1, dan suatu saat terdapat Subscriber yang
melakukan subscribe dengan topic yang sama data1, maka bisa dipastikan
Subscriber akan menerima data sensor A, B dan C dari Publisher.

3. Blok Subscriber

Blok Subscriber bertugas untuk melakukan subscribe data pada


topic data1. Setelah mendapatkan data yang berupa nilai sensor A, B dan C dari
publisher, kita dapat mengolah data-data tersebut untuk dimasukkan kedalam
database, dianalisis atau dapat kita proses menjadi sebuah sistem monitoring yang
terstruktur dan memiliki nilai jual.

Keuntungan dari sistem publish/subscribe adalah antara sumber pengirim data


(publisher) dan penerima data (klien) tidak saling mengetahui karena ada broker
diantara mereka atau istilah kerennya yaitu space decoupling dan yang lebih penting
lagi yaitu adanya time decoupling dimana publisher dan klien tidak perlu terkoneksi
secara bersamaan, misalnya klien bisa saja disconnect setelah melakukan subscribe
ke broker dan beberapa saat kemudian klien connect kembali ke broker dan klien
tetap akan menerima data yang terpending sebelumnya proses ini dikenal dengan
mode offline.

2.2. Percobaan menggunaakn MQTT


2.2.1. Tujuan Percobaan
Adapun tujuan dari percobaan ini adalah:
 Dapat mengirimkan data dari satu Raspberry Pi ke Raspberry Pi yang lainnya
menggunakan protocol MQTT.
 Data yang dikirimkan dapat menggunakan data dummy atau data sensor yang
dibaca.

2.2.2. Alat dan Bahan


 Alat Praktikum
a) Monitor
b) Keyboard

6
c) Mouse
d) Card Reader
e) Converter VGA to HDMI
f) Kabel USB
 Bahan-bahan Praktikum
a) Raspberry Pi 3
b) SDCard 16Gb

2.2.3. Langkah Kerja


Pada praktikum ini kita akan melakukan pengiriman data dari Raspbery Pi sat uke
Raspberry Pi yang lainnya. Berikut ini adalah langkah kerjanya:
1. Melakukan Setup Phyton
Disini kita menggunakan Raspbian dengan versi yang cukup baru, dimana dia sudah
terpasang dengan PIP. PIP adalah system management paket yang digunakan untuk
menginstal dan mengelola paket perangkat lunak yang ditulis dengan Phyton.
Pertama-tama hal yang harus kita lakukan adalam mendapatkan library dari MQTT
untuk digunakan Bersama Phyton.

2. Melakukan Setup Client


Selanjutnya kita akan menuliskan script Phyton yang mengatur Raspberry Pi sebagai
client yang terhubung ke server MQTT.
7
Disini saya mengakses Raspberry Pi dengan menggunakan keyboard, maka kita
hanya tinggal membuka Phyton Shell (Start Button > Programming > Phyton 2
(IDLE)) dan membuka script baru (File > File Baru). Pilih File > Save As dan
arahkan ke folder dokumen. Simpan file yang saat ini kosong sebagai
mqtt_client_demo.py.
Kemudian tuliskan code berikut ini:
# MQTT Client demo
# Continuously monitor two different MQTT topics for data,
# check if the received data matches two predefined 'commands'

import paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK response from the
server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))

# Subscribing in on_connect() - if we lose the connection and


# reconnect then subscriptions will be renewed.
client.subscribe("CoreElectronics/test")
client.subscribe("CoreElectronics/topic")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))

if msg.payload == "Hello":
print("Received message #1, do something")
# Do something

if msg.payload == "World!":
print("Received message #2, do something else")
# Do something else

# Create an MQTT client and attach our routines to it.


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("test.mosquitto.org", 1883, 60)

# Process network traffic and dispatch callbacks. This will also handle
# reconnecting. Check the documentation at
# https://github.com/eclipse/paho.mqtt.python
# for information on how to use other loop*() functions
client.loop_forever()
Kemudian, simpan file dengan cara menekan Ctrl + X lalu tekan Y lalu Enter untuk
menyimpan perubahan file.

8
Berdasarkan kode diatas, file ini akan berlangganan ke protocol MQTT di server
MQTT gratis (test.mosquitto.org). jika ada data yang dipublikasikan ke topik yang
diminati client ini, ia akan mencetaknya ke shell. Disini akan diperiksa apakah data
yang diterimasesuai dengan beberapa string yang sudah ditetapkan, jika demikian
kita dapat melakukan hal-hal lain. Ini bisa diaplikasikan pada apa saja seperti
mengedipkan LED ke menyalakan pompa kolam dan menyiram kebun.
Baris yang diawali dengan def adalah fungsi. Fungsi-fungsi ini dilampirkan ke
object mqtt-client yang telah didefinisikan sebagai client. Ketika peristiwa-
peristiwa tertentu seperti koneksi yang sukses ditetapkan atau pesan diterima, client
memicu fungsi-fungsi yang kami lampirkan ke client.on_connect dan
client.on_message.
Selanjutnya kita akan mempublikasikan beberapa data untuk diterima oleh client.
3. Publishing
Buat dokumen lain dengan nama mqtt_publish_demo.py dan masukkan code
berikut:
# MQTT Publish Demo
# Publish two messages, to two different topics

import paho.mqtt.publish as publish

publish.single("CoreElectronics/test", "Hello",
hostname="test.mosquitto.org")
publish.single("CoreElectronics/topic", "World!",
hostname="test.mosquitto.org")
print("Done")
Simpan file ini.
Script ini menampilkan data “Hello” untuk topik CoreElectronic / test dan
kemudian menampilkan data “Dunia!” ke topik CoreElectronic / topik.
Perlu diperhatikan bahwa topik tidak perlu dibuat atau dihapus. Cukup untuk
mempublikasikan dan berlangganan ke suatu topik.
Selanjutnya pastikan Raspberry Pi terhubung ke internet. Buka terminal dan
pastikan ada pada folder Document.
cd Documents
dari sini, kita akan memulai client kita. Masukkan perintah:
python mqtt_client_demo.py

9
Jika semuanya berjalan dengan baik, kita akan melihat pesan yang mengatakan
terhubung dengan kode hasil 0.
Buka instance terminal lain. arahkan ke folder Documents untuk menjalankan
script publikasi.
python mqtt_publish_demo.py
selanjutnya kita akan memasukkan perintah di terminal pertama.
CoreElectronics/test Hello
Received message #1, do something
CoreElectronics/topic World!
Received message #2, do something else

2.2.4. Hasil Percobaan

10
Penjelasan:

Berdasarkan output diatas, itu berarti percobaan yang kita lakukan semuanya berhasil.
Ketika kita nenbangun dan menjalankan mqtt_publish_demo.py pada perangkat yang
tersambung internet apapun yang dapat menjalankan phyton, Raspberry Pi akan
merespon dengan cara yang persis sama.

Untuk menghentikan script Phyton kita hanya tinggal menekan Ctrl + C.

11
BAB 3

PENUTUP

3.1. Kesimpulan
Protokol MQTT (Message Queuing Telemetry Transport) adalah protokol yang
berjalan pada diatas stack TCP/IP dan mempunyai ukuran paket data dengan low
overhead yang kecil (minimum 2 bytes) sehingga berefek pada konsumsi catu
daya yang juga cukup kecil.

3.2. Saran
Dengan kemajuan teknologi yang semakin pesat sebaiknya kita sebagai pelajar:

1. Semakin giat dan bersungguh-sungguh dalam mempelajari ilmu


pengetahuan dan teknolongi, karena bagaimanapun apa yang kita tanam
hari ini adalah apa yang akan kita petik kelak.
2. Jangan menyepelekan Pendidikan. Meskipun ilmu pengetahuan dan
kemampuan kita sudah sangat luar biasa tetapi semua itu juga harus
dibuktikan dengan adanya ijazah, karena pihak industri memerlukan bukti
pengakuan yang sah terhadap apa yang kita bisa lakukan.

12
DAFTAR PUSTAKA

https://medium.com/pemrograman/mengenal-mqtt-998b6271f585

http://reslab.sk.fti.unand.ac.id/index.php?option=com_k2&view=item&id=229:mengenal-
mqtt-protokol-untuk-iot&Itemid=303

https://www.academia.edu/10802310/Tutorial_Analisis_Variabel_Dummy_Independen_Non
-Linear

13

Anda mungkin juga menyukai