Implementasi Sistem Monitoring Berbasis MQTT & Docker
Proyek ini adalah sistem IoT (Internet of Things) lengkap yang dirancang untuk memantau lingkungan vermikompos (budidaya cacing tanah) secara real-time. Sistem ini menggunakan mikrokontroler ESP32 untuk mengumpulkan data dari berbagai sensor. Data tersebut kemudian dikirim melalui protokol MQTT ke sebuah broker, diolah oleh layanan backend, disimpan dalam database, dan ditampilkan pada dashboard web interaktif.
Arsitektur proyek ini terdiri dari empat lapisan utama yang bekerja secara sinergis untuk menyediakan fungsionalitas penuh dari pengumpulan data hingga visualisasi.
Merupakan ujung tombak sistem. Perangkat ESP32 membaca data dari sensor suhu, kelembaban, dan lainnya, lalu mempublikasikannya ke MQTT broker.
Menggunakan broker Mosquitto sebagai pusat pertukaran pesan yang menjamin komunikasi cepat dan efisien antara perangkat dan backend.
Layanan "MQTT Bridge" berfungsi sebagai otak sistem, memproses pesan, menyimpannya ke database, dan menyediakan API serta koneksi WebSocket.
Antarmuka pengguna yang menampilkan data real-time dalam bentuk grafik dan tabel, serta menyediakan kontrol untuk mengirim perintah.
Untuk pemahaman yang lebih mendalam, pemeliharaan, dan pengembangan lebih lanjut, silakan merujuk ke panduan-panduan detail berikut:
Pelajari logika "JIKA-MAKA" yang membuat sistem ini cerdas dan cara kerja perhitungan sensornya.
Langkah-demi-langkah untuk memasang dan menjalankan proyek ini di server produksi (VPS).
Solusi untuk masalah-masalah umum yang mungkin terjadi pada setiap komponen sistem.
Penjelasan mendalam mengenai skema database, tabel, dan bagaimana data disimpan.
Cara mengubah konfigurasi, menambahkan sensor baru, dan mengadaptasi proyek sesuai kebutuhan.
Fungsi ini mempersiapkan data sensor dalam format JSON dan mempublikasikannya ke topik MQTT.
bool sendDataViaMQTT(const SensorData& data) {
if (!mqttManager.isConnected()) { return false; }
DynamicJsonDocument doc(512);
doc["temperature"] = data.temperature;
doc["humidity"] = data.humidity;
doc["data_valid"] = data.isValid;
return mqttManager.publishSensorData(doc);
}
Berikut adalah contoh data yang dikumpulkan selama periode uji coba 1 jam, menunjukkan respons sistem terhadap perubahan lingkungan.
| Waktu | Suhu Udara (°C) | Kelembaban (%) | Kelembaban Tanah (%) | Status & Aksi |
|---|---|---|---|---|
| 10:00:05 | 28.5 | 75.2 | 68.5 | Normal |
| 10:20:15 | 30.2 | 69.5 | 61.8 | Suhu Tinggi |
| Aktivasi Pompa (Mode Pendinginan) | Aksi Sistem | |||
| 10:50:35 | 28.8 | 75.0 | 59.5 | Tanah Kering |
| Aktivasi Pompa (Mode Penyiraman) | Aksi Sistem | |||
| 11:00:45 | 28.6 | 76.2 | 72.5 | Normal |
Berikut adalah beberapa file paling penting dalam struktur proyek ini.
docker-compose.yml
docs/MQTT_TOPICS_GUIDE.md
esp32/src/main_mqtt_example.cpp
api/mqtt-bridge.js
dashboard/public/dashboard.js
database/mqtt_schema.sql