HTTP dan MQTT merupakan protokol pengiriman data dari satu piranti ke piranti lain melalui jaringan komputer lokal maupun internet. Mana yang sebaiknya dipakai dalam penerapan pengendalian dan pemantauan jarak jauh melewati jaringan komputer baik lokal maupun internet, tentunya perlu dilihat karakteristik masing-masing protokol dengan mempertimbangkan kebutuhan. Berikut ini pembahasan prinsip-prinsip kerja HTTP dan MQTT.

HTTP

HTTP (Hypertext Transfer Protocol) merupakan protokol komunikasi data dengan konsep request/response yang melibatkan sebuah komputer server untuk melayani komputer klien dengan cara memberikan balasan ke komputer klien yang telah melakukan permintaan file tertentu.  Dengan kata lain, komputer server bertugas mendengarkan (listening) terus menerus pada port tertentu, dan jika ada komputer klien yang meminta (request) pada port yang sama, maka komputer server akan memberi balasan (response).   Pada konsep seperti ini, sebuah komputer klien tidak akan menerima file dari server sebelum ia meminta layanan tersebut.  

Secara sederhana, aliran komunikasi pada protokol HTTP dapat dilihat pada gambar di atas.  Pada komputer pribadi yang terhubung ke internet, sebuah program penelusur web (web browser) menggunakan protokol HTTP dalam mengakses halaman web dengan cara memasukkan alamat situs.  Pada dasarnya alamat situs tersebut merujuk pada sebuah alamat IP dengan port tertentu (port standar untuk HTTP adalah 80) dari sebuah komputer server web baik dalam cakupan lokal maupun internet, dalam hal ini yang menyediakan halaman situs web.   Jenis data yang dapat dikirim melalui protokol ini adalah teks, dokumen, gambar dan berkas multimedia lainnya seperti audio dan video.  Di sisi server yang menyediakan layanan ini, halaman web dapat dibagi menjadi web statis dan web dinamis. Halaman web yang statis memiliki isi yang sama setiap kali diakses oleh pengguna.  Sedangkan web yang dinamis memberikan informasi atau berkas sesuai parameter tertentu yang biasanya tergantung dari masukan pengguna, waktu, database, aplikasi yang diinstal di server dan lain-lain.  Untuk pembahasan yang lebih sederhana, maka dalam buku ini hanya fokus membahas HTTP untuk pengiriman teks.  Karena kapasitas memori pada mikrokontroler terbatas, maka informasi yang dikirim perlu dibatasi besarnya agar sistem dapat berjalan dengan optimal.   

MQTT

MQTT (Message Queuing Telemetry Transport) merupakan protokol untuk mengirimkan data dengan konsep publish/subscribe yang biasanya ukuran datanya kecil untuk mengefisiensikan energi dan transfer data.   Seperti halnya protokol HTTP, MQTT juga berjalan biasanya pada jalur komunikasi TCP/IP.  Seperti yang dijelaskan sebelumnya HTTP merupakan protokol pengiriman data dengan konsep request/response, yaitu pengguna (klien) harus melakukan permintaan ke server, baru setelah itu server membalas dengan data yang sesuai.  Sedangkan MQTT merupakan protokol berjenis event driven, artinya klien dan server bisa mengirim data kapan saja tidak tergantung permintaan.  Konsep publish/subscribe pada MQTT memerlukan sebuah MQTT broker, yang bertugas mengatur aliran data sesuai dengan topik (topic) tertentu dari klien yang mempublikasikan (publish) topik tersebut ke klien lain yang berlangganan (subscribe) tentang topik yang sama.   Selain laptop, ponsel, perangkat klien juga bisa merupakan sebuah alat dengan sumber daya kecil misalnya berbasis mikrokontroler dengan tenaga baterai.  Sedangkan MQTT broker biasanya diinstal di sebuah komputer atau komputer mini (single board computer, SBC) sesuai dengan sistem operasinya (Linux atau Windows).

Pengiriman data dengan konsep publish/subscribe ditunjukkan pada di atas.  Perangkat A merupakan sumber informasi tentang topik tertentu dengan data tertentu.  Topik dan data tersebut dikirim ke MQTT broker untuk selanjutnya diteruskan ke perangkat yang telah berlangganan topik tersebut, dalam hal ini perangkat B dan perangkat C.  Konsep ini memungkinkan sebuah perangkat dapat mempublikasikan dan berlangganan lebih dari satu topik, tergantung dari kebutuhan.   

Bagan di atas contoh penerapan MQTT pada suatu sistem yang terdiri dari 6 perangkat klien dan terhubung ke satu server sebagai MQTT broker.  Perangkat 1 mempublikasikan topik suhu ke broker yang selanjutnya perangkat 4 dan 5 menerima informasi publikasi suhu karena telah berlangganan topik suhu.  Perangkat 2 mempublikasikan topik kelembaban, namun karena tidak ada perangkat yang berlangganan topik kelembaban, maka informasi topik ini tidak diteruskan ke mana-mana.  Perangkat 3 mempublikasikan topik ketinggian, yang selanjutnya diterima oleh perangkat 6 karena berlangganan topik ketinggian.  Perangkat 6 mempublikasikan topik pompa, lalu informasinya diterima oleh perangkat 3 karena berlangganan topik pompa.  Dengan kata lain, perangkat 6 dapat mengendalikan pompa di perangkat 3 dan dengan saat yang sama menerima informasi ketinggian air dari perangkat tersebut.

Perangkat-perangkat klien dan server (MQTT Broker) juga dapat dijalankan pada satu komputer baik dalam sistem operasi Windows maupun Linux. Biasanya hal ini untuk membuat simulasi dan mempelajari bagaimana komunikasi itu bekerja sebelum diterapkan pada perangkat yang sebenarnya. Salah satu program MQTT broker adalah Eclipse Mosquitto, yang dapat diunduh di situs mosquitto.org secara gratis.

Sekarang mari kita memahami lebih dalam lagi dengan mempraktekkan bagaimana MQTT bekerja.  Berikut ini adalah panduan bagaimana cara instalasi Eclipse Mosquitto dan bagaimana mengkonfigurasi publisher dan subscriber di sebuah PC dengan sistem operasi Windows 10.

  1. Unduh program tersebut di mosquitto.org/download/ , pilih apakah 64bit atau 32bit tergantung prosesor dan sistem operasi pada PC.
  2. Instal file .exe tersebut di lokasi sesuai kebutuhan
  3. Buka cmd.exe (klik Windows + R, lalu klik cmd). Lakukan 3 kali.
  4. Arahkan masing-masing command prompt ke folder yang berisi program Mosquitto (sesuai pada tahap No. 2)
  5. Masing-masing jendela ini bertindak sebagai MQTT broker, subscriber dan publisher.
  6. Pada jendela MQTT broker ketik perintah ini diikuti tekan <enter>:
    mosquitto
  7. Pada jendela subscriber kita akan berlangganan topik suhu, untuk itu ketik perintah ini diikuti tekan <enter>:
    mosquitto_sub -t suhu
  8. Pada jendela publisher kita akan mempublikasi topik suhu dengan pesan 30C, untuk itu ketik perintah ini diikuti tekan <enter>:
    mosquitto_pub -t suhu -m 30C
    Perhatikan pada jendela subscriber, pesan 30C akan muncul sesaat setelah publisher mengirim topik dan pesan tersebut. Ulangi langkah ini dengan mencoba topik atau data yang lain.

Uji coba komunikasi MQTT pada satu komputer bisa dilihat di atas. Pada gambar ini program MQTT Broker berjalan dengan mendengarkan klien dan meneruskan pesan. Program MQTT Subscriber bertugas menerima pesan dari MQTT broker dengan topik suhu. Sedangkan MQTT publisher bertugas mengirim pesan lalu keluar. Untuk mengirim pesan lagi, MQTT publisher harus dipanggil lagi. Terlihat di jendela subscriber, bahwa pesan yang sampai adalah yang bertopik suhu, sedangkan yang bertopik kelembaban tidak diteruskan.
Contoh ini adalah pengiriman yang bisa dikatakan bahwa broker berada di localhost karena subscriber dan publisher berada di komputer yang sama. Pada aplikasi yang sebenarnya, biasanya broker berada di komputer server yang berbeda, sehingga pengaturan alamat IP dan port dari broker perlu di atur.
Pada mosquitto, parameter dasar yang perlu diketahui yaitu:

  1. Parameter -t untuk mengatur topik,
  2. Parameter -m untuk mengatur pesan yang dikirim.
  3. Parameter -h untuk mengatur alamat IP dari MQTT broker (default: localhost)
  4. Parameter -p untuk mengatur port dari MQTT broker (default: 1883)
  5. Parameter --help untuk menampilkan bantuan (cara menggunakan parameter)