Arsitektur Sistem
Mertani bekerja sebagai penghubung antara tiga lapisan utama:| Lapisan | Komponen | Fungsi |
|---|---|---|
| Edge | Sensor & data logger | Mengumpulkan data di lapangan |
| Backend | Server & database Mertani | Menerima, memvalidasi, memproses, dan menyimpan data |
| Client | Aplikasi web/mobile/eksternal | Mengakses data melalui API |
Alur Data End-to-End
Data Collection — Perangkat IoT
Sensor dan data logger mengumpulkan parameter lingkungan (suhu, kelembaban, curah hujan, dll.) secara periodik sesuai interval yang dikonfigurasi — umumnya setiap 1 jam.
Data Transmission
Perangkat mengirim data ke server Mertani melalui jaringan (GSM, LoRa, atau internet) dalam format terstruktur (JSON) beserta metadata seperti
device_id dan timestamp.Data Ingestion & Validation
Backend menerima data dan menjalankan serangkaian validasi: verifikasi identitas device, validasi struktur data, dan normalisasi format. Data yang tidak valid akan ditolak pada tahap ini.
Data Processing & Storage
Data yang valid diproses dan disimpan ke database time-series, diindeks berdasarkan
device_id, timestamp, dan parameter sensor untuk efisiensi query.Data Exposure via API
Data tersedia melalui REST API Mertani — satu-satunya jalur resmi untuk konsumsi data oleh sistem eksternal. Tersedia endpoint untuk data terbaru maupun data historis.
Karakteristik Sistem
| Karakteristik | Penjelasan |
|---|---|
| API-Centric | Semua akses data dilakukan melalui API — tidak ada jalur langsung ke perangkat |
| Decoupled Architecture | Perangkat, backend, dan client beroperasi secara independen |
| Time-Series Storage | Data diindeks berdasarkan waktu, mendukung query historis secara efisien |
| Interval-Based Data | Data tersedia sesuai interval pengiriman device (umumnya 1 jam); bukan streaming per detik |
| Scalable | Infrastruktur dapat menangani banyak device secara bersamaan |
Karena API selalu membaca dari database — bukan langsung dari device — data historis tetap dapat diakses meskipun perangkat sedang offline atau terlambat mengirim data.
Best Practice Integrasi
| Praktik | Alasan |
|---|---|
| Sesuaikan interval polling dengan interval device | Polling lebih sering dari interval device tidak menghasilkan data baru |
Gunakan filter timestamp pada setiap request | Menghindari pengambilan data yang sudah pernah diterima |
| Terapkan caching di sisi client | Mengurangi beban request dan meningkatkan performa aplikasi |
| Hindari request berulang dalam waktu singkat | Dapat memicu throttling dari sistem |