MQTT
(Message Queuing Telemetry Transport)
MATA KULIAH SITEM EMBEDDED
TAHUN AJARAN 2018/2019
DISUSUN OLEH :
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
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
Penyusun
ii
DAFTAR ISI
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.
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.
CONNACK — Connection Acknowledgement
UNSUBACK — Acknowledgement of an UNSUBSCRIBE
message
4
PINGREQ — Heartbeat message
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
6
c) Mouse
d) Card Reader
e) Converter VGA to HDMI
f) Kabel USB
Bahan-bahan Praktikum
a) Raspberry Pi 3
b) SDCard 16Gb
# 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))
# 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
# 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
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
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.
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:
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