Mertani adalah platform IoT berbasis cloud yang menghubungkan perangkat di lapangan — sensor dan data logger — dengan sistem backend dan aplikasi eksternal melalui REST API. Data dari perangkat dikumpulkan, diproses, disimpan, dan dapat diakses secara terpusat. Semua interaksi dengan data dilakukan melalui API; tidak ada akses langsung ke perangkat.

Arsitektur Sistem

Mertani bekerja sebagai penghubung antara tiga lapisan utama:
LapisanKomponenFungsi
EdgeSensor & data loggerMengumpulkan data di lapangan
BackendServer & database MertaniMenerima, memvalidasi, memproses, dan menyimpan data
ClientAplikasi web/mobile/eksternalMengakses data melalui API
Ketiga lapisan ini bersifat decoupled — perangkat, backend, dan client tidak saling terikat langsung, sehingga gangguan pada satu lapisan tidak mempengaruhi lapisan lain.

Alur Data End-to-End

Diagram alur data Mertani dari perangkat ke aplikasi eksternal
1

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.
2

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.
3

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.
4

Data Processing & Storage

Data yang valid diproses dan disimpan ke database time-series, diindeks berdasarkan device_id, timestamp, dan parameter sensor untuk efisiensi query.
5

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.
6

Data Consumption — External System

Aplikasi client mengambil data melalui API dan menampilkannya dalam bentuk dashboard, grafik, atau analitik. Client tidak pernah berkomunikasi langsung dengan perangkat.

Karakteristik Sistem

KarakteristikPenjelasan
API-CentricSemua akses data dilakukan melalui API — tidak ada jalur langsung ke perangkat
Decoupled ArchitecturePerangkat, backend, dan client beroperasi secara independen
Time-Series StorageData diindeks berdasarkan waktu, mendukung query historis secara efisien
Interval-Based DataData tersedia sesuai interval pengiriman device (umumnya 1 jam); bukan streaming per detik
ScalableInfrastruktur 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

PraktikAlasan
Sesuaikan interval polling dengan interval devicePolling lebih sering dari interval device tidak menghasilkan data baru
Gunakan filter timestamp pada setiap requestMenghindari pengambilan data yang sudah pernah diterima
Terapkan caching di sisi clientMengurangi beban request dan meningkatkan performa aplikasi
Hindari request berulang dalam waktu singkatDapat memicu throttling dari sistem