Minggu, 11 Oktober 2026

RANCANG BANGUN SISTEM SMART CLASSROOM DAN OTOMATISASI AKSES PINTU BERBASIS ESP32 DENGAN VISUALISASI LCD I2C TERINTEGRASI PLATFORM THINGSBOARD CLOUD

LAPORAN PRAKTIKUM

RANCANG BANGUN SISTEM SMART CLASSROOM DAN OTOMATISASI AKSES PINTU BERBASIS ESP32 DENGAN VISUALISASI LCD I2C TERINTEGRASI PLATFORM THINGSBOARD CLOUD

 

 

Disusun oleh :

Ahmad Aura Syahrul Muharrom       24051204203

Jeehan Kamila Muzaky                      24051204122

Yudhi D Bakkara                                24051204174

Miuvanida Klandistin                         24051204208




BAB I
PENDAHULUAN

1.1 Latar Belakang

Internet of Things (IoT) memungkinkan berbagai perangkat elektronik saling terhubung, mengumpulkan data, dan bertukar informasi melalui jaringan internet. Dalam penerapannya pada lingkungan akademis dan fasilitas cerdas (smart building), ekosistem IoT membutuhkan platform IoT Cloud yang berfungsi sebagai broker komunikasi, pusat pengolahan data, serta antarmuka visualisasi telemetri. Namun, dalam realitas industri, sebagian besar platform IoT komersial (seperti Tuya dan Blynk) menetapkan skema berbayar (subscription) atau sangat membatasi fitur dasar pada versi uji coba (free trial).

Sebagai solusi atas keterbatasan tersebut, ThingsBoard hadir sebagai platform IoT open-source yang andal. ThingsBoard menyediakan opsi Community Edition maupun layanan ThingsBoard Cloud yang mendukung protokol standar IoT seperti MQTT, CoAP, dan HTTP. Protokol MQTT (Message Queuing Telemetry Transport) menjadi pilihan utama karena sifatnya yang ringan (lightweight), menggunakan arsitektur Publish/Subscribe, serta sangat efisien untuk perangkat dengan daya dan bandwidth terbatas.

Pada praktikum ini, dikembangkan sebuah proyek terintegrasi Smart Classroom & Otomatisasi Akses Pintu berbasis mikrokontroler ESP32, sensor suhu/kelembaban DHT22, sensor jarak ultrasonik HC-SR04, aktuator Servo Motor, Buzzer, dan display layar LCD 16x2 I2C. Praktikum mencakup pendaftaran dan konfigurasi device pada ThingsBoard Cloud menggunakan autentikasi MQTT Basic, pengujian pengiriman payload JSON multi-parameter dari PC menggunakan aplikasi MQTT Client (MQTTX), serta integrasi simulasi hardware pada platform Wokwi secara real-time.

1.2 Rumusan Masalah

  1. Bagaimana cara membuat dan mengonfigurasi device baru serta kredensial MQTT Basic pada platform ThingsBoard Cloud?
  2. Bagaimana cara melakukan pengujian pengiriman data telemetri berformat JSON multi-parameter dari PC ke ThingsBoard Cloud menggunakan aplikasi MQTT Client?
  3. Bagaimana cara mengintegrasikan simulasi Wokwi (ESP32, sensor DHT22, HC-SR04, LCD 16x2 I2C, Servo, dan Buzzer) ke ThingsBoard Cloud melalui protokol MQTT?
  4. Bagaimana cara memverifikasi pembaruan data telemetri suhu, kelembaban, jarak, status pintu, dan kondisi ruangan secara real-time pada dashboard ThingsBoard Cloud?

1.3 Tujuan

  1. Memahami konsep dasar platform IoT Cloud, kendala komersialisasi platform, serta arsitektur protokol MQTT.
  2. Mampu mengonfigurasi device dan kredensial autentikasi MQTT Basic pada ThingsBoard Cloud.
  3. Mampu mengirimkan data telemetri berformat JSON multi-parameter dari PC menggunakan aplikasi MQTT Client.
  4. Mampu menyusun kode program C++ pada Wokwi untuk mengontrol sistem Smart Classroom dan menghubungkan ESP32 ke ThingsBoard Cloud via MQTT.
  5. Mampu memverifikasi masuknya data telemetri multi-parameter di tab Latest Telemetry ThingsBoard Cloud.

1.4 Manfaat

  1. Menambah pemahaman mendalam mengenai arsitektur komunikasi Publish/Subscribe pada protokol MQTT.
  2. Memberikan keterampilan praktis dalam mengelola device dan kredensial pada platform IoT Cloud.
  3. Melatih kemampuan debugging komunikasi data IoT baik melalui aplikasi MQTT Client PC maupun simulasi mikrokontroler.
  4. Memberikan pengalaman pembuatan sistem IoT interaktif dengan tampilan antarmuka lokal (LCD) dan indikator aktuator fisik (Servo & Buzzer) menggunakan Wokwi secara virtual.

 

 

BAB II
TINJAUAN PUSTAKA

2.1 Dasar Teori

2.1.1 Platform IoT Cloud dan Realitas Industri

Sebagian besar platform IoT di dunia merupakan entitas komersial yang menarik biaya penggunaan. Fasilitas free trial yang disediakan umumnya sangat dibatasi pada fungsi-fungsi dasar. Solusi alternatif untuk mengatasi keterbatasan ini adalah menginstal platform IoT open-source di server lokal (seperti ThingsBoard, OpenBalena, Node-RED) atau memanfaatkan broker MQTT publik/layanan Cloud gratisan.

2.1.2 Protokol MQTT

MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi jaringan berbasis arsitektur Publish/Subscribe. Perangkat bertindak sebagai client yang mengirimkan data (publish) atau menerima data (subscribe) melalui perantara bernama broker. ThingsBoard bertindak sebagai broker sekaligus server IoT Cloud. Pengiriman data telemetri pada ThingsBoard menggunakan topik standar: v1/devices/me/telemetry dengan isi data (payload) berformat JSON (JavaScript Object Notation).

2.1.3 Autentikasi MQTT Basic pada ThingsBoard

ThingsBoard mendukung berbagai metode otentikasi perangkat, salah satunya adalah MQTT Basic. Metode ini memerlukan tiga parameter utama agar client diizinkan terhubung ke broker:

  • Client ID: Identitas unik perangkat.
  • User Name: Nama pengguna akses perangkat.
  • Password: Kata sandi otentikasi.

2.1.4 ESP32, Sensor DHT22, dan Sensor Ultrasonik HC-SR04

ESP32 adalah mikrokontroler yang dilengkapi dengan modul Wi-Fi dan Bluetooth terintegrasi, menjadikannya ideal untuk aplikasi IoT. Sensor DHT22 merupakan sensor digital untuk mengukur suhu (°C) dan kelembaban udara (%) dengan tingkat akurasi yang presisi. Sensor Ultrasonik HC-SR04 berfungsi mengukur jarak objek dengan memanfaatkan gelombang suara pantul untuk mendeteksi keberadaan orang di dekat akses pintu.

2.1.5 LCD 16x2 I2C, Servo Motor, dan Buzzer

Layar LCD 16x2 dengan modul I2C (Inter-Integrated Circuit) berfungsi menampilkan status operasional sistem dan data sensor secara lokal menggunakan dua jalur komunikasi (SDA dan SCL). Servo Motor SG90 bertindak sebagai aktuator pembuka/penutup pintu otomatis berdasarkan deteksi jarak atau kondisi darurat suhu panas. Buzzer memberikan peringatan audio (beep) saat pintu beroperasi atau terjadi indikasi bahaya suhu tinggi.

2.1.6 Wokwi Simulator dan MQTTX

Wokwi adalah platform simulator elektronik online yang memungkinkan pengujian mikrokontroler ESP32, sensor, dan koneksi jaringan virtual (Wi-Fi Wokwi-GUEST) secara real-time. Sedangkan MQTTX adalah aplikasi MQTT Client GUI untuk melatih pengiriman dan penerimaan pesan MQTT dari PC ke broker.

2.2 Perangkat dan Software yang Digunakan

No

Perangkat / Software

Jumlah

Fungsi

1

ThingsBoard Cloud

1 Akun

Server IoT Cloud, Broker MQTT, dan visualisasi telemetri

2

MQTT Client (MQTTX)

1 Aplikasi

Alat uji coba pengiriman payload JSON dari PC via MQTT

3

Wokwi Simulator

1 Platform

Simulator rangkaian fisik dan eksekusi kode C++ Arduino

4

ESP32 DevKit V1

1 Perangkat Virtual

Mikrokontroler utama pemproses data dan pengirim MQTT

5

Sensor DHT22

1 Perangkat Virtual

Sensor pengukur suhu dan kelembaban udara

6

Sensor HC-SR04

1 Perangkat Virtual

Sensor ultrasonik pengukur jarak keberadaan orang

7

Servo Motor SG90

1 Perangkat Virtual

Aktuator otomatisasi pembuka/penutup pintu

8

LCD 16x2 I2C

1 Perangkat Virtual

Display informasi status lingkungan dan pintu secara lokal

9

Buzzer

1 Perangkat Virtual

Indikator suara peringatan dan alur akses pintu

 

 

 

BAB III
PEMBAHASAN

3.1 Deskripsi Praktikum dan Alur Kerja

Sistem praktikum Smart Classroom ini bertujuan untuk mengintegrasikan pengumpulan data telemetri multi-sensor (suhu, kelembaban, jarak), otomatisasi akses pintu (Servo), serta visualisasi lokal (LCD I2C) dan Cloud (ThingsBoard Cloud) melalui protokol MQTT.

Alur kerja sistem secara keseluruhan meliputi:

  1. Pendaftaran device uts dan pembuatan kredensial MQTT Basic di ThingsBoard Cloud.
  2. Pengujian jalur komunikasi dari PC dengan mengirimkan JSON multi-parameter {"suhu":25.5, "kelembaban":60, "jarak_cm":35, "status":"PERSON_NEAR", "pintu":"OPEN"} via topik v1/devices/me/telemetry menggunakan MQTTX.
  3. Eksekusi kode program di Wokwi untuk menghubungkan ESP32 ke Wi-Fi Wokwi-GUEST dan broker mqtt.thingsboard.cloud.
  4. Pembacaan berkala sensor DHT22 dan HC-SR04, eksekusi gerakan Servo dan LCD, penyusunan string JSON, serta publish data telemetri ke ThingsBoard Cloud secara berkala.

3.2 Konfigurasi Parameter Kredensial & Topik MQTT

Parameter

Nilai Konfigurasi

Keterangan

Server Broker

mqtt.thingsboard.cloud

Alamat Server Cloud ThingsBoard

Port MQTT

1883

Port komunikasi MQTT non-TLS

Device Name

uts

Nama perangkat pada ThingsBoard

Credentials Type

MQTT Basic

Metode autentikasi kredensial

Client ID

workshopsyahrul

Identitas unik client

Username

TiIOT

Username akses perangkat

Password

12345678

Password akses perangkat

MQTT Topic

v1/devices/me/telemetry

Topik publikasi telemetri ThingsBoard

3.3 Program

Program lengkap C++ yang digunakan pada simulasi Wokwi adalah sebagai berikut:

#include <WiFi.h>

#include <PubSubClient.h>

#include <DHTesp.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <ESP32Servo.h>

 

// Deklarasi Pin Hardware

const int DHT_PIN       = 15;

const int TRIG_PIN      = 5;

const int ECHO_PIN      = 18;

const int SERVO_PIN     = 13;

const int BUZZER_PIN    = 12;

 

// Inisialisasi Objek

DHTesp dht;

LiquidCrystal_I2C lcd(0x27, 16, 2);

Servo doorServo;

 

// Konfigurasi Wi-Fi & Kredensial ThingsBoard Cloud

const char* ssid        = "Wokwi-GUEST";

const char* password    = "";

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

const char* mqtt_clid   = "workshopsyahrul";

const char* mqtt_user   = "TiIOT";

const char* mqtt_pass   = "12345678";

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

 

WiFiClient espClient;

PubSubClient client(espClient);

unsigned long lastMsg = 0;

 

// Fungsi Membaca Sensor Ultrasonik HC-SR04

float readDistance() {

  digitalWrite(TRIG_PIN, LOW);

  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);

  delayMicroseconds(10);

  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH);

  return (duration * 0.034 / 2);

}

 

// Menghubungkan ESP32 dengan Wi-Fi

void setup_wifi() {

  delay(10);

  Serial.println();

  Serial.print("Connecting to ");

  Serial.println(ssid);

  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, password, 6);

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

    delay(500);

    Serial.print(".");

  }

  Serial.println("\nWiFi connected");

  Serial.print("IP address: ");

  Serial.println(WiFi.localIP());

}

 

// Menjaga koneksi MQTT dan melakukan reconnect jika terputus

void reconnect() {

  while (!client.connected()) {

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

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

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

    } else {

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

      Serial.print(client.state());

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

      delay(5000);

    }

  }

}

 

void setup() {

  Serial.begin(115200);

 

  pinMode(TRIG_PIN, OUTPUT);

  pinMode(ECHO_PIN, INPUT);

  pinMode(BUZZER_PIN, OUTPUT);

 

  // Inisialisasi Servo Pintu

  doorServo.attach(SERVO_PIN);

  doorServo.write(0); // Pintu Tertutup (0 derajat)

 

  // Inisialisasi LCD I2C

  Wire.begin(21, 22);

  lcd.init();

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("Smart Class IoT");

  lcd.setCursor(0, 1);

  lcd.print("Initializing...");

  delay(2000);

  lcd.clear();

 

  // Inisialisasi Sensor DHT22

  dht.setup(DHT_PIN, DHTesp::DHT22);

 

  setup_wifi();

  client.setServer(mqtt_server, 1883);

}

 

void loop() {

  if (!client.connected()) {

    reconnect();

  }

  client.loop();

 

  // Pengiriman data non-blocking berkala

  unsigned long now = millis();

  if (now - lastMsg > 3000) {

    lastMsg = now;

 

    // Membaca data sensor DHT22 & HC-SR04

    TempAndHumidity data = dht.getTempAndHumidity();

    float temp = data.temperature;

    float hum = data.humidity;

    float dist = readDistance();

 

    String statusRuang = "NORMAL";

    String statusPintu = "CLOSED";

 

    // Logika Otomatisasi Akses Pintu & Peringatan Suhu Panas

    if (dist < 50.0 || temp > 30.0) {

      doorServo.write(90); // Pintu Terbuka (90 derajat)

      statusPintu = "OPEN";

     

      if (temp > 30.0) {

        statusRuang = "WARNING_HOT";

        tone(BUZZER_PIN, 1000, 200);

      } else {

        statusRuang = "PERSON_NEAR";

        tone(BUZZER_PIN, 2000, 100);

      }

    } else {

      doorServo.write(0); // Pintu Tertutup (0 derajat)

      statusPintu = "CLOSED";

      noTone(BUZZER_PIN);

    }

 

    // Pembaruan Tampilan Layar LCD Lokal

    lcd.setCursor(0, 0);

    lcd.print("T:");

    lcd.print(temp, 1);

    lcd.print("C H:");

    lcd.print(hum, 0);

    lcd.print("%   ");

 

    lcd.setCursor(0, 1);

    lcd.print("D:");

    lcd.print((int)dist);

    lcd.print("cm P:");

    lcd.print(statusPintu);

    lcd.print("   ");

 

    // Menyusun Payload Berformat JSON Multi-Parameter

    String publishPayload = "{";

    publishPayload += "\"suhu\":" + String(temp, 2) + ",";

    publishPayload += "\"kelembaban\":" + String(hum, 1) + ",";

    publishPayload += "\"jarak_cm\":" + String(dist, 1) + ",";

    publishPayload += "\"status\":\"" + statusRuang + "\",";

    publishPayload += "\"pintu\":\"" + statusPintu + "\"";

    publishPayload += "}";

 

    // Mempublikasikan data ke ThingsBoard Cloud

    client.publish(mqtt_topic, publishPayload.c_str());

 

    // Cetak log ke Serial Monitor

    Serial.println("========================================");

    Serial.print("Suhu        : "); Serial.print(temp, 2); Serial.println(" C");

    Serial.print("Kelembaban  : "); Serial.print(hum, 1); Serial.println(" %");

    Serial.print("Jarak Pintu : "); Serial.print(dist, 1); Serial.println(" cm");

    Serial.print("Status Pintu: "); Serial.println(statusPintu);

    Serial.print("Status Ruang: "); Serial.println(statusRuang);

    Serial.print("Payload JSON: "); Serial.println(publishPayload);

    Serial.println("Status Transmisi: PUBLISHED OK");

    Serial.println("========================================\n");

  }

}

 

3.4 Penjelasan Kode Program

  1. Library: WiFi.h mengelola koneksi Wi-Fi ESP32, PubSubClient.h menangani protokol MQTT, DHTesp.h membaca data sensor DHT22, LiquidCrystal_I2C.h mengendalikan antarmuka layar LCD, dan ESP32Servo.h menggerakkan Servo Motor.
  2. Setup Wi-Fi (setup_wifi): Mengoperasikan Wi-Fi ESP32 pada mode Station (WIFI_STA) untuk terhubung ke access point virtual Wokwi-GUEST.
  3. Koneksi MQTT (reconnect): Fungsi ini memeriksa status koneksi ke mqtt.thingsboard.cloud. Otentikasi dilakukan menggunakan fungsi client.connect(mqtt_clid, mqtt_user, mqtt_pass) sesuai kredensial MQTT Basic.
  4. Logika Otomatisasi & Pembacaan Sensor: Sensor ultrasonik menghitung jarak objek. Jika jarak < 50 cm atau suhu > 30°C, Servo berputar 90° (pintu terbuka) dan Buzzer berbunyi singkat. LCD lokal memperbarui tampilan suhu, kelembaban, jarak, dan status pintu.
  5. Konstruksi Payload JSON: Data sensor dan status sistem disusun membentuk format JSON kaya {"suhu":XX.XX,"kelembaban":YY.Y,"jarak_cm":ZZ.Z,"status":"...","pintu":"..."} lalu dikirimkan ke topik v1/devices/me/telemetry.

3.5 Langkah-Langkah Kerja Praktikum & Hasil Pengujian

Langkah 1: Membuat Device di ThingsBoard Cloud

  1. Buka browser dan login ke akun ThingsBoard Cloud.
  2. Navigasi ke menu Entities > Devices > klik tombol + (Add new device).
  3. Beri nama device uts.
  4. Pilih Next: Credentials, aktifkan MQTT Basic, lalu masukkan Client ID (workshopsyahrul), Username (TiIOT), dan Password (12345678).
  5. Simpan device.

 

Gambar 3.2: Tampilan Konfigurasi Device Credentials (uts) di ThingsBoard Cloud.

Langkah 2: Uji Pengiriman Data dari PC via MQTT Client

  1. Buka aplikasi MQTTX di PC.
  2. Buat profil koneksi baru menuju mqtt.thingsboard.cloud port 1883 menggunakan Client ID workshopsyahrul, Username TiIOT, dan Password 12345678.
  3. Klik Connect.
  4. Masukkan topik v1/devices/me/telemetry dan isi payload JSON: {"suhu":25.5, "kelembaban":60, "jarak_cm":35, "status":"PERSON_NEAR", "pintu":"OPEN"}.
  5. Klik Publish/Send.
  6. Buka ThingsBoard Cloud pada menu Devices > uts > tab Latest Telemetry dan pastikan seluruh key-value parameter masuk secara sempurna.

Gambar 3.3: Pengiriman Payload JSON via MQTTX PC dan Hasil Verifikasi Telemetri di ThingsBoard Cloud.

 

Langkah 3: Pengiriman Data dari Wokwi ke ThingsBoard Cloud

  1. Buka proyek Wokwi Smart Classroom ESP32.
  2. Masukkan kode program C++ yang memuat kredensial ThingsBoard ke dalam file sketch.ino.
  3. Tekan tombol Start Simulation.
  4. Amati Serial Monitor hingga muncul pesan WiFi connected dan Thingsboard is Connected !!.
  5. Geser slider sensor jarak HC-SR04 atau suhu DHT22 di Wokwi, amati pergerakan Servo Motor, perubahan teks LCD, serta perubahan angka secara real-time pada tab Latest Telemetry di ThingsBoard Cloud.

Gambar 3.4: Tampilan Simulasi Wokwi Smart Classroom ESP32, Pergerakan Servo/LCD, dan Log Serial Monitor.

3.6 Hasil Pengujian

No

Skenario Pengujian

Aksi / Input Data

Hasil yang Diharapkan

Status

1

Pembuatan Device

Menambahkan device uts & kredensial MQTT Basic

Device terdaftar di ThingsBoard Cloud

Berhasil

2

Uji MQTTX PC

Publish JSON multi-parameter via MQTTX

Data suhu, kelembaban, jarak_cm, status, dan pintu masuk di tab Latest Telemetry

Berhasil

3

Koneksi Wokwi

Jalankan simulasi Wokwi ESP32

Serial Monitor mencetak Thingsboard is Connected !!

Berhasil

4

Otomatisasi Pintu & LCD

Ubah jarak HC-SR04 < 50 cm pada Wokwi

Servo bergerak 90° (pintu terbuka), LCD menampilkan P:OPEN, dan data telemetri terbarui di ThingsBoard

Berhasil

3.7 Link Simulasi Wokwi

https://wokwi.com/projects/477346393160138753

 

 

 

 

BAB IV
PENUTUP

4.1 Kesimpulan

Berdasarkan praktikum implementasi platform IoT Cloud ThingsBoard berbasis protokol MQTT yang telah dilaksanakan, dapat disimpulkan bahwa pendaftaran dan konfigurasi perangkat uts pada ThingsBoard Cloud berhasil dilakukan dengan menerapkan skema autentikasi MQTT Basic. Pengujian awal pengiriman data telemetri berformat JSON dari PC menggunakan aplikasi MQTTX membuktikan bahwa jalur komunikasi dan server ThingsBoard telah siap menerima data telemetri pada topik v1/devices/me/telemetry.

Integrasi sistem Smart Classroom berbasis mikrokontroler ESP32, sensor suhu/kelembaban DHT22, sensor jarak ultrasonik HC-SR04, Servo Motor, Buzzer, dan display LCD 16x2 I2C juga berjalan sukses, di mana data kondisi lingkungan dan status akses pintu berhasil ditampilkan secara lokal serta dipublikasikan secara berkala ke platform Cloud secara real-time. Selain itu, praktikum ini membuktikan karakteristik dasar protokol MQTT yang membatasi penggunaan satu Client ID hanya untuk satu koneksi aktif pada satu waktu. Oleh karena itu, aplikasi MQTTX di PC harus dinonaktifkan (disconnected) saat simulasi Wokwi dijalankan guna menghindari terjadinya konflik koneksi (session taken over).

4.2 Saran

  1. Untuk pengembangan praktikum selanjutnya, dapat ditambahkan konfigurasi Dashboard Widget (seperti Gauge, Timeseries Chart, dan Digital Switch) pada ThingsBoard Cloud agar visualisasi data telemetri menjadi lebih interaktif.
  2. Sistem dapat dikembangkan lebih lanjut dengan memanfaatkan fitur Rule Chain dan RPC (Remote Procedure Call) pada ThingsBoard untuk mengirimkan perintah balik (Two-Way MQTT) guna mengontrol pembukaan pintu secara jarak jauh dari server.
  3. Apabila ingin menguji pengiriman data dari PC dan Wokwi secara bersamaan, disarankan untuk membuat dua device terpisah dengan Client ID yang berbeda pada ThingsBoard Cloud agar tidak terjadi bentrok koneksi.

 

 

DAFTAR PUSTAKA

Kurniawan, Nyoman Yudi. Modul 05: Mencoba Platform IOT Cloud Siap Pakai dengan Wokwi. Materi Mata Kuliah Internet of Things.

ThingsBoard. ThingsBoard Documentation: Device Attributes and Telemetry. https://thingsboard.io/docs/.

Wokwi. Wokwi Documentation: ESP32 Wi-Fi & MQTT Integration. https://docs.wokwi.com.

EMQX. MQTTX: Cross-platform MQTT 5.0 Desktop Client. https://mqttx.app.

 

Tidak ada komentar:

Posting Komentar