SISTEM ANTREAN & PANGGILAN PASIEN KLINIK ESP32 DENGAN PROTOKOL MQTT VIA WEBSOCKET
Disusun oleh Kelompok 7 :
BAB I
PENDAHULUAN
Latar Belakang
Perkembangan teknologi telah mencapai pada satu titik dimana data tidak perlu diinputkan secara manual oleh manusia, dan hal itu disebut Internet of Things (IoT). Konsep dari IoT ini menjadikan suatu alat dapat menerima inputan secara mandiri melalui sensor-sensor maupun tombol antarmuka, serta mengeksekusi aksi melalui aktuator secara otomatis. Teknologi ini memungkinkan integrasi antara dunia fisik dan sistem digital guna mempermudah operasional pelayanan publik, salah satunya pada sistem antrean di fasilitas kesehatan atau klinik.
Namun, dalam pengembangan teknologi IoT yang semakin kompleks, muncul tantangan utama mengenai efisiensi komunikasi data real-time antara perangkat keras (microcontroller) dan aplikasi antarmuka pengguna (web dashboard). Protokol HTTP tradisional dengan mekanisme request-response memiliki keterbatasan berupa overhead header yang besar dan sifat ketidakpersistenan koneksi, sehingga kurang efisien jika diterapkan pada sistem antrean yang membutuhkan pembaruan data secara instan dua arah (full-duplex).
Oleh karena itu, pada praktikum ini dipelajari penerapan protokol Message Queuing Telemetry Transport (MQTT) yang dikombinasikan dengan teknologi WebSocket. MQTT merupakan standar komunikasi protokol terbuka yang didesain khusus untuk interaksi machine-to-machine (M2M) dengan model arsitektur Publish/Subscribe. Melalui jalur WebSocket pada port HTTP standard, aplikasi berbasis browser JavaScript (menggunakan library Eclipse Paho JS) dapat terhubung langsung ke MQTT Broker tanpa terhalang oleh aturan firewall jaringan, sehingga pembaruan antrean pasien dan perintah panggilan dapat ditransmisikan secara serentak tanpa jeda waktu.
BAB II
LANDASAN TEORI
2.1 Internet of Things (IoT) dan ESP32
Internet of Things (IoT) merupakan sebuah paradigma di mana berbagai perangkat fisik yang dilengkapi dengan sensor, mikrokontroler, dan perangkat lunak terhubung ke jaringan internet untuk mengumpulkan dan mempertukarkan data. ESP32 adalah modul mikrokontroler berbasis System-on-Chip (SoC) buatan Espressif Systems yang mendukung konektivitas WiFi (802.11 b/g/n) dan Bluetooth secara terintegrasi. ESP32 memiliki prosesor Tensilica Xtensa Dual-Core 32-bit yang sangat efisien untuk mengolah pemrosesan data IoT serta komunikasi jaringan.
2.2 Protokol MQTT (Message Queuing Telemetry Transport)
Message Queuing Telemetry Transport (MQTT) adalah protokol komunikasi data berbasis arsitektur Publish/Subscribe yang beroperasi di atas lapisan TCP/IP. Berbeda dengan protokol HTTP yang berbasis Request-Response dan memiliki overhead header besar, MQTT dirancang sangat ringkas (lightweight) sehingga menghemat konsumsi daya dan penggunaan bandwidth. Komunikasi MQTT melibatkan tiga elemen utama: Publisher (pengirim pesan), Broker (server perantara penyaring dan pendistribusi pesan), serta Subscriber (penerima pesan yang berlangganan pada topik tertentu).
2.3 WebSocket dan Eclipse Paho JavaScript Client
WebSocket adalah protokol komunikasi komputer dua arah (full-duplex) melalui saluran persisten tunggal berbasis TCP. Pada aplikasi peramban web (browser), protokol MQTT standar (port TCP 1883) tidak dapat diakses langsung oleh JavaScript karena aturan keamanan browser. Solusinya adalah mentransmisikan paket MQTT di atas lapisan WebSocket (MQTT via WebSocket) menggunakan port 8000/8083. Library Eclipse Paho JS merupakan pustaka klien open-source yang memungkinkan halaman web HTML/JS terhubung dan bertukar pesan langsung dengan MQTT Broker secara real-time.
2.4 Antarmuka I2C dan Komponen Periferal
Inter-Integrated Circuit (I2C) adalah protokol komunikasi serial sinkron dua kawat yang menggunakan saluran Serial Data (SDA) dan Serial Clock (SCL). Penggunaan backpack I2C pada modul layar LCD 16x2 memangkas kebutuhan jalur data sehingga ESP32 cukup menggunakan 2 pin GPIO untuk mengontrol tampilan karakter. Komponen pendukung lain seperti Push Button berfungsi sebagai sakelar input digital, sedangkan Buzzer dan LED bertindak sebagai aktuator keluaran sinyal audio-visual saat terjadi interaksi antrean.
BAB III
PEMBAHASAN
3.1 Perancangan Sistem
Sistem yang dirancang pada praktikum ini merupakan Sistem Antrean dan Panggilan Pasien Klinik berbasis IoT menggunakan ESP32 DevKitV1 yang disimulasikan melalui platform Wokwi dan dihubungkan ke Web Dashboard interaktif. Sistem ini menggantikan mekanisme pengambilan nomor antrean fisik konvensional dengan sistem terintegrasi digital yang memberikan konfirmasi audio-visual secara otomatis.
Pengunjung atau pasien dapat mengambil nomor antrean dengan menekan tombol fisik (Push Button) pada perangkat simulator. Informasi nomor antrean terbaru selanjutnya ditampilkan pada layar LCD 16x2 I2C dan dikirimkan secara langsung melalui komunikasi MQTT ke Web Dashboard Dokter. Petugas klinik atau dokter yang bertugas dapat melihat daftar antrean secara real-time dan melakukan panggilan pasien melalui tombol aksi pada web. Saat tombol panggilan ditekan, pesan instruksi dikirimkan kembali ke ESP32 via WebSocket untuk menyalakan indikator lampu (LED) dan membunyikan nada panggil (Buzzer).
Secara umum, sistem terdiri dari lima komponen utama, yaitu:
Input: Berupa Push Button pada ESP32 untuk mengambil antrean baru dan tombol aksi pada Web Dashboard untuk melakukan panggilan pasien.
Processing: Berupa ESP32 DevKitV1 yang memproses pembacaan tombol, kalkulasi akumulasi nomor antrean, serta menangani pengiriman/penerimaan paket MQTT.
Output: Berupa LCD 16x2 I2C sebagai penampil status nomor antrean, Buzzer sebagai indikator audio panggil, dan LED Merah sebagai sinyal visual.
Komunikasi: Berupa jaringan WiFi simulator (Wokwi-GUEST) dan broker MQTT publik (broker.hivemq.com) yang menghubungkan port TCP 1883 (ESP32) dengan port WebSocket 8000 (Web).
Monitoring & Control: Berupa Web Dashboard berbasis HTML/JS (Eclipse Paho MQTT) untuk memantau kedatangan antrean dan memanggil pasien secara jarak jauh.
3.2 Alat dan Komponen
Komponen yang digunakan dalam perancangan dan simulasi sistem adalah sebagai berikut:
3.3 Fungsi Masing-Masing Komponen
3.3.1 ESP32 DevKitV1
ESP32 berfungsi sebagai pusat pengendali utama sistem antrean. Mikrokontroler ini membaca masukan dari Push Button pada pin GPIO 14, menginkremen variabel counter antrean, memperbarui tampilan LCD 16x2 melalui jalur I2C (GPIO 33 & 27), serta mengendalikan pin sinyal Buzzer (GPIO 15) dan LED (GPIO 2). Selain itu, ESP32 mengelola koneksi WiFi terintegrasi, menerbitkan (publish) data antrean baru ke topik klinik/antrian/tambah, dan mendengarkan (subscribe) perintah panggilan dari topik klinik/antrian/panggil.
3.3.2 LCD 16x2 dengan Modul I2C
Layar LCD 16x2 dipasang menggunakan adapter backpack I2C dengan alamat `0x27`. Penggunaan adapter ini menghemat penggunaan pin GPIO pada ESP32, hanya membutuhkan dua jalur komunikasi yaitu SDA (GPIO 33) dan SCL (GPIO 27). LCD bertugas menampilkan pesan sistem meliputi: status pencarian WiFi, status koneksi broker MQTT, nomor tiket antrean yang baru diambil pasien, serta konfirmasi teks saat dokter memanggil nomor tertentu.
3.3.3 Push Button, Buzzer, dan LED
Push Button dikonfigurasi menggunakan mode `INPUT_PULLUP` pada pin GPIO 14 sehingga tidak memerlukan resistor eksternal. Tombol ini mendeteksi sinyal tekan dari pasien. Buzzer piezo pada GPIO 15 bertugas menghasilkan nada aksentuasi saat antrean dicetak dan memicu alarm panggilan berulang 3 kali (frequency 1000Hz). LED merah pada GPIO 2 bekerja sinkron dengan buzzer sebagai penanda visual yang jelas.
3.3.4 Broker MQTT dan Web Dashboard Dokter
Broker MQTT (`broker.hivemq.com`) bertindak sebagai pusat transit pesan berkecepatan tinggi. Komunikasi antara ESP32 dan Web Dashboard diklasifikasikan ke dalam 2 topik utama:
3.4 Perancangan Rangkaian
Perancangan rangkaian fisik disesuaikan dengan tata letak pinout ESP32 pada simulator Wokwi. Skema hubungan antar komponen ditunjukkan pada tabel konfigurasi pin berikut:
3.5 Perancangan Logika Sistem
Alur kerja logika dari sistem antrean terintegrasi ini dirancang menggunakan algoritma pemrosesan kejadian (event-driven) yang dirangkum pada tabel berikut
:
3.6 Implementasi Program
Berikut adalah konfigurasi skema interkoneksi rangkaian dalam format JSON (`diagram.json`):
3.7 Penjelasan Program
Program diawali dengan pemanggilan library utama WiFi.h, PubSubClient.h, LiquidCrystal_I2C.h, dan Wire.h. Pemetaan variabel SDA_PIN 33 dan SCL_PIN 27 dilewatkan ke Wire.begin() untuk menginisialisasi bus I2C non-standar ESP32 agar dapat berkomunikasi dengan modul LCD I2C.
Fungsi setup() mengonfigurasi BTN_AMBIL sebagai input pull-up internal serta memulakan koneksi WiFi. Setelah WiFi terhubung, ESP32 menginisialisasi server MQTT broker.hivemq.com pada port TCP 1883 dan mendaftarkan fungsi callback() sebagai penangan pesan masuk.
Pada fungsi loop(), perintah client.loop() dipanggil terus-menerus untuk memelihara koneksi socket dan memeriksa paket data incoming. Pembacaan tombol antrean memanfaatkan deteksi transisi sinyal edge (dari HIGH ke LOW). Ketika tombol ditekan, variabel nomorAntrian ditambah satu, dikonversi menjadi format string (misal: "A-1"), lalu dikirimkan ke topik klinik/antrian/tambah melalui perintah client.publish().
Ketika pesan diterima dari topik klinik/antrian/panggil, fungsi callback() mengeksekusi iterasi loop sebanyak 3 kali untuk menyalakan LED dan membunyikan nada buzzer 1000Hz secara bergantian sebagai indikator panggilan pasien.
3.8 Perancangan Dashboard Web Dokter
Dashboard Dokter dirancang sebagai halaman web independen menggunakan JavaScript dengan library Eclipse Paho MQTT yang berjalan langsung di peramban web. Dashboard ini terhubung ke broker melalui port WebSocket 8000. Berikut adalah kode sumber lengkap berkas HTML/JS (`index.html`):
3.9 Pengujian Sistem
Pengujian dilakukan untuk memverifikasi kebenaran fungsi perangkat keras simulasi Wokwi dan integrasi pengiriman data secara dua arah (*full-duplex*) melalui MQTT broker dan WebSocket. Hasil pengujian dicatat pada tabel skenario berikut:
3.10 Analisis Hasil Pengujian
Berdasarkan hasil pengujian yang telah dilakukan, seluruh fungsi sistem antrean dan panggilan pasien klinik berbasis ESP32 dan MQTT via WebSocket telah berjalan sesuai dengan rancangan teknis yang ditetapkan. Pengujian transmisi data dari ESP32 menuju Web Dashboard menunjukkan bahwa protokol MQTT mampu menyampaikan payload data tiket antrean baru dalam kurun waktu kurang dari 100 milidetik sejak tombol fisik ditekan.
Laporan Praktikum IoT - Modul 6 (MQTT WebSocket)Halaman 10
Komunikasi dua arah terbukti efisien berkat penggunaan pustaka Eclipse Paho JavaScript pada Web Dashboard. Hambatan umum pada aplikasi web tradisional—di mana browser tidak dapat membuka socket TCP murni pada port 1883—dapat teratasi secara sempurna dengan memanfaatkan alur pertukaran paket data berbasis WebSocket pada port 8000. Hal ini memungkinkan browser untuk berlangganan (*subscribe*) dan menerbitkan (*publish*) pesan MQTT secara langsung tanpa memerlukan server perantara tambahan (middleware backend).
Meski demikian, terdapat beberapa keterbatasan teknis pada rancangan sistem saat ini:
Volatilitas Data: Nilai counter antrean disimpan dalam memori RAM acak ESP32, sehingga apabila perangkat mengalami restart atau reset daya, akumulasi nomor antrean akan kembali ke angka nol.
Keamanan Broker: Penggunaan broker publik HiveMQ tanpa lapisan enkripsi TLS/SSL dan autentikasi token dapat memungkinkan pihak luar yang mengetahui nama topik untuk menerbitkan pesan panggilan palsu.
Untuk pengembangan lebih lanjut pada skala produksi industri, disarankan untuk mengimplementasikan penyimpanan variabel antrean pada EEPROM/NVS ESP32 serta mengamankan jalur komunikasi broker menggunakan kredensial TLS (port 8883 / 8084).
BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan hasil praktikum dan analisis yang telah dilakukan, dapat ditarik beberapa kesimpulan utama sebagai berikut:
1. Protokol MQTT berbasis arsitektur Publish/Subscribe sangat efektif digunakan untuk sistem komunikasi real-time pada perangkat IoT karena memiliki footprint data yang ringan dan waktu tanggap (latency) yang sangat rendah.
2. Penggunaan mekanisme MQTT via WebSocket (library Eclipse Paho JS) berhasil menjembatani komunikasi data dua arah antara mikrokontroler ESP32 dengan aplikasi antarmuka web browser tanpa memerlukan perantara server web eksternal.
3. Integrasi perangkat keras (LCD 16x2 I2C, Push Button, Buzzer, dan LED) pada simulator Wokwi bersama Web Dashboard telah berhasil memenuhi rancangan fungsional sistem antrean klinik, di mana pencetakan antrean dan perintah panggilan pasien dapat tereksekusi secara sinkron dan otomatis.
Tidak ada komentar:
Posting Komentar