Senin, 19 Oktober 2026

LAPORAN PRAKTIKUM SISTEM PEMUTUS ALUR GAS OTOMATIS DENGAN THINGSBOARD DAN WOKWI

`LAPORAN PRAKTIKUM SISTEM PEMUTUS ALUR GAS OTOMATIS DENGAN THINGSBOARD DAN WOKWI

Disusun Oleh:

Amira Najihah Fadri Putri(24051204002)
Mareta Surya Tananjaya(24051204006)
Novasya Aulia Putri Hidayat(24051204028)
Sulthania Auliya Afandi(24051204034)

BAB I
PENDAHULUAN

1.1 Latar Belakang

Dapur merupakan salah satu area rumah tangga dengan risiko kebakaran yang tinggi, yang tidak hanya disebabkan oleh kebocoran gas LPG tetapi juga oleh lonjakan suhu atau panas ekstrem di sekitar area memasak. Laporan ini merupakan pengembangan lanjutan dari sistem pengaman dapur pintar berbasis Internet of Things (IoT). Jika pada versi sebelumnya sistem hanya menggunakan satu sensor gas, pada versi ini sistem dikembangkan menjadi sistem dual-sensor (sensor gas dan sensor suhu digital DS18B20).

Mikrokontroler ESP32 membaca tingkat kepekatan gas dari potensiometer serta suhu aktual dari sensor DS18B20. Selama kondisi di bawah batas aman, sistem berjalan normal dengan katup jalur gas dalam kondisi terbuka (Solenoid Valve direpresentasikan oleh LED biru yang padam). Apabila kadar gas atau suhu melewati ambang batas berbahaya, sistem secara otomatis menyalakan LED merah dan buzzer sebagai alarm peringatan dini, mengaktifkan modul relay untuk menutup Solenoid Valve (LED biru menyala), serta mengirimkan data telemetri lengkap secara real-time ke ThingsBoard Cloud. Alarm pada ThingsBoard juga dihubungkan dengan fitur Notifications sehingga peringatan bahaya dikirim otomatis sebagai notifikasi (Inbox, serta email bila SMTP telah dikonfigurasi) kepada pengelola dapur. Selain itu, dikembangkan web monitor lokal berbasis Flask yang menampilkan kadar gas secara real-time dan mengirim email peringatan otomatis melalui Gmail.

1.2 Rumusan Masalah

1.Bagaimana merancang sistem pengaman ganda berbasis ESP32 pada Wokwi yang mengintegrasikan sensor gas dan sensor suhu DS18B20 untuk menutup Solenoid Valve secara otomatis?

2.Bagaimana LED merah, buzzer, modul relay, dan LED biru dikendalikan berdasarkan hasil pembacaan kedua sensor?

3.Bagaimana data kadar gas, suhu, dan status sistem dikirim ke ThingsBoard melalui MQTT dan ditampilkan pada dashboard?

4.Bagaimana mengonfigurasi alarm ThingsBoard agar peringatan bahaya dikirim otomatis sebagai notifikasi (Inbox, serta email bila SMTP telah dikonfigurasi) dengan fitur Notifications (Recipients, Templates, dan Rules)?

5.Bagaimana membangun web monitor lokal yang menampilkan kadar gas dari ThingsBoard dan mengirim email peringatan otomatis saat kadar gas melewati ambang batas?

1.3 Tujuan Laporan

1.Menjelaskan rancangan rangkaian dan cara kerja sistem pemutus alur gas otomatis berbasis dua sensor (gas dan suhu DS18B20) pada Wokwi.

2.Menjelaskan alur pengiriman data telemetri ganda dari ESP32 ke ThingsBoard menggunakan protokol MQTT dalam format JSON.

3.Menyusun langkah-langkah pengaturan ThingsBoard Cloud, pengambilan Access Token, desain dashboard multi-sensor, hingga konfigurasi notifikasi otomatis (Inbox, serta email bila SMTP telah dikonfigurasi) dari alarm.

4.Menjelaskan pembuatan web monitor lokal berbasis Flask yang menampilkan kadar gas dan mengirim email peringatan otomatis melalui Gmail.

1.4 Manfaat Penulisan

1.Memberikan gambaran penerapan IoT untuk sistem pengaman dapur yang tidak hanya memantau, tetapi juga bertindak otomatis mencegah risiko kebakaran.

2.Membantu memahami alur kerja sensor, aktuator (relay dan Solenoid Valve), dan cloud sebelum tahap implementasi pada perangkat fisik.

BAB II
TINJAUAN PUSTAKA

2.1 Dasar Teori

•ESP32: Mikrokontroler dengan konektivitas Wi-Fi yang memiliki ADC 12-bit, sehingga pembacaan sensor analog menghasilkan nilai dari 0 sampai 4095.

•Sensor Gas MQ-2 dan Potensiometer: Sensor MQ-2 mendeteksi LPG, asap, dan gas mudah terbakar lainnya dengan keluaran analog yang naik seiring kepekatan gas. Pada simulasi, keluaran ini digantikan oleh potensiometer yang tegangannya diatur melalui slider.

•Sensor Suhu DS18B20: Sensor suhu digital yang menggunakan protokol komunikasi 1-Wire. Sensor ini sangat akurat untuk mengukur suhu lingkungan atau komponen secara langsung dalam satuan derajat Celsius.

•Modul Relay: Saklar elektronik yang memungkinkan sinyal digital ESP32 mengendalikan perangkat bertegangan atau berarus lebih besar, dalam proyek ini untuk mengendalikan Solenoid Valve.

•Solenoid Valve: Katup elektromagnetik yang membuka atau menutup aliran fluida, dalam proyek ini berfungsi membuka atau memutus aliran gas.

•Buzzer dan LED: Buzzer menghasilkan bunyi alarm, sedangkan LED merah menjadi indikator visual kondisi bahaya.

•Logika Pengaman Ganda (Dual-Sensor Logic): Sistem yang memicu aksi darurat jika salah satu dari beberapa parameter kritis (kadar gas atau suhu) melampaui ambang batas yang ditentukan.

•MQTT: Protokol komunikasi ringan berbasis publish/subscribe yang banyak dipakai pada IoT untuk mengirim data dari perangkat ke server.

•ThingsBoard Cloud: Platform IoT berbasis cloud yang berfungsi sebagai broker MQTT sekaligus pusat dashboard untuk visualisasi dan pemantauan data perangkat.

•Access Token dan Telemetri: Access Token adalah kunci autentikasi unik device di ThingsBoard yang dipakai sebagai username MQTT. Telemetri adalah data deret waktu yang dikirim ke topik v1/devices/me/telemetry, dalam proyek ini berupa kadar_gas dan status_sistem.

•Notifications ThingsBoard: Fitur untuk mengirim pemberitahuan otomatis yang terdiri dari Recipients (penerima), Templates (isi pesan), dan Rules (aturan pemicu). Pada proyek ini fitur tersebut dipakai untuk mengirim notifikasi (Inbox dan email) ketika alarm bahaya dapur terbentu

•Wokwi: Simulator daring untuk mikrokontroler seperti ESP32 yang memungkinkan rangkaian dan program diuji tanpa perangkat fisik.

2.2 Komponen

NoNama KomponenFungsi dalam Sistem
1.ESP32 (Wokwi)Mikrokontroler pemroses data, pengendali aktuator, dan pengirim data ke ThingsBoard melalui Wi-Fi
2.Potensiometer slider (pengganti sensor MQ-2)Menghasilkan nilai analog sebagai simulasi kepekatan gas (GPIO 34)
3.Sensor suhu DS18B20Membaca suhu aktual di area dapur secara digital (GPIO 4).
4.LED merahIndikator bahaya yang menyala saat kebocoran terdeteksi (GPIO 27)
5.BuzzerAlarm suara peringatan dini saat kebocoran terdeteksi (GPIO 26)
6.Modul RelaySaklar yang mengendalikan Solenoid Valve berdasarkan perintah ESP32 (GPIO 14)
7.LED Biru (pengganti Solenoid Valve)Katup jalur gas yang terbuka saat normal dan menutup saat bahaya
8.Device ThingsBoardRepresentasi perangkat pada ThingsBoard yang menerima data telemetri
9.Widget Chart, Gauge, dan AlarmMenampilkan grafik riwayat, nilai terbaru, dan peringatan kadar gas dan suhu
10.Access TokenKunci akses untuk menghubungkan Wokwi dengan ThingsBoard
11.Notifications ThingsBoard (Recipients, Templates, Rules)Mengirim notifikasi peringatan otomatis (Inbox, serta email bila SMTP telah dikonfigurasi) kepada pengelola dapur saat alarm bahaya terbentuk
12.Web monitor lokal (Flask)Menampilkan kadar gas, waktu data terakhir, dan status secara real-time pada browser
13.SMTP GmailMengirim email peringatan otomatis saat kadar gas melebihi batas

BAB III
PEMBAHASAN

3.1 Penjelasan Pengaturan ThingsBoard Cloud

3.1.1 Gambaran Bentuk Web ThingsBoard (Dashboard)

Tampilan dashboard pada ThingsBoard Cloud dapat didesain sesuai kebutuhan menggunakan widget yang tersedia. Untuk proyek sistem pemutus alur gas otomatis, bentuk yang paling sesuai adalah sebagai berikut:

Gambar 1. Tampilan Latest telemetry pada device smart kitchen a di ThingsBoard Cloud

•Widget Gauge / Latest Telemetry: menampilkan nilai kadar gas dan status sistem terbaru secara real-time (misalnya dari 0 sampai 4095).

•Widget Chart (Timeseries Line Chart): grafik garis yang memperlihatkan riwayat perubahan kadar gas dari waktu ke waktu, termasuk saat melewati ambang batas 2000.

•Alarm Widget: menampilkan peringatan ketika status sistem berubah menjadi Bocor / Bahaya.

•Seluruh widget dihubungkan ke satu sumber data yang sama, yaitu device ThingsBoard dengan key telemetri kadar_gas, suhu dan status_sistem.

3.1.2 Gambaran Bentukan Web Wokwi

Pada Wokwi, ESP32 membaca nilai analog dari potensiometer sebagai simulasi sensor gas MQ-2 dan suhu aktual dari sensor DS18B20. Jika kadar gas atau suhu melewati ambang batas, ESP32 menyalakan LED merah dan buzzer, mengaktifkan relay untuk menutup Solenoid Valve, lalu mengirimkan datanya ke ThingsBoard Cloud agar dapat dipantau secara real-time melalui dashboard IoT.

Gambar 2. Rangkaian dan kode program pada simulator Wokwi

•Menghubungkan ESP32 ke Wi-Fi virtual bawaan Wokwi (SSID Wokwi-GUEST).

•Menggunakan ThingsBoard Cloud (eu.thingsboard.cloud) sebagai broker MQTT dan penampil data sensor.

•Potensiometer pada GPIO 34 dipakai sebagai simulasi sensor gas MQ-2 untuk membaca kepekatan gas, dan Sensor Suhu DS18B20 pada GPIO 4 digunakan untuk membaca suhu aktual dapur secara digital.

•LED merah (GPIO 27) dan buzzer (GPIO 26) menjadi alarm peringatan, modul relay (GPIO 14) mengendalikan Solenoid Valve, serta LED biru merepresentasikan status fisik dari Solenoid Valve.

Cara kerja sistem secara berurutan adalah sebagai berikut:

1.Inisialisasi perangkat. ESP32 menyetel pin keluaran dan memastikan relay pada kondisi LOW sehingga katup gas terbuka, lalu terhubung ke Wi-Fi virtual dan melakukan autentikasi ke ThingsBoard menggunakan Access Token.

2.Pengambilan data. Setiap 5 detik, ESP32 membaca nilai analog dari sensor gas pada GPIO 34 (nilai 0 sampai 4095) dan membaca suhu aktual dari sensor DS18B20 pada GPIO 4.

3.Kondisi bahaya. Jika nilai pembacaan kadar gas sama dengan atau lebih dari 2000 ATAU suhu dapur mencapai 45 Derajat Celcius atau lebih, LED merah menyala, buzzer berbunyi, relay diaktifkan (HIGH) untuk menutup Solenoid Valve (LED biru menyala), dan status sistem menjadi "BAHAYA (Gas/Suhu Tinggi)".

4.Kondisi aman. Jika nilai pembacaan kedua sensor berada di bawah ambang batas tersebut, LED merah dan buzzer mati, relay LOW sehingga katup terbuka (LED biru mati), dan status sistem menjadi "Aman".

5.Pengiriman data (telemetri). Nilai kadar gas, suhu, dan status sistem dikirim ke topik MQTT v1/devices/me/telemetry dalam format JSON.

6.Visualisasi. Pada Latest Telemetry atau dashboard, perubahan kadar gas, suhu, dan status sistem terlihat secara langsung dari jarak jauh secara real-time.

Berikut kodingan sketch.ino yang digunakan di Wokwi:

#include <WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

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

const char* mqtt_server = "eu.thingsboard.cloud";
const char* mqtt_token = "MASUKKAN_ACCESS_TOKEN_ANDA";

WiFiClient espClient;
PubSubClient client(espClient);

const int gasPin = 34; // Pin Sensor Gas (Potensiometer)
#define ONE_WIRE_BUS 4 // Pin Data DS18B20 terhubung ke GPIO 4

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const int ledMerah = 27; // LED Indikator Bahaya
const int buzzerPin = 26; // Alarm Buzzer
const int relayValve = 14; // Kontrol Modul Relay & Solenoid Valve (LED Biru)

void setup_wifi() {
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}

void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32Client", mqtt_token, "")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
delay(5000);
}
}
}

void setup() {
Serial.begin(115200);
pinMode(ledMerah, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(relayValve, OUTPUT);

digitalWrite(relayValve, LOW); // Kondisi awal: katup terbuka
sensors.begin(); // Memulai sensor DS18B20

setup_wifi();
client.setServer(mqtt_server, 1883);
}

unsigned long lastMsg = 0;
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();

unsigned long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;

int gasValue = analogRead(gasPin);
sensors.requestTemperatures();
float suhuValue = sensors.getTempCByIndex(0); // Membaca suhu Celsius

String statusSistem = "Aman";

// Logika Pengaman Ganda
if (gasValue >= 2000 || suhuValue >= 45.0) {
digitalWrite(ledMerah, HIGH);
digitalWrite(buzzerPin, HIGH);
digitalWrite(relayValve, HIGH); // Katup menutup
statusSistem = "BAHAYA (Gas/Suhu Tinggi)";
}
else {
digitalWrite(ledMerah, LOW);
digitalWrite(buzzerPin, LOW);
digitalWrite(relayValve, LOW); // Katup terbuka
statusSistem = "Aman";
}

Serial.println("Gas: " + String(gasValue) + " | Suhu: " + String(suhuValue) + "°C | Status: " + statusSistem);

// Kirim data telemetri multi-sensor ke ThingsBoard
String payload = "{\"kadar_gas\": " + String(gasValue) + ", \"suhu\": " + String(suhuValue) + ", \"status_sistem\": \"" + statusSistem + "\"}";
client.publish("v1/devices/me/telemetry", payload.c_str());
}
}

Fungsi setup_wifi() menghubungkan ESP32 ke jaringan Wi-Fi virtual dan menunggu sampai status terhubung. Fungsi reconnect() menjaga koneksi MQTT ke ThingsBoard tetap aktif dengan mencoba tersambung kembali jika terputus. Pada fungsi setup(), pin LED, buzzer, dan relay diatur sebagai keluaran dan relay diberi nilai LOW sebagai kondisi awal. Pada fungsi loop(), nilai analogRead(sensorPin) dibandingkan dengan ambang batas 2000 setiap 5 detik untuk menentukan kondisi aman atau bahaya, mengatur keluaran LED, buzzer, dan relay, kemudian dipublikasikan sebagai telemetri berisi kadar_gas, suhu dan status_sistem.

3.1.3 Step-by-Step Pengaturan di ThingsBoard Cloud

Langkah 1: Membuat Akun dan Device Baru

1.Buka situs eu.thingsboard.cloud, lalu daftar atau login ke akun yang sama dengan laporan sebelumnya.

2.Masuk ke menu Entities lalu pilih Devices (pada versi ThingsBoard terbaru, menu ini dapat bernama Devices pada sidebar kiri).

3.Klik tombol + (Add device) di pojok kanan atas, lalu pilih Add new device.

4.Isi Name dengan nama device, misalnya Pemutus Gas, biarkan Device profile pada nilai default, lalu klik Add. Device dari laporan sebelumnya juga dapat dipakai kembali jika diinginkan.

Langkah 2: Mengambil Kunci Akses (Access Token)

1.Access Token berfungsi sebagai identitas device saat ESP32 melakukan koneksi MQTT ke ThingsBoard.

2.Klik device yang baru dibuat pada daftar Devices untuk membuka halaman detailnya.

3.Klik tombol Copy access token pada bagian detail device.

4.Tempel token tersebut ke variabel mqtt_token pada kodingan di Wokwi, menggantikan tulisan MASUKKAN_ACCESS_TOKEN_ANDA.

Langkah 3: Mendesain Dashboard

1.Buka menu Dashboards, lalu klik + dan pilih Create new dashboard, beri judul misalnya Sistem Pemutus Alur Gas.

2.Buka dashboard tersebut, klik ikon pensil (Edit mode), lalu klik Add widget.

3.Pilih widget Timeseries Line Chart (kelompok Charts), lalu atur sumber data ke device Pemutus Gas dengan key kadar_gas.

4.Tambahkan widget Gauge (kelompok Gauges) dengan key kadar_gas dan atur batas maksimum 4095, serta widget Latest Telemetry untuk menampilkan key status_sistem.

5.Untuk peringatan, buat Alarm rule pada Device profile (tab Alarm rules) dengan alarm type Bahaya Dapur dan kondisi kadar_gas lebih besar atau sama dengan 2000, lalu tampilkan melalui Alarm Widget.

6.Klik tombol Save di pojok kanan bawah untuk menyimpan seluruh desain dashboard.

Langkah 4: Menjalankan Simulasi dan Memeriksa Telemetri

1.Jalankan simulasi pada Wokwi dengan menekan tombol Start (ikon segitiga hijau).

2.Pastikan Serial Monitor menampilkan pesan WiFi connected dan koneksi MQTT berhasil.

3.Geser slider potensiometer ke nilai di bawah 2000, lalu pastikan LED merah dan buzzer mati, relay LOW, serta Serial Monitor menampilkan pesan bahwa kondisi dapur aman dan katup terbuka.

4.Geser slider ke nilai 2000 atau lebih, lalu pastikan LED merah menyala, buzzer berbunyi, relay aktif, serta Serial Monitor menampilkan pesan bahwa kebocoran terdeteksi dan katup ditutup.

5.Buka tab Latest telemetry pada device atau dashboard di ThingsBoard, kemudian pastikan nilai kadar_gas dan status_sistem ikut berubah.

Langkah 5: Menyinkronkan Alarm ThingsBoard ke Notifikasi (Inbox dan Email)

1.Buka halaman akun ThingsBoard Cloud, lalu pastikan Alarm rule pada Device profile (Langkah 3 poin 5) sudah aktif dengan alarm type Bahaya Dapur, karena notifikasi hanya dikirim ketika sebuah alarm terbentuk. Agar suhu juga memicu alarm, tambahkan kondisi suhu lebih besar atau sama dengan 45 pada Alarm rule yang sama dan hubungkan dengan kondisi kadar_gas menggunakan operasi OR, sehingga alarm terbentuk jika salah satu kondisi terpenuhi.

2.Buka menu Monitor, pilih Notifications pada sidebar kiri, lalu pilih tab Recipients. Klik + Add recipients, isi nama grup (pada praktikum ini pengelola dapur), pilih tipe Platform users, tentukan pengguna yang menjadi penerima, lalu klik Add. Email dikirim ke alamat email akun pengguna yang terdaftar pada ThingsBoard, sehingga pastikan email akun yang dituju sudah benar. Grup yang berhasil dibuat tampil pada daftar Recipients seperti pada Gambar 3.

Gambar 3. Daftar Recipients dengan grup penerima pengelola dapur

3.Pindah ke tab Templates, lalu klik + Add template. Pada tahap Setup (Gambar 4), isi Name (misalnya Warning dapur), biarkan Type bernilai Alarm, aktifkan metode pengiriman Email pada Delivery methods (metode Web dapat dibiarkan aktif), lalu klik Next.

Gambar 4. Tahap Setup pada pembuatan template notifikasi

4.Pada tahap Compose, isi Subject dengan variabel dinamis, misalnya PERINGATAN: ${alarmType} pada perangkat ${alarmOriginatorName}. Isi Message, misalnya: Terdeteksi kondisi bahaya dengan tingkat ${alarmSeverity} dan status ${alarmStatus}. Kadar gas melebihi batas 2000 atau suhu melebihi 45 derajat Celsius, sehingga katup gas ditutup otomatis. Klik Add untuk menyimpan templat. Templat yang tersimpan tampil pada daftar Templates seperti pada Gambar 5.

Gambar 5. Daftar Template Warning dapur bertipe Alarm

5.Pindah ke tab Rules, klik + Add rule, lalu pada Basic settings isi Name (misalnya Email Warning), pilih Trigger Alarm, pilih Template yang dibuat pada langkah sebelumnya, dan pilih grup penerima pada Recipients. Aturan yang dibuat tampil pada daftar Rules seperti pada Gambar 6.

Gambar 6. Daftar Rules pada Notifications

6.Pada tahap Alarm trigger settings (Gambar 7), isi Alarm type list dengan Bahaya Dapur agar sesuai dengan alarm type pada Alarm rule, pilih Alarm severity list Critical, Major, dan Warning, lalu pilih Notify on Alarm created dan Alarm cleared agar notifikasi terkirim saat alarm pertama kali muncul dan saat alarm kembali normal. Klik Add untuk menyimpan aturan.

Gambar 7. Pengaturan Alarm trigger settings pada rule

7.Jalankan kembali simulasi Wokwi dan geser slider potensiometer ke nilai 2000 atau lebih. Setelah Serial Monitor menampilkan Status: BAHAYA (Gas/Suhu Tinggi), alarm Bahaya Dapur muncul pada Alarm list (Gambar 8) dan notifikasi alarm masuk ke Inbox pada Notifications (Gambar 9). Riwayat pengiriman juga dapat dilihat pada tab Sent. Jika metode Email aktif dan mail server sudah dikonfigurasi, periksa pula kotak masuk (atau folder Spam) pada email akun ThingsBoard.

Gambar 8. Alarm Bahaya Dapur (Critical) pada Alarm list saat kadar gas melewati ambang batas

Gambar 9. Notifikasi alarm yang diterima pada Inbox di menu Notifications Catatan: pada praktikum ini notifikasi alarm terbukti diterima pada Inbox ThingsBoard (metode Web). Pengiriman melalui email memerlukan mail server yang aktif. Jika email tidak masuk, atur SMTP pada menu Settings → Mail server (hapus centang Use System Mail Server Settings, lalu isi server SMTP, misalnya Gmail dengan App password) dan uji dengan Send test mail. Pada ThingsBoard On-Premises (server mandiri), server SMTP (Mail Server settings) juga harus dikonfigurasi terlebih dahulu. Pada praktikum ini, notifikasi bawaan ThingsBoard terbukti diterima pada Inbox, sedangkan email peringatan dikirim oleh web monitor lokal melalui SMTP Gmail seperti dijelaskan pada Langkah 6.

Langkah 6: Membuat Web Monitor Lokal dan Email Peringatan (Tahap Tambahan)

Pada tahap tambahan ini dibuat web monitor lokal berbasis Flask yang menampilkan kadar gas secara real-time dan mengirim email peringatan otomatis melalui Gmail. Alurnya: sensor pada Wokwi (ESP32) mengirim data ke ThingsBoard Cloud melalui MQTT, aplikasi web lokal mengambil data terbaru dari ThingsBoard, lalu menampilkannya pada halaman web dan mengirim email apabila kadar gas melewati batas.

1.Siapkan folder proyek web yang berisi app.py (program Flask), templates/index.html (tampilan halaman), requirements.txt (daftar pustaka Python), dan .env (pengaturan rahasia).

2.Isi berkas .env dengan pengaturan yang dibutuhkan aplikasi, yaitu akses ke ThingsBoard serta akun Gmail pengirim (menggunakan App password). Berkas ini bersifat rahasia sehingga tidak boleh dibagikan atau diunggah.

3.Pasang pustaka yang dibutuhkan dengan perintah pip install -r requirements.txt, lalu jalankan aplikasi dengan perintah python app.py. Server Flask berjalan pada alamat http://127.0.0.1:5000.

4.Buka alamat tersebut pada browser. Halaman Monitor kadar gas menampilkan kadar gas saat ini, waktu data terakhir, status sistem (Aman atau Bahaya) dengan batas bahaya 2000, serta keterangan pengiriman email. Halaman memperbarui data setiap 3 detik melalui endpoint /api/data (Gambar 10).

Gambar 10. Simulasi Wokwi (kiri) dan web monitor lokal Flask pada VS Code (kanan) dengan status Aman

5.Jalankan simulasi Wokwi. Nilai kadar gas pada halaman web sama dengan nilai pada Serial Monitor Wokwi (pada Gambar 10, kadar gas 709 dengan status Aman).

6.Geser slider potensiometer ke nilai di atas 2000. Status pada halaman berubah dari Aman menjadi kondisi bahaya dan aplikasi mengirim email peringatan ke Gmail. Email berjudul PERINGATAN: Kadar gas berbahaya berisi nilai kadar gas yang terdeteksi, batas 2000, waktu kejadian, dan perintah memeriksa lokasi sensor (Gambar 11).

Gambar 11. Email peringatan kadar gas yang diterima pada Gmail Dengan demikian, email peringatan pada praktikum ini dikirim oleh web monitor lokal, sedangkan notifikasi bawaan ThingsBoard Notifications terbukti diterima pada Inbox (Langkah 5).

Dengan mengikuti langkah di atas, dashboard ThingsBoard telah siap menerima data dan mengirim notifikasi. Begitu simulasi di Wokwi dijalankan dengan kodingan yang berisi Access Token tersebut, angka, grafik, dan status sistem pada dashboard akan bergerak secara otomatis, dan notifikasi peringatan diterima pada Inbox ThingsBoard ketika alarm terbentuk. Email peringatan dikirim melalui web monitor lokal pada Langkah 6.

3.2 Konfigurasi dan Kredensial Program

Pengaturan yang dibuat pada ThingsBoard Cloud dan program Wokwi dirangkum pada tabel berikut.

ParameterNilai
PlatformThingsBoard Cloud (eu.thingsboard.cloud)
ProtokolMQTT (port 1883)
AutentikasiAccess Token device sebagai username MQTT
Topik telemetriv1/devices/me/telemetry
Format dataJSON: kadar_gas, suhu, dan status_sistem
Interval pengirimanSetiap 5 detik
Pin sensor gas (potensiometer)GPIO 34 (ADC 12-bit, nilai 0 sampai 4095)
Pin sensor suhuGPIO 4 (Sensor Digital DS18B20)
Pin keluaranLED merah GPIO 27, buzzer GPIO 26, relay GPIO 14
Ambang batas bahayaGas: nilai ADC 2000 atau lebih; atau suhu 45 °C atau lebih
Widget dashboardChart, Gauge/Latest Telemetry, dan Alarm (key kadar_gas, suhu, dan status_sistem)
NotifikasiRecipients: pengelola dapur (Platform users); Template: Warning dapur (tipe Alarm); Rule: pemicu Alarm
Filter alarmAlarm type Bahaya Dapur; severity Critical, Major, dan Warning
Notify onAlarm created dan Alarm cleared

Sistem menentukan kondisi dan tindakan otomatis sesuai ambang batas pada kodingan, seperti pada tabel berikut.

KondisiKondisi SensorTindakan SistemContoh Payload Telemetri
AmanGas < 2000 dan suhu < 45 °CLED merah mati, buzzer mati, relay LOW (katup terbuka, LED biru mati){"kadar_gas": 850, "suhu": 28.5, "status_sistem": "Aman"}
BahayaGas ≥ 2000 atau suhu ≥ 45 °CLED merah menyala, buzzer berbunyi, relay HIGH (katup tertutup, LED biru menyala){"kadar_gas": 3100, "suhu": 46.2, "status_sistem": "BAHAYA (Gas/Suhu Tinggi)"}

Access Token dari Langkah 2 dimasukkan pada bagian awal kodingan di Wokwi, bersama definisi pin, seperti contoh berikut (nilai disesuaikan dengan device masing-masing kelompok).

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

const char* mqtt_server = "eu.thingsboard.cloud"; // Sesuaikan server ThingsBoard Anda
const char* mqtt_token = "MASUKKAN_ACCESS_TOKEN_ANDA";

const int sensorPin = 34; // Pin Potensiometer (Simulasi Sensor Gas)
const int ledMerah = 27; // LED Indikator Bahaya
const int buzzerPin = 26; // Alarm Buzzer
const int relayValve = 14; // Kontrol Solenoid Valve via Relay

BAB IV
PENUTUP

4.1 Kesimpulan

1.Sistem pengaman dapur pintar berhasil dikembangkan dan disimulasikan pada Wokwi menggunakan ESP32, potensiometer sebagai simulasi sensor gas MQ-2, serta sensor suhu digital DS18B20.

2.Saat kadar gas mencapai atau melebihi ambang batas 2000 atau suhu dapur mencapai 45 °C atau lebih, sistem otomatis menyalakan LED merah, membunyikan buzzer, dan mengaktifkan modul relay untuk menutup Solenoid Valve (direpresentasikan oleh LED biru).

3.Data telemetri ganda berupa kadar gas, suhu, dan status sistem (Aman atau BAHAYA) dikirim ke ThingsBoard melalui protokol MQTT pada topik v1/devices/me/telemetry dalam format JSON setiap 5 detik, sehingga kondisi dapur dapat dipantau secara real-time dari jarak jauh.

4.Pengaturan ThingsBoard Cloud dilakukan melalui lima tahapan utama, yakni pembuatan device, pengambilan Access Token, perancangan dashboard multi-sensor, pelaksanaan simulasi untuk memverifikasi data telemetri, dan penyinkronan alarm ke notifikasi melalui fitur Notifications (Recipients, Templates, dan Rules) dengan alarm type Bahaya Dapur.

5.Web monitor lokal berbasis Flask berhasil menampilkan kadar gas secara real-time pada alamat 127.0.0.1:5000 dan mengirim email peringatan ke Gmail ketika kadar gas melebihi ambang batas 2000, sehingga peringatan dapat diterima di luar platform ThingsBoard.

4.2 Saran

1.Pada program saat ini, katup otomatis terbuka kembali begitu kadar gas dan suhu turun di bawah batas aman. Pengembangan selanjutnya dapat menambahkan mekanisme penguncian (latching) agar katup tetap tertutup sampai dibuka secara manual melalui tombol fisik atau kontrol dari dashboard.

2.Sistem ini dapat diimplementasikan langsung menggunakan perangkat keras fisik seperti ESP32, sensor MQ-2, sensor DS18B20, modul relay, dan Solenoid Valve asli, dengan kalibrasi ambang batas yang sesuai untuk menguji keandalan di lingkungan nyata dengan tetap memperhatikan aspek keselamatan kelistrikan. Perancangan fisik juga perlu menerapkan prinsip fail-safe, misalnya memakai Solenoid Valve normally closed yang menutup otomatis saat daya atau koneksi terputus, serta menangani kegagalan pembacaan sensor suhu (DS18B20 yang terlepas dapat menghasilkan nilai −127 °C).

3.Fitur sistem dapat ditingkatkan dengan menambahkan kanal notifikasi lain seperti Telegram atau SMS pada Notifications ThingsBoard, serta penambahan kontrol katup jarak jauh interaktif melalui dashboard.

DAFTAR PUSTAKA

ThingsBoard. ThingsBoard Documentation. https://thingsboard.io/docs

Wokwi. Wokwi Documentation. https://docs.wokwi.com

MQTT.org. MQTT: The Standard for IoT Messaging. https://mqtt.org

Espressif Systems. ESP32 Technical Reference Manual. https://www.espressif.com/en/support/documents/technical-documents

Analog Devices (Maxim Integrated). DS18B20 Programmable Resolution 1-Wire Digital Thermometer (Datasheet). https://www.analog.com/en/products/ds18b20.html

Burton, M. DallasTemperature Arduino Library. https://github.com/milesburton/Arduino-Temperature-Control-Library

O'Leary, N. PubSubClient: Arduino Client for MQTT. https://pubsubclient.knolleary.ne

LAMPIRAN

Link Video Penjelasan: https://drive.google.com/file/d/1D1VUCJf5ap4WUB2Sy-4Uw9cklZKG45Ap/view?usp=sharing

Tidak ada komentar:

Posting Komentar