Minggu, 11 Oktober 2026

Sistem Monitoring Suhu dan Kelembaban Ruang Server Berbasis IoT Menggunakan Simulasi ESP32 dan Sensor DHT22 pada ThingsBoard Cloud

 LAPORAN PRAKTIKUM INTERNET OF THINGS

MENCOBA PLATFORM IoT CLOUD SIAP PAKAI DENGAN WOKWI

 

Studi Kasus:

Sistem Monitoring Suhu dan Kelembaban Ruang Server Berbasis IoT

Menggunakan Simulasi ESP32 dan Sensor DHT22 pada ThingsBoard Cloud

 

Disusun oleh:

Georvin Octianno                   24051204121

Ali Syava Ramadhan              24051204121

Ubaidillah Maulidul Ula         24051204115

Adie Tirta Satria                     24051204108




BAB I
PENDAHULUAN

1.1  Latar Belakang

Perkembangan Internet of Things (IoT) telah mendorong munculnya berbagai platform cloud yang berperan sebagai pusat pengumpulan, penyimpanan, dan pengolahan data dari perangkat di lapangan. Akan tetapi, kenyataan yang dihadapi di dunia IoT saat ini adalah bahwa hampir seluruh platform IoT cloud merupakan entitas komersial yang menarik bayaran kepada pemakainya. Fasilitas free trial memang disediakan, namun pada umumnya sangat dibatasi hanya pada fungsi-fungsi dasar, baik dari sisi jumlah perangkat, kuota pesan per bulan, jumlah datastream, maupun lamanya penyimpanan data historis.

Permasalahan kedua muncul dari sisi perangkat keras. Pembelajaran IoT secara konvensional menuntut ketersediaan mikrokontroler, sensor, kabel, dan perangkat pendukung lain yang tidak selalu terjangkau oleh setiap mahasiswa. Kendala teknis seperti driver USB yang tidak terdeteksi, sambungan kabel yang longgar, atau sensor yang rusak sering kali menghabiskan waktu praktikum yang seharusnya digunakan untuk memahami arsitektur sistem.

Praktikum ini menjawab kedua permasalahan tersebut dengan memanfaatkan ThingsBoard Cloud sebagai platform IoT dan Wokwi sebagai simulator perangkat keras berbasis web. ThingsBoard dipilih karena menawarkan tangga paket yang lebih landai dibandingkan kompetitornya, sekaligus menyediakan Community Edition yang sepenuhnya open source dan dapat dipasang sendiri tanpa biaya apabila masa paket cloud berakhir. Wokwi dipilih karena memungkinkan simulasi ESP32 beserta sensor DHT22 secara penuh di dalam peramban, lengkap dengan koneksi WiFi virtual, sehingga seluruh rantai komunikasi dapat diuji tanpa perangkat fisik.

Sebagai konteks penerapan, dipilih studi kasus pemantauan suhu dan kelembaban ruang server. Ruang server dipilih karena memiliki ambang batas operasional yang dapat dirujuk secara teknis dan memiliki konsekuensi yang jelas apabila dilanggar, yaitu perangkat mengalami panas berlebih, umur pakai memendek, hingga berhenti beroperasi. Studi kasus ini juga memberikan alasan yang kuat atas keberadaan mekanisme alarm dan notifikasi pada tahap lanjutan praktikum.

1.2  Rumusan Masalah

Berdasarkan latar belakang di atas, rumusan masalah yang diangkat dalam praktikum ini adalah sebagai berikut:

  1. Bagaimana cara mendaftarkan dan mengonfigurasi sebuah perangkat IoT pada platform ThingsBoard Cloud dengan menggunakan kredensial MQTT Basic?
  2. Bagaimana cara memverifikasi bahwa jalur komunikasi MQTT antara klien dan platform telah terbuka sebelum program pada perangkat ditulis?
  3. Bagaimana memprogram ESP32 yang disimulasikan di Wokwi agar dapat membaca sensor DHT22 dan mengirimkan datanya secara berkala ke ThingsBoard Cloud?
  4. Bagaimana membuktikan bahwa perubahan nilai pada sensor benar-benar tercermin pada data telemetry yang tersimpan di cloud?

1.3  Tujuan Praktikum

Tujuan yang hendak dicapai melalui praktikum ini adalah:

  1. Memahami karakteristik platform IoT cloud komersial beserta keterbatasan paket gratisnya, dan mampu membandingkan beberapa platform berdasarkan batasan tersebut.
  2. Mampu mendaftarkan perangkat pada ThingsBoard Cloud serta membedakan dan memilih jenis kredensial yang sesuai di antara Access Token, X.509, dan MQTT Basic.
  3. Memahami struktur protokol MQTT yang meliputi broker, port, topik, dan payload berformat JSON.
  4. Mampu melakukan pengujian konektivitas secara berlapis, yaitu menguji jalur komunikasi dari PC terlebih dahulu sebelum menuliskan program pada perangkat.
  5. Mampu membangun program pada ESP32 untuk tersambung ke jaringan WiFi dan broker MQTT, membaca sensor DHT22, serta menyusun data menjadi payload JSON.
  6. Mampu memverifikasi bahwa data yang dikirim perangkat benar-benar diterima dan tersimpan sebagai telemetry di platform cloud.

1.4  Batasan Masalah

Agar pembahasan tetap terarah, praktikum ini dibatasi pada hal-hal berikut:

  1. Perangkat keras disimulasikan sepenuhnya menggunakan Wokwi. Tidak digunakan modul ESP32 maupun sensor DHT22 secara fisik.
  2. Studi kasus ruang server digunakan sebagai konteks penentuan ambang batas dan justifikasi kebutuhan sistem, bukan sebagai implementasi pada ruang server yang sebenarnya.
  3. Laporan ini mencakup tahap pertama praktikum yang mengacu pada halaman 1 sampai 9 modul, yaitu pembangunan jalur komunikasi dari perangkat menuju cloud. Tahap visualisasi dashboard, pemrosesan rule chain, pembentukan alarm, dan notifikasi email (halaman 10 sampai 13) merupakan lingkup tahap lanjutan.
  4. Platform yang digunakan adalah ThingsBoard Cloud pada paket Free dengan batasan 5 perangkat, 5 aset, 5 pengguna, 5 dashboard, dan 2 customer.

1.5  Manfaat

Praktikum ini memberikan manfaat berupa pemahaman utuh mengenai arsitektur sistem IoT, mulai dari pembacaan besaran fisik oleh sensor hingga penyimpanan data di server. Pemahaman tersebut diperoleh tanpa biaya perangkat keras sehingga dapat direplikasi oleh siapa pun yang memiliki akses internet. Selain itu, praktikum ini melatih metode pengujian berlapis yang merupakan praktik baku dalam pengembangan sistem terdistribusi, yakni memastikan lapisan terbawah berfungsi sebelum beralih ke lapisan berikutnya.

 

BAB II
LANDASAN TEORI

2.1  Internet of Things

Internet of Things merupakan konsep yang menghubungkan objek-objek fisik ke jaringan internet sehingga objek tersebut mampu mengumpulkan dan bertukar data. Sebuah sistem IoT pada umumnya tersusun atas empat lapisan, yaitu lapisan perangkat yang berisi sensor dan aktuator, lapisan konektivitas yang menangani protokol komunikasi, lapisan platform yang menyimpan dan mengolah data, serta lapisan aplikasi yang menyajikan informasi kepada pengguna. Praktikum ini membangun tiga lapisan pertama secara utuh.

2.2  Platform IoT Cloud dan Permasalahannya

Kenyataan yang ada di dunia IoT saat ini adalah bahwa semua platform IoT merupakan entitas komersial yang akan menarik bayaran kepada pemakai. Fasilitas free trial tersedia, namun sangat dibatasi pada fungsi-fungsi dasar. Terdapat tiga alternatif solusi yang dapat ditempuh untuk mengatasi keterbatasan tersebut, yaitu:

  1. Menginstal platform IoT open source pada premis atau server lokal berbasis PC, seperti OpenBalena, ThingsBoard, Node-RED, dan OpenRemote.
  2. Menggabungkan beberapa layanan gratis dengan kemampuan pemrograman yang memadai, misalnya memanfaatkan Google Colab dengan bahasa Python.
  3. Melakukan pemrograman penuh pada PC dengan berbagai bahasa pemrograman serta memanfaatkan gateway internet yang relatif murah, misalnya broker MQTT HiveMQ.

2.3  Studi Kasus Vendor Lock-In pada Tuya

Tuya merupakan platform perangkat keras IoT yang paling laris di pasaran. Pada awal kemunculannya, perangkat smart home Tuya berbasis ESP8266 sehingga dapat diprogram ulang sendiri tanpa perlu membayar layanan IoT milik Tuya. Berbagai produk komersial smart home berbasis ESP8266 kemudian bermunculan dengan memanfaatkan platform tersebut, namun Tuya menilai pola ini kurang menguntungkan bagi mereka.

Tuya selanjutnya membatasi proses pemrograman sehingga hanya dapat dilakukan melalui platform IDE pengembang milik mereka, dan hasilnya hanya bisa diunduhkan ke ESP8266 melalui perangkat lunak IDE mereka juga. Saat ini Tuya telah menghentikan penggunaan ESP8266 dan membuat IC mikrokontroler sendiri, sehingga produsen yang ingin membuat produk seperti smart switch harus menggunakan IC yang mereka sediakan. Kasus ini menjadi contoh nyata vendor lock-in, yaitu kondisi ketika pengguna terkunci pada ekosistem satu vendor dan kehilangan kebebasan memilih.

2.4  Perbandingan Platform Blynk dan ThingsBoard

Blynk merupakan platform yang muncul paling awal dan populer di kalangan penghobi, namun kini terasa berat bagi pengguna paket gratis karena batasannya sempit dan lompatan menuju paket berbayar cukup tinggi. ThingsBoard menawarkan berbagai pilihan paket cloud dengan tangga harga yang lebih landai. Perbandingan paket keduanya sebagaimana tercantum pada modul disajikan pada Tabel 2.1.

Tabel 2.1 Perbandingan paket Blynk dan ThingsBoard Cloud

Aspek

Blynk Free

Blynk PRO

ThingsBoard Maker

ThingsBoard Prototype

Biaya

US$0

Mulai US$99 per bulan

US$10 per bulan

US$149 per bulan

Perangkat

10 perangkat, 1 pengguna

50, 200, atau 500 perangkat/pengguna

Hingga 30 perangkat

Hingga 100 perangkat

Aset

-

-

Hingga 30 aset

Hingga 100 aset

Kuota data

30.000 pesan per bulan

Pesan tidak terbatas

10 juta data point per bulan

100 juta data point per bulan

Template dan datastream

10 template, 20 datastream per template

50 template, 200 datastream per template

-

-

Riwayat data

1 minggu

6 bulan

-

-

Fitur lain

Widget gratis

Widget PRO, pengaturan izin, manajemen organisasi

Dukungan komunitas

Dukungan komunitas, white-labeling

 

Keterangan: tanda - menunjukkan informasi tersebut tidak dicantumkan pada sumber.

Rincian kuota langganan ThingsBoard Cloud paket Maker yang ditampilkan pada modul disajikan pada Tabel 2.2. Kuota email sebanyak 100 per bulan perlu diperhatikan karena akan digunakan pada tahap notifikasi.

Tabel 2.2 Rincian kuota langganan ThingsBoard Cloud paket Maker

Komponen

Batas

Aset

30

Perangkat

30

Pesan transport per bulan

5 juta

Data point transport per bulan

10 juta

Hari penyimpanan data point per bulan

300 juta

Eksekusi rule engine per bulan

25 juta

Eksekusi fungsi JavaScript per bulan

1 juta

Email per bulan

100

SMS per bulan

10

Alarm yang dibuat per bulan

200

Laporan yang dihasilkan per bulan

Tidak terbatas

 

2.5  ThingsBoard Community Edition

ThingsBoard Community Edition merupakan versi yang 100% open source dan gratis, dengan keunggulan berupa jumlah perangkat dan aset yang tidak terbatas, pembaruan perangkat lunak tanpa batas, kesempatan untuk ikut berkontribusi, serta dukungan komunitas. Pilihan instalasinya meliputi Docker pada Linux atau macOS, Docker pada Windows, Ubuntu Server 20.04, 22.04, atau 24.04 dengan PostgreSQL atau Cassandra, server CentOS/RHEL (termasuk Alma, Rocky, dan Oracle Linux), Windows 10/11, serta Raspberry Pi dengan RAM minimal 4 GB untuk PostgreSQL atau 8 GB untuk Cassandra. Keberadaan versi ini memberikan jalan keluar apabila masa berlaku paket cloud berakhir di tengah pengerjaan proyek, dengan konsekuensi alamat broker berubah menjadi alamat server lokal.

2.6  Protokol MQTT

MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan yang bekerja dengan pola publish dan subscribe. Terdapat tiga komponen utama dalam arsitekturnya, yaitu publisher yang mengirimkan pesan, subscriber yang menerima pesan, dan broker yang bertindak sebagai perantara. Pesan dikelompokkan berdasarkan topik, sehingga publisher dan subscriber tidak perlu saling mengenal secara langsung.

Pada ThingsBoard, alamat broker yang digunakan adalah mqtt.thingsboard.cloud dengan port 1883 untuk koneksi tanpa enkripsi. Topik baku untuk pengiriman data telemetry adalah v1/devices/me/telemetry. Kata me pada topik tersebut bukan placeholder yang perlu diganti dengan nama perangkat, melainkan menunjuk pada perangkat yang sedang terhubung saat itu. Identitas perangkat ditentukan oleh kredensial yang digunakan ketika melakukan koneksi, bukan oleh isi topik. Payload yang dikirimkan berformat JSON, misalnya {"suhu":50, "kelembaban":80}, dengan setiap kunci JSON menjadi satu key telemetry di platform.

Broker MQTT hanya mengizinkan satu koneksi aktif untuk setiap Client ID. Apabila klien kedua tersambung dengan Client ID yang sama, broker akan memutus klien pertama. Sifat ini menjadi penting ketika aplikasi pengujian di PC dan perangkat menggunakan kredensial yang sama.

2.7  Jenis Kredensial Perangkat pada ThingsBoard

ThingsBoard menyediakan tiga jenis kredensial yang bersifat saling menggantikan, bukan saling melengkapi. Satu perangkat hanya memiliki satu jenis kredensial. Perbandingan ketiganya disajikan pada Tabel 2.3, sedangkan tampilan ketiga pilihan tersebut pada antarmuka ThingsBoard dapat dilihat pada Gambar 3.4, Gambar 3.5, dan Gambar 3.6.

Tabel 2.3 Perbandingan jenis kredensial perangkat pada ThingsBoard

Jenis

Mekanisme

Karakteristik

Access Token

Satu string rahasia yang dibangkitkan otomatis oleh sistem

Paling sederhana, cocok untuk HTTP atau koneksi MQTT cepat

X.509

Menggunakan sertifikat digital berformat PEM

Paling aman dan lazim dipakai di lingkungan produksi, namun memerlukan pembuatan sertifikat dan penanganan TLS

MQTT Basic

Kombinasi Client ID, username, dan password

Menyerupai mekanisme login biasa, didukung secara langsung oleh pustaka PubSubClient pada ESP32

 

Praktikum ini menggunakan MQTT Basic karena pustaka PubSubClient pada ESP32 mendukung autentikasi username dan password secara langsung melalui pemanggilan client.connect(clientId, user, pass). Sementara itu, X.509 memerlukan penanganan TLS dan penyimpanan sertifikat pada flash yang jauh lebih berat untuk lingkungan simulasi.

2.8  Mikrokontroler ESP32

ESP32 adalah mikrokontroler produksi Espressif Systems yang dilengkapi modul WiFi dan Bluetooth terintegrasi. Kemampuan WiFi bawaan inilah yang menjadikan ESP32 banyak dipakai pada proyek IoT, karena perangkat dapat langsung terhubung ke jaringan tanpa modul tambahan. Dalam praktikum ini digunakan varian ESP32 DevKit yang merupakan papan pengembangan paling umum, dengan pustaka WiFi.h untuk koneksi jaringan dan PubSubClient untuk komunikasi MQTT.

2.9  Sensor DHT22

DHT22 merupakan sensor digital yang mampu mengukur suhu dan kelembaban relatif sekaligus. Di dalamnya terdapat dua elemen pengukur. Elemen pertama berupa termistor, yaitu resistor yang nilai hambatannya berubah mengikuti suhu. Elemen kedua berupa lapisan polimer di antara dua pelat, yang kapasitansinya berubah seiring banyaknya uap air yang terserap.

Kedua perubahan fisik tersebut dibaca oleh chip pengendali di dalam sensor, dikonversi menjadi nilai digital, lalu dikirimkan ke mikrokontroler sebagai deretan bit melalui satu jalur data tunggal. Pustaka DHT.h bertugas menerjemahkan deretan bit tersebut menjadi nilai suhu dalam derajat Celsius dan kelembaban dalam persen.

2.10  Wokwi sebagai Simulator Perangkat Keras

Wokwi adalah simulator rangkaian elektronika berbasis web yang mendukung berbagai mikrokontroler, termasuk ESP32. Wokwi menyediakan jaringan WiFi virtual dengan SSID Wokwi-GUEST tanpa kata sandi, sehingga program yang membutuhkan koneksi internet tetap dapat diuji. Nilai sensor dapat diatur secara manual melalui panel pengaturan yang muncul ketika komponen diklik saat simulasi berjalan, atau melalui atribut pada berkas diagram.json.

Hal penting yang perlu dipahami adalah bahwa dari sudut pandang program, simulasi dan perangkat nyata bersifat identik. Pemanggilan dht.readTemperature() tidak mengetahui dan tidak mempermasalahkan apakah nilai yang diterimanya berasal dari termistor sungguhan atau dari pengaturan di Wokwi. Inilah yang memungkinkan seluruh rantai sistem diuji tanpa membeli perangkat apa pun, dan apabila kelak dipasang pada perangkat keras nyata, baris program tidak perlu diubah selain nama dan kata sandi jaringan WiFi.

2.11  MQTTX sebagai Klien Uji MQTT

MQTTX adalah aplikasi klien MQTT lintas platform bersifat open source yang dikembangkan oleh EMQ. Aplikasi ini menyediakan antarmuka grafis untuk membuat koneksi ke broker, mempublikasikan pesan ke topik tertentu, dan berlangganan topik. Pada praktikum ini MQTTX menggantikan MQTT.fx yang digunakan pada modul, karena versi terbaru MQTT.fx telah berbayar, sedangkan fungsi yang dibutuhkan, yaitu mempublikasikan pesan uji ke broker ThingsBoard, tersedia sepenuhnya pada MQTTX.

 

BAB III
IMPLEMENTASI DAN PEMBAHASAN

3.1  Alat dan Bahan

Perangkat lunak, layanan, dan sumber daya yang digunakan dalam praktikum ini beserta perannya masing-masing disajikan pada Tabel 3.1.

Tabel 3.1 Alat dan bahan yang digunakan beserta perannya

Komponen

Jenis

Peran dalam sistem

Wokwi

Simulator berbasis web

Menggantikan ESP32 dan DHT22 fisik; tempat program ditulis, rangkaian disusun, dan simulasi dijalankan

ThingsBoard Cloud

Platform IoT cloud (paket Free)

Menerima, menyimpan, dan menampilkan data; berperan sebagai sisi server

MQTTX v1.13.1

Klien MQTT desktop (Windows x86-64)

Alat uji untuk memverifikasi jalur komunikasi sebelum program ditulis

ESP32 DevKit C v4

Mikrokontroler (simulasi)

Membaca sensor dan mengirim data melalui MQTT

DHT22

Sensor (simulasi)

Sumber nilai suhu dan kelembaban

Google Chrome

Peramban web

Antarmuka untuk mengakses Wokwi dan ThingsBoard

Akun Google

Akun pengguna

Registrasi dan masuk ke ThingsBoard Cloud serta Wokwi

Koneksi internet

Jaringan

Menghubungkan PC, simulator Wokwi, dan broker ThingsBoard

 

Perlu dicatat bahwa MQTTX bukan merupakan bagian dari sistem akhir. Perangkat lunak ini berperan sebagai alat diagnostik yang hanya digunakan pada tahap pengujian jalur komunikasi. Setelah ESP32 berjalan, MQTTX justru harus diputus agar tidak berebut Client ID dengan perangkat.

3.2  Arsitektur Sistem

Arsitektur sistem yang dibangun ditunjukkan pada Gambar 3.1. Sensor DHT22 membaca kondisi suhu dan kelembaban lingkungan, lalu mengirimkan hasilnya ke ESP32 melalui satu jalur data digital pada GPIO 15. ESP32 menyusun kedua nilai tersebut menjadi payload berformat JSON, kemudian mempublikasikannya melalui jaringan WiFi ke broker MQTT pada alamat mqtt.thingsboard.cloud port 1883 dengan topik v1/devices/me/telemetry. Broker meneruskan pesan tersebut ke ThingsBoard Cloud, yang mencocokkan kredensial pengirim dengan perangkat terdaftar lalu menyimpan isinya sebagai telemetry.

Gambar 3.1 Arsitektur sistem monitoring suhu dan kelembaban ruang server

Jalur bergaris putus dari PC dengan MQTTX menunjukkan jalur pengujian yang digunakan sebelum perangkat diprogram. Jalur ini menggunakan broker, topik, dan kredensial yang sama dengan perangkat. Pada tahap lanjutan, data yang tersimpan akan divisualisasikan melalui dashboard dan diproses oleh rule chain untuk menghasilkan alarm serta notifikasi email.

3.3  Rancangan Ambang Batas Studi Kasus

Mengacu pada studi kasus pemantauan ruang server, ditetapkan empat tingkat kondisi berdasarkan nilai suhu sebagaimana disajikan pada Tabel 3.2. Ambang batas ini akan diterapkan pada rule chain di tahap lanjutan.

Tabel 3.2 Rancangan tingkat kondisi berdasarkan suhu ruang server

Tingkat

Rentang suhu

Interpretasi

Normal

Kurang dari atau sama dengan 27 °C

Kondisi operasional aman, tidak memerlukan tindakan

Minor

Di atas 27 °C hingga 30 °C

Mulai menghangat, perlu diperhatikan

Major

Di atas 30 °C hingga 35 °C

Pendinginan tidak memadai, perlu tindakan

Critical

Di atas 35 °C

Berisiko merusak perangkat, perlu tindakan segera

 

3.4  Perancangan Rangkaian

Sensor DHT22 memiliki empat kaki, namun hanya tiga di antaranya yang digunakan. Pemetaan sambungan antara sensor dan ESP32 disajikan pada Tabel 3.3.

Tabel 3.3 Pemetaan sambungan DHT22 ke ESP32 DevKit

Kaki DHT22

Pin ESP32

Keterangan

VCC

3V3

Sumber tegangan 3,3 volt (kabel merah)

SDA

15 (GPIO 15)

Jalur data digital satu kabel (kabel hijau)

NC

Tidak disambung

Not Connected, memang tidak digunakan

GND

GND

Jalur ground bersama (kabel hitam)

 

Nomor pin 15 yang dipilih harus konsisten dengan deklarasi #define DHTPIN 15 di dalam program. Penggunaan pin lain mengharuskan penyesuaian pada baris tersebut. Label D2 dan D3 pada papan ESP32 DevKit di Wokwi sengaja dihindari karena keduanya merujuk ke jalur data flash internal.

3.5  Penyesuaian terhadap Modul

Pelaksanaan praktikum mengikuti alur pada modul dengan beberapa penyesuaian. Seluruh penyesuaian beserta alasannya dirangkum pada Tabel 3.4.

Tabel 3.4 Penyesuaian pelaksanaan praktikum terhadap modul

Aspek

Modul

Praktikum ini

Alasan

Nama perangkat

Modul5_Test1

Praktikum_Modul5

Identitas proyek sendiri

Client ID

workshop_IOT_informatika

wokwi_praktikum_modul5

Kredensial MQTT Basic harus unik di seluruh server; nilai pada modul dipakai bersama oleh satu kelas

User Name

informatika

georvin

Sama dengan alasan di atas

Password

1234567890

praktikum123

Sama dengan alasan di atas

Klien MQTT di PC

MQTT.fx

MQTTX v1.13.1

Versi terbaru MQTT.fx berbayar; MQTTX gratis dengan fungsi setara

Paket ThingsBoard

Maker (masa uji coba)

Free

Paket yang diperoleh saat registrasi; tidak memiliki tanggal kedaluwarsa

Keluaran Serial Monitor

Temperature dan Humidity

Payload JSON yang dikirim

Memudahkan pencocokan antara data terkirim dan data tersimpan

 

3.6  Langkah Kerja

Secara garis besar, langkah kerja terbagi menjadi tiga kelompok, yaitu persiapan sisi server pada ThingsBoard (3.6.1 dan 3.6.2), pengujian jalur komunikasi dari PC menggunakan MQTTX (3.6.3 sampai 3.6.5), serta pembangunan dan pengujian perangkat pada Wokwi (3.6.6 sampai 3.6.13).

3.6.1  Registrasi Akun ThingsBoard Cloud

  1. Akses dan login ke alamat https://thingsboard.cloud.
  2. Pastikan peran yang tertera di pojok kanan atas halaman Home adalah Tenant administrator, yaitu peran pemilik ruang kerja yang berhak membuat perangkat, dashboard, dan rule chain.
  3. Periksa informasi langganan di pojok kanan atas. Pada akun yang digunakan tertera Current subscription: Free dengan Status: Active, seperti terlihat pada Gambar 3.2.

Gambar 3.2 Halaman Home ThingsBoard Cloud setelah berhasil masuk

4.               Periksa kuota akun pada panel Usage di bagian bawah halaman. Paket Free memberikan batas 5 perangkat, 5 aset, 5 pengguna, 5 dashboard, dan 2 customer, dengan pemakaian awal 0 kecuali 1 pengguna, yaitu akun pemilik.

3.6.2  Membuat Perangkat dan Kredensial MQTT Basic

  1. Pada menu di sisi kiri, klik Entities, lalu pilih Devices. Halaman daftar perangkat terbuka dan masih kosong.
  2. Klik tombol + Add device di pojok kanan atas. Sebagai alternatif, tombol Add device pada panel Devices di halaman Home memiliki fungsi yang sama. Dialog Add new device muncul pada langkah pertama, yaitu Device details.
  3. Isi formulir Device details sesuai Tabel 3.5. Tampilan formulir sebelum diisi ditunjukkan pada Gambar 3.3.

Gambar 3.3 Formulir Device details pada dialog Add new device

Tabel 3.5 Isian formulir Device details

Kolom

Isian

Keterangan

Name

Praktikum_Modul5

Wajib diisi; nama perangkat yang mudah dikenali

Label

Dikosongkan

Opsional

Device profile

default

Nilai bawaan, tidak diubah

Is gateway

Nonaktif

Perangkat ini bukan gateway

Owner

Terisi otomatis

Email akun pemilik, tidak diubah

Groups

Dikosongkan

Opsional

Description

Dikosongkan

Opsional



4.               Klik tombol Next: Credentials. Jangan menekan tombol Add pada tahap ini.

5.               Halaman Credentials terbuka dengan pilihan Credentials type. Secara bawaan, tab Access token terpilih dan sistem membangkitkan sebuah token acak (Gambar 3.4).

Gambar 3.4 Tab Access token terpilih secara bawaan beserta token acak

6.               Tab X.509 meminta sertifikat dalam format PEM dan menampilkan pesan Certificate is required apabila kolomnya kosong (Gambar 3.5). Jenis kredensial ini tidak digunakan.

Gambar 3.5 Tab X.509 yang meminta sertifikat berformat PEM

7.               Klik tab MQTT Basic. Tiga kolom isian muncul, yaitu Client ID, User Name, dan Password, disertai pesan merah Client ID and/or User Name are necessary (Gambar 3.6).

Gambar 3.6 Tab MQTT Basic sebelum diisi

8.               Isi ketiga kolom sesuai Tabel 3.6. Ketik nilainya secara manual dan jangan menekan ikon panah melingkar di sisi kanan kolom, karena ikon tersebut membangkitkan nilai acak yang panjang dan sulit disalin ke dalam program.

Tabel 3.6 Isian kredensial MQTT Basic

Kolom

Isian

Keterangan

Client ID

wokwi_praktikum_modul5

Identitas klien MQTT

User Name

georvin

Nama pengguna MQTT

Password

praktikum123

Kata sandi MQTT



9.               Pastikan pesan merah telah hilang. Klik ikon mata pada kolom Password untuk memeriksa kebenaran kata sandi yang diketik (Gambar 3.7).

Gambar 3.7 Kredensial MQTT Basic yang telah diisi

10.            Catat ketiga nilai kredensial pada tempat yang aman. Nilai yang sama akan digunakan kembali pada konfigurasi MQTTX dan pada program ESP32.

Keterangan: nilai kredensial sengaja dibuat berbeda dari contoh pada modul. Kredensial MQTT Basic harus unik di seluruh server ThingsBoard Cloud, sehingga apabila beberapa praktikan mendaftarkan nilai yang sama, pendaftaran berikutnya dapat ditolak atau koneksi di broker akan saling memutus.

11.            Klik tombol Add. Perangkat dibuat dan dialog Device created. Let's check connectivity! muncul (Gambar 3.8). Dialog ini menampilkan petunjuk pengujian koneksi melalui baris perintah, yang terdiri atas:

a.      tab MQTT dengan pilihan sistem operasi Windows, MacOS, Linux, dan Docker, berisi langkah memasang mosquitto_pub dan contoh perintah pengiriman telemetry ke mqtt.thingsboard.cloud port 1883;

b.     tab CoAP yang berisi contoh perintah curl untuk Linux (Gambar 3.9);

c.      bagian State yang menunjukkan status Inactive dan tabel Latest telemetry yang masih kosong karena belum ada data yang dikirim.

Gambar 3.8 Dialog Device created. Let's check connectivity! pada tab MQTT

Gambar 3.9 Tab CoAP pada dialog pengecekan konektivitas

12.            Biarkan opsi Do not show again dalam keadaan nonaktif, jangan menekan tombol Generate dashboard with AI, lalu klik Close.

Keterangan: pengujian konektivitas pada praktikum ini dilakukan menggunakan aplikasi MQTT berantarmuka grafis sesuai modul, bukan melalui baris perintah. Fitur Generate dashboard with AI tidak digunakan karena perangkat belum memiliki data telemetry dan pembuatan dashboard secara manual merupakan materi tahap lanjutan.

13.            Perangkat Praktikum_Modul5 muncul pada daftar dengan Device profile default dan State Inactive (Gambar 3.10). Status Inactive merupakan kondisi wajar karena perangkat belum pernah mengirimkan data.

Gambar 3.10 Perangkat Praktikum_Modul5 terdaftar dengan status Inactive

3.6.3  Mengunduh dan Memasang MQTTX

  1. Buka alamat https://mqttx.app/downloads pada peramban.
  2. Pada bagian Desktop, klik x86-64 | v1.13.1.win64.exe untuk mengunduh installer Windows 64-bit (Gambar 3.11).

Gambar 3.11 Halaman unduhan MQTTX dengan pilihan versi Desktop dan CLI

Keterangan: versi Universal berukuran lebih besar karena memuat beberapa arsitektur sekaligus, versi x86 (win32) diperuntukkan bagi Windows 32-bit, sedangkan bagian CLI merupakan versi baris perintah tanpa antarmuka grafis.

3.               Jalankan berkas installer yang telah diunduh dan ikuti petunjuk instalasi hingga selesai. Apabila Windows SmartScreen menampilkan peringatan, pilih More info, kemudian Run anyway.

4.               Buka aplikasi MQTTX. Tampilan awal menunjukkan daftar Connections yang masih kosong (No Data) dan tombol + New Connection di tengah layar (Gambar 3.12).

Gambar 3.12 Tampilan awal MQTTX sebelum koneksi dibuat

3.6.4  Membuat Profil Koneksi MQTTX

  1. Klik tombol + New Connection. Formulir pembuatan koneksi baru muncul.
  2. Isi bagian General sesuai Tabel 3.7. Kolom lain dibiarkan pada nilai bawaan.

Tabel 3.7 Isian profil koneksi MQTTX

Kolom

Isian

Keterangan

Name

ThingsBoard Praktikum

Label koneksi di dalam aplikasi (bebas)

Client ID

wokwi_praktikum_modul5

Hapus nilai acak bawaan, ganti dengan Client ID perangkat

Host

mqtt:// dan mqtt.thingsboard.cloud

Protokol dipilih pada menu tarik-turun di kiri kolom; nama domain ditulis tanpa http:// atau https://

Port

1883

Port MQTT tanpa enkripsi

Username

georvin

Sama dengan User Name perangkat

Password

praktikum123

Sama dengan Password perangkat

SSL/TLS

Nonaktif

Nilai bawaan

Clean Session

Aktif

Nilai bawaan

Keep Alive

60

Nilai bawaan dalam detik



3.               Periksa kembali tiga hal yang paling sering menyebabkan kegagalan koneksi, yaitu Host tidak diawali http:// atau https://, protokol yang dipilih adalah mqtt:// dan bukan ws://, serta Client ID sudah diganti dari nilai acak bawaan.

4.               Klik tombol Connect di pojok kanan atas formulir.

5.               Koneksi berhasil ditandai dengan nama ThingsBoard Praktikum@mqtt... berwarna hijau pada daftar Connections dan ikon daya berwarna merah di pojok kanan atas, yang berfungsi sebagai tombol pemutus koneksi (Gambar 3.13). Area pesan masih kosong dan kotak payload berisi contoh bawaan {"msg": "hello"}.

Gambar 3.13 MQTTX berhasil terhubung ke broker ThingsBoard

3.6.5  Mengirim Data Uji dan Memverifikasi Telemetry

  1. Pada bagian bawah panel pesan, pastikan format payload adalah JSON dan tingkat QoS adalah 0.
  2. Klik kolom Topic, yaitu baris abu-abu bertuliskan Topic yang terletak tepat di atas kotak payload, lalu ketik v1/devices/me/telemetry.
  3. Hapus isi bawaan kotak payload, lalu ketik {"suhu":50, "kelembaban":80}.
  4. Pastikan topik dan payload berada pada kolom yang terpisah. Gambar 3.14 menunjukkan kesalahan penempatan, yaitu topik ikut tertulis di dalam kotak payload sementara kolom Topic masih menampilkan teks petunjuk berwarna abu-abu. Gambar 3.15 menunjukkan penempatan yang benar.

Gambar 3.14 Penempatan yang salah: topik tertulis di dalam kotak payload

Gambar 3.15 Penempatan yang benar: topik pada kolom Topic dan payload pada kotak payload

Keterangan: kata me pada topik bukan pengganti nama perangkat. ThingsBoard mengenali perangkat pengirim dari kredensial yang digunakan saat koneksi, sehingga me berarti perangkat yang sedang terhubung.

5.               Klik ikon kirim berbentuk pesawat kertas berwarna hijau di pojok kanan bawah. Pesan yang terkirim muncul sebagai balon hijau bertuliskan Topic: v1/devices/me/telemetry QoS: 0 beserta isi payload dan penanda waktu 2026-10-09 15:02:40:907 (Gambar 3.16).

Gambar 3.16 Pesan uji berhasil dipublikasikan dari MQTTX

6.               Kembali ke tab ThingsBoard pada halaman Devices. Kolom State mungkin masih menampilkan Inactive karena daftar perangkat tidak memperbarui dirinya secara otomatis (Gambar 3.17).

Gambar 3.17 Daftar perangkat sebelum diperbarui masih menunjukkan status Inactive

7.               Klik ikon refresh berbentuk panah melingkar di sebelah kiri ikon kaca pembesar, atau tekan F5. Status perangkat berubah menjadi Active (Gambar 3.18).

Gambar 3.18 Status perangkat berubah menjadi Active setelah daftar diperbarui

8.               Klik baris Praktikum_Modul5 untuk membuka panel Device details, lalu pilih tab Latest telemetry.

9.               Amati isi tabel Telemetry. Terdapat dua key, yaitu kelembaban bernilai 80 dan suhu bernilai 50, dengan waktu pembaruan 2026-10-09 15:02:41 yang sesuai dengan waktu pengiriman dari MQTTX (Gambar 3.19). Hasil ini membuktikan bahwa kredensial, alamat broker, topik, dan format payload sudah benar.

Gambar 3.19 Data uji dari MQTTX tersimpan pada tab Latest telemetry

10.            Setelah pengujian selesai, putuskan koneksi MQTTX dengan menekan ikon daya berwarna merah, atau tutup aplikasinya.

Keterangan: broker MQTT hanya mengizinkan satu koneksi aktif untuk setiap Client ID. Apabila MQTTX masih terhubung ketika simulasi Wokwi dijalankan, keduanya akan saling memutus koneksi secara bergantian. Kejadian ini sempat dialami pada praktikum dan dibahas pada subbab 3.9.

3.6.6  Membuat Proyek Wokwi

  1. Buka alamat https://wokwi.com pada tab baru.
  2. Klik ikon akun di pojok kanan atas, lalu pilih masuk menggunakan akun Google.

Keterangan: masuk ke akun bersifat wajib karena proyek yang dibuat tanpa akun tidak dapat disimpan dan akan hilang begitu tab ditutup.

3.               Setelah berhasil masuk, halaman Your Projects pada alamat wokwi.com/dashboard/projects terbuka dan masih kosong (Gambar 3.20).

Gambar 3.20 Halaman Your Projects pada Wokwi setelah berhasil masuk

4.               Klik tombol + NEW PROJECT. Halaman pemilihan papan pada alamat wokwi.com/projects/new menampilkan daftar papan berbasis ESP32 (Gambar 3.21).

Gambar 3.21 Sebagian daftar papan pada halaman pembuatan proyek baru

5.               Klik papan ESP32 pada posisi kiri atas. Jangan memilih varian lain seperti ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP32 S3 BOX 3, M5Stack Core S3, XIAO, atau Cheap Yellow Display, karena varian tersebut memiliki chip dan susunan pin yang berbeda.

6.               Halaman Start a new project ESP32 muncul (Gambar 3.22). Pada bagian Beginner templates, klik ARDUINO.

Gambar 3.22 Pemilihan template Arduino untuk papan ESP32

Keterangan: template MicroPython dan ESP-IDF tidak digunakan karena program ditulis sebagai sketch Arduino yang memakai pustaka WiFi.h, PubSubClient.h, dan DHT.h.

7.               Proyek baru terbuka pada alamat wokwi.com/projects/new/esp32. Sisi kiri berisi editor dengan tab sketch.ino, diagram.json, dan Library Manager, sedangkan sisi kanan berisi panel Simulation dengan papan ESP32 (Gambar 3.23).

Gambar 3.23 Proyek ESP32 baru dengan template Arduino

8.               Klik tombol SAVE di pojok kiri atas, isi nama proyek Praktikum Modul 5 IoT ThingsBoard, lalu simpan.

9.               Setelah tersimpan, alamat pada address bar berubah menjadi wokwi.com/projects/477389906579101697 dan nama proyek tampil di sebelah tombol SHARE (lihat Gambar 3.24). Catat alamat tersebut sebagai tautan permanen proyek.

3.6.7  Menyusun Rangkaian ESP32 dan DHT22

Rangkaian dapat disusun melalui dua cara, yaitu secara grafis menggunakan tombol penambah komponen atau dengan menuliskan konfigurasi pada berkas diagram.json. Kedua cara menghasilkan rangkaian yang sama sesuai Tabel 3.3. Pada praktikum ini kedua cara digunakan, dan rangkaian akhir disusun menggunakan cara kedua.

Cara 1: Melalui antarmuka grafis

  1. Pada panel Simulation, klik tombol + berwarna biru di bagian atas.
  2. Ketik DHT22 pada kotak pencarian komponen, lalu klik komponen DHT22. Sensor muncul pada kanvas (Gambar 3.24).

Gambar 3.24 Sensor DHT22 ditambahkan ke kanvas simulasi

Keterangan: pilih DHT22, bukan DHT11. Kedua sensor memerlukan konstanta tipe yang berbeda pada program, dan pemilihan yang tertukar menyebabkan pembacaan gagal atau bernilai nan.

3.               Arahkan kursor ke kaki sensor dan pin ESP32 untuk melihat labelnya. Kaki DHT22 berurutan dari kiri ke kanan adalah VCC, SDA, NC, dan GND.

4.               Buat kabel dengan cara mengklik satu kali pada kaki sensor, lalu mengklik satu kali pada pin tujuan di ESP32. Buat tiga sambungan berikut:

a.      kaki VCC ke pin 3V3;

b.     kaki GND ke pin GND;

c.      kaki SDA ke pin 15.

5.               Biarkan kaki NC tidak tersambung. Hasil penyambungan ditunjukkan pada Gambar 3.25.

Gambar 3.25 Rangkaian DHT22 dan ESP32 yang disambungkan secara grafis

Keterangan: pada ESP32 DevKit, pin data diberi label angka 15, bukan D15. Label D2 dan D3 pada papan merujuk ke jalur flash internal sehingga tidak digunakan.

6.               Tekan Ctrl+S segera setelah rangkaian selesai untuk menyimpan perubahan.

Keterangan: tanda titik di samping nama tab menandakan perubahan yang belum disimpan. Perubahan yang belum disimpan akan hilang apabila halaman dimuat ulang, sebagaimana dibahas pada subbab 3.9.

Cara 2: Melalui berkas diagram.json

  1. Klik tab diagram.json.
  2. Pilih seluruh isi berkas dengan Ctrl+A, lalu hapus dengan tombol Delete.
  3. Ketik atau tempel konfigurasi pada Kode 3.1.

Kode 3.1 Isi berkas diagram.json

{

  "version": 1,

  "author": "Georvin",

  "editor": "wokwi",

  "parts": [

    { "type": "board-esp32-devkit-c-v4", "id": "esp",

      "top": 0, "left": 0, "attrs": {} },

    { "type": "wokwi-dht22", "id": "dht1",

      "top": -100, "left": 150, "attrs": {} }

  ],

  "connections": [

    [ "dht1:VCC", "esp:3V3",   "red",   [ "v0" ] ],

    [ "dht1:GND", "esp:GND.1", "black", [ "v0" ] ],

    [ "dht1:SDA", "esp:15",    "green", [ "v0" ] ],

    [ "esp:TX", "$serialMonitor:RX", "", [] ],

    [ "esp:RX", "$serialMonitor:TX", "", [] ]

  ],

  "dependencies": {}

}



4.               Tekan Ctrl+S. Rangkaian terbentuk otomatis pada panel Simulation dengan kabel merah ke 3V3, kabel hitam ke GND, dan kabel hijau ke pin 15 (Gambar 3.26).

Gambar 3.26 Rangkaian yang terbentuk dari konfigurasi diagram.json

Keterangan: bagian parts mendefinisikan komponen beserta posisinya pada kanvas, sedangkan bagian connections mendefinisikan kabel dalam format pin asal, pin tujuan, warna, dan jalur kabel. Dua sambungan terakhir menghubungkan TX dan RX ESP32 ke Serial Monitor. ESP32 DevKit memiliki beberapa pin GND (GND.1, GND.2, dan seterusnya) yang secara kelistrikan terhubung pada jalur ground yang sama, sehingga pemilihan GND.1 hanya berpengaruh pada kerapian gambar kabel.

3.6.8  Mendaftarkan Pustaka Program

Program membutuhkan tiga pustaka eksternal, yaitu DHT sensor library dari Adafruit untuk membaca sensor, Adafruit Unified Sensor sebagai dependensinya, dan PubSubClient dari Nick O'Leary untuk komunikasi MQTT. Pustaka WiFi.h tidak perlu ditambahkan karena sudah tersedia secara bawaan pada platform ESP32.

  1. Klik tab Library Manager, lalu klik tombol + berwarna biru. Kotak pencarian pustaka muncul beserta opsi UPLOAD A LIBRARY (Gambar 3.27).

Gambar 3.27 Kotak pencarian pada Library Manager

2.               Ketik nama pustaka pada kotak pencarian, lalu klik hasil yang sesuai. Ulangi untuk ketiga pustaka. Opsi UPLOAD A LIBRARY tidak digunakan karena fungsinya untuk mengunggah berkas pustaka dari komputer.

3.               Pada praktikum ini, pencarian gagal dengan pesan Error loading library index :( karena gangguan pada server indeks pustaka Wokwi (Gambar 3.28). Oleh karena itu, pustaka didaftarkan melalui berkas teks dengan langkah berikut.

Gambar 3.28 Pesan galat ketika Library Manager gagal memuat indeks pustaka

4.               Klik tanda panah ke bawah (▼) di sebelah kanan tab Library Manager, pilih opsi untuk membuat berkas baru, lalu beri nama libraries.txt.

5.               Isi berkas tersebut dengan tiga baris pada Kode 3.2.

Kode 3.2 Isi berkas libraries.txt

DHT sensor library

Adafruit Unified Sensor

PubSubClient



6.               Tekan Ctrl+S. Tab libraries.txt muncul di antara tab diagram.json dan Library Manager (Gambar 3.29). Wokwi akan mengunduh pustaka yang tercantum secara otomatis pada saat simulasi pertama kali dijalankan.

Gambar 3.29 Berkas libraries.txt berisi daftar pustaka yang dibutuhkan

3.6.9  Menulis Program pada sketch.ino

  1. Klik tab sketch.ino.
  2. Pilih seluruh isi template bawaan dengan Ctrl+A, lalu hapus dengan tombol Delete.
  3. Ketik atau tempel kode program pada Kode 3.3.

Kode 3.3 Kode program sketch.ino

 1  #include <WiFi.h>

 2  #include <PubSubClient.h>

 3  #include "DHT.h"

 4   

 5  #define DHTPIN 15

 6  #define DHTTYPE DHT22

 7   

 8  const char* ssid        = "Wokwi-GUEST";

 9  const char* password    = "";

10   

11  const char* mqtt_server = "mqtt.thingsboard.cloud";

12  const char* mqtt_clid   = "wokwi_praktikum_modul5";

13  const char* mqtt_user   = "georvin";

14  const char* mqtt_pass   = "praktikum123";

15  const char* mqtt_topic  = "v1/devices/me/telemetry";

16   

17  WiFiClient espClient;

18  PubSubClient client(espClient);

19  DHT dht(DHTPIN, DHTTYPE);

20  unsigned long lastMsg = 0;

21   

22  void setup_wifi() {

23    delay(10);

24    Serial.println();

25    Serial.print("Connecting to ");

26    Serial.println(ssid);

27   

28    WiFi.mode(WIFI_STA);

29    WiFi.begin(ssid, password, 6);

30   

31    while (WiFi.status() != WL_CONNECTED) {

32      delay(500);

33      Serial.print(".");

34    }

35   

36    Serial.println("");

37    Serial.println("WiFi connected");

38    Serial.print("IP address: ");

39    Serial.println(WiFi.localIP());

40  }

41   

42  void reconnect() {

43    while (!client.connected()) {

44      Serial.print("Attempting MQTT connection...");

45      if (client.connect(mqtt_clid, mqtt_user, mqtt_pass)) {

46        Serial.println("Thingsboard is Connected !!");

47      } else {

48        Serial.print("failed, rc=");

49        Serial.print(client.state());

50        Serial.println(" try again in 5 seconds");

51        delay(5000);

52      }

53    }

54  }

55   

56  void setup() {

57    Serial.begin(115200);

58    dht.begin();

59    setup_wifi();

60    client.setServer(mqtt_server, 1883);

61  }

62   

63  void loop() {

64    if (!client.connected()) {

65      reconnect();

66    }

67    client.loop();

68   

69    unsigned long now = millis();

70    if (now - lastMsg > 5000) {

71      lastMsg = now;

72   

73      float suhu = dht.readTemperature();

74      float kelembaban = dht.readHumidity();

75   

76      if (isnan(suhu) || isnan(kelembaban)) {

77        Serial.println("Gagal membaca sensor DHT!");

78        return;

79      }

80   

81      char payload[64];

82      snprintf(payload, sizeof(payload),

83               "{\"suhu\":%.1f,\"kelembaban\":%.1f}", suhu, kelembaban);

84   

85      Serial.print("Kirim: ");

86      Serial.println(payload);

87      client.publish(mqtt_topic, payload);

88    }

89  }



4.               Sesuaikan baris 12 sampai 14 dengan kredensial MQTT Basic yang didaftarkan pada perangkat (Tabel 3.6). Ketiga nilai harus sama persis, termasuk huruf besar dan kecilnya.

5.               Gulir editor hingga baris paling bawah dan pastikan program utuh, yaitu baris 89 berupa kurung kurawal penutup } (Gambar 3.30).

Gambar 3.30 Bagian akhir program pada editor sketch.ino

Keterangan: penyalinan yang tidak utuh menyebabkan kurung kurawal penutup hilang dan kompilasi gagal. Kejadian ini sempat dialami dan dibahas pada subbab 3.9.

6.               Tekan Ctrl+S. Tanda titik pada tab sketch.ino hilang, menandakan program telah tersimpan.

Fungsi setiap bagian program dijelaskan pada Tabel 3.8.

Tabel 3.8 Penjelasan bagian-bagian program sketch.ino

Baris

Bagian

Fungsi

1–3

Pustaka

Memuat pustaka WiFi untuk koneksi jaringan, PubSubClient untuk komunikasi MQTT, dan DHT untuk membaca sensor

5–6

Konstanta sensor

Menetapkan pin data sensor pada GPIO 15 dan tipe sensor DHT22

8–9

Konfigurasi WiFi

SSID jaringan virtual Wokwi-GUEST dengan kata sandi kosong

11–15

Konfigurasi MQTT

Alamat broker, Client ID, username, password, dan topik telemetry

17–20

Objek global

Klien TCP, klien MQTT, objek sensor, dan variabel penanda waktu pengiriman terakhir

22–40

setup_wifi()

Mengaktifkan mode station, menyambung ke Wokwi-GUEST pada kanal 6, menunggu hingga terhubung, lalu mencetak alamat IP

42–54

reconnect()

Mencoba koneksi ke broker dengan kredensial MQTT Basic; apabila gagal, mencetak kode status (rc) dan mencoba lagi setiap 5 detik

56–61

setup()

Memulai komunikasi serial 115200 baud, menginisialisasi sensor, menyambung WiFi, dan menetapkan alamat broker port 1883

63–67

loop(): koneksi

Menyambung ulang apabila koneksi MQTT terputus dan menjalankan client.loop() untuk menjaga sesi tetap hidup

69–71

loop(): pewaktu

Menjalankan pengiriman setiap 5000 milidetik menggunakan millis() tanpa menghentikan program

73–79

loop(): pembacaan

Membaca suhu dan kelembaban; apabila hasilnya bukan angka (nan), pengiriman pada putaran tersebut dilewati

81–83

loop(): payload

Menyusun payload JSON dengan key suhu dan kelembaban, masing-masing satu angka di belakang koma

85–87

loop(): pengiriman

Mencetak payload ke Serial Monitor dan mempublikasikannya ke topik telemetry

 

Keterangan: parameter ketiga pada WiFi.begin() yang bernilai 6 merupakan nomor kanal jaringan Wokwi-GUEST. Penetapan kanal mempercepat proses koneksi karena ESP32 tidak perlu memindai seluruh kanal.

3.6.10  Menjalankan Simulasi

  1. Pastikan koneksi MQTTX telah diputus atau aplikasinya telah ditutup (langkah terakhir pada 3.6.5).
  2. Klik tombol play berwarna hijau di bagian atas panel Simulation.
  3. Tunggu proses persiapan. Pada saat pertama kali dijalankan, Wokwi mengunduh pustaka yang tercantum pada libraries.txt lalu mengompilasi program. Proses ini membutuhkan waktu sekitar 10 hingga 30 detik.
  4. Setelah kompilasi berhasil, simulasi berjalan. Tombol play berubah menjadi tombol restart, stop, dan pause, sedangkan pewaktu simulasi muncul di pojok kanan atas panel.
  5. Amati Serial Monitor yang muncul di bagian bawah panel Simulation. Keluaran yang diperoleh pada simulasi pertama ditunjukkan pada Kode 3.4.

Kode 3.4 Keluaran Serial Monitor pada simulasi pertama

ets Jul 29 2019 12:21:46

 

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:2

load:0x3fff0030,len:1156

load:0x40078000,len:11456

ho 0 tail 12 room 4

load:0x40080400,len:2972

entry 0x400805dc

 

Connecting to Wokwi-GUEST

....

WiFi connected

IP address: 10.10.0.2

Attempting MQTT connection...Thingsboard is Connected !!

Kirim: {"suhu":24.0,"kelembaban":40.0}

Attempting MQTT connection...Thingsboard is Connected !!



6.               Cocokkan keluaran dengan arti setiap baris pada Tabel 3.9. Tampilan simulasi yang sedang berjalan ditunjukkan pada Gambar 3.31.

Tabel 3.9 Arti baris keluaran Serial Monitor

Keluaran

Arti

ets Jul 29 2019 hingga entry 0x400805dc

Pesan boot bawaan ROM ESP32 saat dinyalakan (POWERON_RESET)

Connecting to Wokwi-GUEST

Fungsi setup_wifi() mulai menyambung ke jaringan virtual

....

Setiap titik menandakan 500 milidetik menunggu koneksi WiFi

WiFi connected dan IP address: 10.10.0.2

ESP32 berhasil terhubung ke WiFi dan memperoleh alamat IP

Attempting MQTT connection...Thingsboard is Connected !!

Autentikasi MQTT Basic ke broker ThingsBoard berhasil

Kirim: {"suhu":24.0,"kelembaban":40.0}

Payload JSON dipublikasikan ke topik telemetry, berulang setiap 5 detik

 

Gambar 3.31 Simulasi berjalan dengan Serial Monitor menampilkan pengiriman data

Keterangan: baris Attempting MQTT connection yang muncul kembali di antara baris Kirim disebabkan oleh perebutan Client ID dengan MQTTX yang masih terhubung. Setelah MQTTX diputus, baris tersebut hanya muncul satu kali di awal (subbab 3.9).

Keterangan: apabila koneksi MQTT gagal, Serial Monitor menampilkan failed, rc= diikuti kode status dari PubSubClient. Nilai -2 menandakan kegagalan menjangkau server (masalah jaringan), nilai 4 menandakan username atau password salah, dan nilai 5 menandakan klien tidak diizinkan.

3.6.11  Memverifikasi Data Simulasi di ThingsBoard

  1. Biarkan simulasi Wokwi tetap berjalan.
  2. Pindah ke tab ThingsBoard, buka Entities, pilih Devices, lalu klik baris Praktikum_Modul5.
  3. Pilih tab Latest telemetry pada panel Device details.
  4. Amati bahwa nilai kelembaban berubah dari 80 menjadi 40.0 dan nilai suhu berubah dari 50 menjadi 24.0, dengan waktu pembaruan 2026-10-09 15:29:24 (Gambar 3.32). Nilai 24.0 dan 40.0 merupakan nilai bawaan sensor DHT22 pada Wokwi, sehingga perubahan ini membuktikan bahwa data berasal dari simulasi, bukan dari pengiriman manual sebelumnya.

Gambar 3.32 Telemetry berubah menjadi nilai yang dikirim dari simulasi Wokwi

5.               Perhatikan bahwa format angka berubah dari bilangan bulat (50 dan 80) menjadi bilangan desimal (24.0 dan 40.0) karena program menyusun payload dengan format satu angka di belakang koma (%.1f).

3.6.12  Menguji Perubahan Nilai Sensor

  1. Pastikan simulasi sedang berjalan, ditandai dengan pewaktu simulasi yang terus bertambah.
  2. Klik badan sensor DHT22 pada kanvas, yaitu bagian putih yang berkisi-kisi. Jangan mengklik label maupun kaki sensor.
  3. Panel Editing DHT22 muncul di bagian atas kanvas dengan dua penggeser, yaitu Temperature bernilai 24.0°C dan Humidity bernilai 40.0% (Gambar 3.33).

Gambar 3.33 Panel pengaturan DHT22 dengan nilai bawaan

4.               Geser penggeser Temperature ke kanan hingga menunjukkan 36.8°C (Gambar 3.34).

Gambar 3.34 Nilai suhu diubah menjadi 36,8 °C dan terkirim melalui Serial Monitor

5.               Tunggu paling lama 5 detik. Baris terakhir Serial Monitor menampilkan Kirim: {"suhu":36.8,"kelembaban":40.0}.

6.               Buka tab ThingsBoard dan periksa Latest telemetry. Nilai suhu berubah menjadi 36.8 dengan waktu pembaruan 2026-10-09 16:01:40 (Gambar 3.35).

Gambar 3.35 Nilai suhu 36,8 °C tercermin pada telemetry ThingsBoard

7.               Tutup panel Editing DHT22 dengan menekan ikon X di pojok kanan panel.

Keterangan: dalam konteks studi kasus ruang server, nilai 36,8 °C berada di atas ambang 35 °C sehingga tergolong kondisi critical sesuai Tabel 3.2. Penggeser ini juga akan digunakan untuk memicu setiap tingkat kondisi ketika menguji alarm pada tahap lanjutan. Selain melalui penggeser, nilai awal sensor dapat ditetapkan melalui atribut pada diagram.json, misalnya "attrs": { "temperature": "36", "humidity": "75" }, sehingga simulasi langsung dimulai dengan nilai tersebut.

3.6.13  Menyimpan dan Menutup Pekerjaan

  1. Pada Wokwi, tekan Ctrl+S dan pastikan tidak ada tanda titik pada tab mana pun.
  2. Klik tombol stop untuk menghentikan simulasi. Menghentikan simulasi hanya menghentikan pengiriman data baru; kode, rangkaian, dan daftar pustaka tetap tersimpan di akun Wokwi.
  3. Tutup tab ThingsBoard. Perangkat, kredensial, dan seluruh data telemetry tersimpan secara otomatis di server.
  4. Tutup aplikasi MQTTX. Profil koneksi tersimpan di dalam aplikasi pada komputer yang digunakan.
  5. Simpan informasi penting proyek sebagaimana tercantum pada Lampiran 1.

Keterangan: untuk melanjutkan pekerjaan, proyek cukup dibuka kembali melalui tautan proyek Wokwi dalam keadaan masuk menggunakan akun yang sama, lalu simulasi dijalankan ulang.

3.7  Hasil Pengujian

Ringkasan hasil pengujian setiap bagian sistem disajikan pada Tabel 3.10. Seluruh pengujian memberikan hasil sesuai harapan.

Tabel 3.10 Ringkasan hasil pengujian

No

Pengujian

Hasil yang diharapkan

Hasil yang diperoleh

Status

1

Autentikasi MQTT Basic dari MQTTX

Koneksi diterima broker

Terhubung, ikon daya merah (Gambar 3.13)

Berhasil

2

Publish data uji dari MQTTX

Telemetry suhu 50 dan kelembaban 80 tersimpan

Tersimpan pada 15:02:41 (Gambar 3.19)

Berhasil

3

Perubahan status perangkat

Inactive menjadi Active

Active setelah daftar diperbarui (Gambar 3.18)

Berhasil

4

Koneksi WiFi ESP32

Terhubung dan memperoleh alamat IP

WiFi connected, IP 10.10.0.2 (Kode 3.4)

Berhasil

5

Koneksi MQTT ESP32

Pesan Thingsboard is Connected muncul

Pesan muncul pada Serial Monitor (Kode 3.4)

Berhasil

6

Pengiriman data berkala

Telemetry diperbarui setiap 5 detik

Telemetry 24.0 dan 40.0 pada 15:29:24 (Gambar 3.32)

Berhasil

7

Respons perubahan nilai sensor

Telemetry mengikuti nilai baru dalam 5 detik

Suhu 36.8 pada 16:01:40 (Gambar 3.35)

Berhasil

 

3.8  Pembahasan

Hasil pengujian menunjukkan bahwa seluruh rantai komunikasi dari sensor hingga cloud telah berfungsi. Terdapat beberapa hal yang layak dibahas lebih lanjut dari implementasi ini.

Pertama, metode pengujian berlapis terbukti bermanfaat. Ketika simulasi Wokwi sempat gagal terhubung akibat gangguan jaringan, penyebabnya dapat segera dipastikan bukan berasal dari kredensial maupun sisi server, karena keduanya sudah terbukti bekerja pada tahap pengujian MQTTX. Tanpa langkah tersebut, proses penelusuran kesalahan harus dilakukan terhadap empat kemungkinan sekaligus, yaitu kredensial, broker, program, dan jaringan.

Kedua, pemilihan key JSON harus konsisten di seluruh sistem. Payload yang dikirim menggunakan key suhu dan kelembaban, sehingga rule chain pada tahap lanjutan juga harus merujuk pada msg.suhu dan bukan msg.temperature. Ketidakkonsistenan penamaan merupakan salah satu kesalahan yang paling sering terjadi dan tidak menghasilkan pesan galat yang jelas.

Ketiga, penempatan logika pengambilan keputusan pada sisi server merupakan keputusan arsitektur yang penting. ESP32 dirancang hanya mengirimkan angka mentah tanpa mengetahui ambang batas apa pun. Dengan demikian, apabila ambang batas perlu diubah, perubahan cukup dilakukan pada rule chain tanpa perlu memprogram ulang perangkat yang sudah terpasang di lapangan.

Keempat, aturan satu koneksi untuk setiap Client ID pada broker MQTT terlihat nyata selama praktikum. Aturan ini sebenarnya merupakan mekanisme pengaman, karena mencegah dua perangkat berbeda mengaku sebagai perangkat yang sama. Konsekuensinya, alat uji dan perangkat yang memakai kredensial identik tidak boleh dijalankan bersamaan.

3.9  Kendala dan Penyelesaian

Selama pengerjaan ditemui beberapa kendala teknis. Seluruh kendala beserta penyebab dan penyelesaiannya dirangkum pada Tabel 3.11, lalu dibahas satu per satu setelahnya.

Tabel 3.11 Kendala yang ditemui selama praktikum dan penyelesaiannya

Kendala

Penyebab

Penyelesaian

Rangkaian DHT22 hilang dari kanvas

Halaman dimuat ulang sebelum perubahan disimpan

Menyusun ulang rangkaian melalui diagram.json dan membiasakan menekan Ctrl+S setiap selesai satu perubahan

Error loading library index pada Library Manager

Gangguan pada server indeks pustaka Wokwi

Mendaftarkan pustaka melalui berkas libraries.txt

Build failed dengan pesan expected '}' at end of input

Kode tersalin tidak utuh dan berhenti di baris 81

Menyalin ulang seluruh kode dan memastikan baris terakhir berupa kurung penutup

MQTTX menampilkan Client not connected dan simulasi tertahan pada deretan titik

Koneksi WiFi komputer sempat terputus

Menyambung ulang MQTTX, menghentikan simulasi, memuat ulang halaman, lalu menjalankan kembali

Session taken over (Code: 142) dan koneksi MQTT tersambung ulang berkali-kali

Client ID yang sama digunakan MQTTX dan Wokwi secara bersamaan

Memutus MQTTX sehingga hanya Wokwi yang menggunakan Client ID tersebut

 

a. Rangkaian hilang karena belum disimpan

Setelah DHT22 ditambahkan dan disambungkan secara grafis, halaman sempat dimuat ulang sebelum proyek disimpan. Akibatnya, kanvas kembali hanya berisi ESP32 (Gambar 3.36). Kejadian ini terjadi bersamaan dengan kegagalan Library Manager memuat indeks pustaka. Rangkaian kemudian disusun ulang melalui diagram.json (Cara 2 pada 3.6.7) yang lebih cepat dan tidak rawan kesalahan penempatan pin.

Gambar 3.36 Kanvas hanya berisi ESP32 setelah halaman dimuat ulang sebelum disimpan

b. Library Manager gagal memuat indeks pustaka

Pencarian pustaka sempat berjalan, lalu berhenti dengan pesan Error loading library index :( sebagaimana ditunjukkan pada Gambar 3.28. Gangguan ini berasal dari sisi server Wokwi dan tidak dapat diatasi dari sisi pengguna. Penyelesaiannya adalah mendaftarkan pustaka melalui berkas libraries.txt, yang menggunakan jalur pengunduhan berbeda dari indeks pencarian.

c. Kompilasi gagal karena kode tidak utuh

Pada percobaan pertama, kode yang tertempel pada editor hanya sampai baris 81 sehingga kurung kurawal penutup fungsi loop() hilang. Kompilator menampilkan pesan expected '}' at end of input yang merujuk pada pembukaan blok di baris 63 dan 70 (Gambar 3.37). Setelah kode disalin ulang secara utuh, program berakhir di baris 89 dan kompilasi berhasil.

Gambar 3.37 Pesan Build failed akibat kode yang tersalin tidak lengkap

d. Koneksi WiFi komputer terputus

Ketika koneksi WiFi komputer sempat terputus, MQTTX kehilangan koneksi ke broker sehingga setiap upaya pengiriman menghasilkan pesan Client not connected (Gambar 3.38). Pada saat yang sama, simulasi Wokwi yang sedang berjalan tertahan pada deretan titik di Serial Monitor karena sesi simulasi kehilangan hubungan dengan server Wokwi (Gambar 3.39).

Gambar 3.38 MQTTX menampilkan Client not connected setelah koneksi WiFi terputus

Gambar 3.39 Simulasi tertahan pada deretan titik saat menunggu koneksi WiFi

Kode program dan proyek tidak mengalami perubahan apa pun. Penyelesaiannya adalah memastikan WiFi komputer tersambung kembali, menyambung ulang MQTTX melalui tombol connect, lalu pada Wokwi menghentikan simulasi, memuat ulang halaman, dan menjalankan simulasi kembali hingga Serial Monitor menampilkan WiFi connected seperti pada Gambar 3.31.

e. Perebutan Client ID antara MQTTX dan Wokwi

Setelah MQTTX dan Wokwi sama-sama tersambung kembali, MQTTX menampilkan pesan The Broker has actively disconnected, Reason: Session taken over (Code: 142) secara berulang tanpa ada tombol yang ditekan (Gambar 3.40). Pesan ini menunjukkan bahwa broker memutus MQTTX karena ada klien lain, yaitu Wokwi, yang tersambung dengan Client ID yang sama. Sebaliknya, ketika MQTTX menyambung ulang secara otomatis, giliran Wokwi yang terputus, sehingga Serial Monitor menampilkan baris Attempting MQTT connection sebelum hampir setiap baris Kirim.

Gambar 3.40 Pesan Session taken over pada MQTTX akibat Client ID digunakan oleh dua klien

Penyelesaiannya adalah memutus koneksi MQTTX. Pada Gambar 3.41, ikon di pojok kanan atas MQTTX telah berubah menjadi ikon play yang menandakan koneksi terputus. Riwayat pesan pada gambar tersebut juga memperlihatkan pengiriman uji kedua dengan kelembaban 70 pada pukul 15.46 yang dilakukan sebelum koneksi diputus. Setelah MQTTX tidak lagi terhubung, Serial Monitor hanya menampilkan baris Kirim secara berurutan tanpa disela upaya koneksi ulang (Gambar 3.42).

Gambar 3.41 MQTTX dalam keadaan terputus beserta riwayat dua pesan uji

Gambar 3.42 Serial Monitor menampilkan pengiriman data yang stabil setelah MQTTX diputus

 

BAB IV
PENUTUP

4.1  Kesimpulan

Berdasarkan implementasi dan pengujian yang telah dilakukan, dapat ditarik kesimpulan sebagai berikut:

  1. Perangkat berhasil didaftarkan pada ThingsBoard Cloud dengan kredensial MQTT Basic. Jenis kredensial ini dipilih karena didukung secara langsung oleh pustaka PubSubClient pada ESP32, sementara X.509 memerlukan penanganan TLS yang jauh lebih berat untuk lingkungan simulasi.
  2. Jalur komunikasi MQTT berhasil diverifikasi melalui pengiriman data manual dari MQTTX ke topik v1/devices/me/telemetry. Data uji berupa suhu 50 dan kelembaban 80 tersimpan pada tab Latest telemetry, yang membuktikan bahwa kredensial, alamat broker, topik, dan format payload telah benar sebelum program perangkat ditulis.
  3. Program pada ESP32 yang disimulasikan di Wokwi berhasil membaca sensor DHT22 dan mengirimkan data secara otomatis setiap lima detik ke ThingsBoard Cloud. Keberhasilan ini ditandai dengan pesan Thingsboard is Connected pada Serial Monitor dan perubahan nilai telemetry menjadi 24.0 dan 40.0.
  4. Responsivitas sistem terbukti melalui pengujian sebab-akibat. Perubahan nilai suhu dari 24,0 °C menjadi 36,8 °C pada sensor tercermin pada telemetry ThingsBoard dalam waktu kurang dari lima detik, sehingga rantai data dari ujung ke ujung dinyatakan berfungsi.
  5. Metode pengujian berlapis terbukti efektif dalam mempersempit ruang penelusuran kesalahan. Dengan memastikan sisi server berfungsi terlebih dahulu, kegagalan yang terjadi pada tahap berikutnya dapat segera dipastikan bersumber dari program atau koneksi jaringan.
  6. Broker MQTT hanya mengizinkan satu koneksi aktif untuk setiap Client ID, sehingga alat uji dan perangkat yang menggunakan kredensial yang sama tidak dapat dijalankan secara bersamaan.
  7. Penempatan logika pengambilan keputusan pada sisi server memungkinkan perubahan ambang batas dilakukan tanpa memprogram ulang perangkat, sehingga sistem menjadi lebih mudah dirawat.

4.2  Saran

Beberapa saran yang dapat diberikan untuk pengembangan dan pelaksanaan praktikum berikutnya adalah:

  1. Pastikan kredensial yang digunakan bersifat unik dan berbeda dari contoh pada modul, karena kredensial MQTT Basic berlaku di seluruh server ThingsBoard Cloud dan dapat menimbulkan konflik antarpengguna.
  2. Jalankan hanya satu klien MQTT dalam satu waktu untuk setiap Client ID. Putuskan MQTTX sebelum menjalankan simulasi Wokwi.
  3. Biasakan menyimpan proyek Wokwi setiap selesai melakukan satu perubahan, karena perubahan yang belum disimpan akan hilang apabila halaman dimuat ulang.
  4. Siapkan dokumentasi berupa tangkapan layar untuk setiap tahap sebagai cadangan apabila demonstrasi langsung terkendala jaringan pada saat presentasi.
  5. Untuk pengembangan lebih lanjut, sistem dapat dilengkapi dengan dashboard visualisasi, rule chain untuk klasifikasi kondisi, pembentukan alarm bertingkat, serta notifikasi melalui surat elektronik sesuai lingkup tahap lanjutan.
  6. Sistem ini dapat dikembangkan menjadi implementasi nyata dengan mengganti nama dan kata sandi jaringan WiFi serta menggunakan perangkat ESP32 dan sensor DHT22 fisik, tanpa perlu mengubah struktur program yang telah dibangun.

 

 

DAFTAR PUSTAKA

Adafruit Industries. DHT Sensor Library. Tersedia di https://github.com/adafruit/DHT-sensor-library. Diakses pada 9 Oktober 2026.

EMQ Technologies. MQTTX: Your All-in-one MQTT Client Toolbox. Tersedia di https://mqttx.app/. Diakses pada 9 Oktober 2026.

Modul 5 Praktikum Internet of Things. Mencoba Platform IoT Cloud Siap Pakai dengan Wokwi. Program Studi Informatika.

MQTT.org. MQTT: The Standard for IoT Messaging. Tersedia di https://mqtt.org/. Diakses pada 9 Oktober 2026.

O'Leary, N. PubSubClient: Arduino Client for MQTT. Tersedia di https://github.com/knolleary/pubsubclient. Diakses pada 9 Oktober 2026.

ThingsBoard. ThingsBoard Documentation. Tersedia di https://thingsboard.io/docs/. Diakses pada 9 Oktober 2026.

Wokwi. Wokwi Documentation. Tersedia di https://docs.wokwi.com/. Diakses pada 9 Oktober 2026.

 

LAMPIRAN

Lampiran 1  Informasi Proyek

Keterangan

Nilai

Tautan proyek Wokwi

https://wokwi.com/projects/477389906579101697

Nama proyek Wokwi

Praktikum Modul 5 IoT ThingsBoard

Alamat ThingsBoard

https://thingsboard.cloud

Nama perangkat

Praktikum_Modul5

Jenis kredensial

MQTT Basic

Client ID

wokwi_praktikum_modul5

User Name

georvin

Alamat broker MQTT

mqtt.thingsboard.cloud

Port

1883

Topik telemetry

v1/devices/me/telemetry

Key telemetry

suhu, kelembaban

Interval pengiriman

5 detik

Paket langganan

ThingsBoard Cloud Free

 

Tidak ada komentar:

Posting Komentar