Dapatkan dukungan yang Anda butuhkan untuk sukses dengan Mertani. Jelajahi pusat bantuan kami, kontak kami, atau telusuri dokumentasi kami untuk menemukan jawaban dengan cepat.

Open API

API Mertani memungkinkan integrasi data IoT dari perangkat di lapangan

Support Mertani

Ajukan pertanyaan langsung kepada support Mertani

Frequently Asked Questions

Find answers to common questions about Mertani dashboard app.

1. API — Spesifikasi Teknis

Autentikasi & Keamanan

Mertani API menggunakan Basic Authentication sebagai metode autentikasi utama.Setiap request harus menyertakan header:
Authorization: Basic base64(api_key:secret_key)
  • api_key berfungsi sebagai username
  • secret_key berfungsi sebagai password
  • Authentication bersifat stateless (tidak menggunakan session atau token)
Untuk keamanan:
  • Gunakan HTTPS di semua request
  • Jangan expose API key di frontend
  • Simpan credential di environment variables
Kemungkinan penyebab:
  • API key tersimpan di frontend
  • Repository tidak diamankan
Solusi:
  • Segera rotasi API key
  • Pindahkan kredensial ke server-side
  • Gunakan secret manager jika tersedia
Kemungkinan penyebab:
  • Header Authorization tidak ada
  • Format Basic Authentication salah
  • Base64 encoding tidak valid
Solusi:
  • Pastikan header dikirim dengan benar
  • Periksa format: api_key:secret_key sebelum encoding
  • Generate ulang Base64
Kemungkinan penyebab:
  • API key tidak memiliki akses ke resource
  • API key telah dicabut
Solusi:
  • Periksa permission API key
  • Hubungi pihak Mertani jika diperlukan

Endpoint & Format Data

Mertani menyediakan beberapa kategori endpoint utama:1. Device API
  • Mendapatkan daftar device
  • Informasi detail device
2. Sensor Data API
  • Data sensor terbaru
  • Data historis berdasarkan timestamp
Semua endpoint berada di bawah base URL:
https://app.mertani.co.id/external/v1
Struktur endpoint mengikuti prinsip REST:
  • GET /devices
  • GET /devices/{id}
(Detail endpoint dapat berbeda tergantung konfigurasi instansi)
Request:
  • Header: JSON / HTTP standard
  • Authentication: Basic Auth
Response:
  • Format utama: JSON
  • Encoding: UTF-8
  • Timestamp: ISO 8601 / Unix timestamp (tergantung endpoint)
Contoh response:
{
  "device_id": "123",
  "timestamp": "2025-01-01T10:00:00Z",
  "temperature": 27.5
}
Secara default, API Mertani tidak bersifat real-time per detik — data mengikuti interval pengiriman dari device.
  • Interval umum: 1 jam sekali
  • API hanya menyajikan data yang sudah tersimpan di database
Untuk kebutuhan real-time:
  • Gunakan Webhook API (push-based)
  • Atau lakukan polling dengan interval yang disesuaikan
Tidak. Arsitektur Mertani bersifat decoupled:
  • Client tidak pernah berkomunikasi langsung dengan device
  • Semua akses harus melalui API
  • Data diambil dari database, bukan dari perangkat secara live
Ini memastikan keamanan sistem, konsistensi data, dan skalabilitas.
Data yang masuk ke Mertani melalui beberapa tahap:
  1. Validasi device
  2. Validasi format data
  3. Normalisasi
  4. Penyimpanan ke database
Sistem menggunakan timestamp dari device sebagai referensi utama.Catatan:
  • Delay dapat terjadi jika jaringan tidak stabil
  • Data duplikat bisa terjadi jika device melakukan retry
Disarankan untuk melakukan validasi tambahan di sisi client.

Rate Limit & Best Practice

Rate limit tidak selalu diekspos secara eksplisit, namun sistem menerapkan mekanisme proteksi untuk menjaga stabilitas.Secara umum:
  • Request berulang dalam waktu singkat dapat dibatasi
  • Polling berlebihan dapat menyebabkan throttling
  • Beban tinggi dari satu API key dapat memicu pembatasan sementara
Best practice:
  • Gunakan interval request sesuai interval device (misalnya 1 jam)
  • Hindari polling setiap detik
  • Gunakan caching di sisi client
Untuk kebutuhan high-frequency access, gunakan Webhook API.
SituasiRekomendasi
Butuh data historisREST API
Membangun dashboardREST API
Kontrol penuh terhadap requestREST API
Butuh data real-timeWebhook
Sistem event-drivenWebhook
Ingin menghindari pollingWebhook
Dalam banyak kasus, kombinasi keduanya adalah pendekatan terbaik.
API akan mengembalikan HTTP status code standar:
KodeArti
200Success
400Bad request
401Unauthorized
403Forbidden
500Server error
Best practice:
  • Implementasikan retry mechanism
  • Logging error response
  • Validasi request sebelum dikirim

2. API — Troubleshooting

Data Tidak Muncul atau Terlambat

Kemungkinan penyebab:
  • Perangkat belum mengirim data
  • Interval pengiriman belum tercapai
Solusi:
  • Periksa status device
  • Tunggu hingga siklus pengiriman berikutnya
Kemungkinan penyebab:
  • Jaringan perangkat tidak stabil
  • Delay pada proses ingestion
Solusi:
  • Periksa konektivitas device
  • Validasi timestamp data
Kemungkinan penyebab:
  • Polling terlalu cepat sebelum data tersedia
  • Parameter waktu tidak sesuai
  • Cache pada client
Solusi:
  • Sesuaikan interval polling dengan device
  • Gunakan filter timestamp terbaru
  • Disable cache jika diperlukan
Kemungkinan penyebab:
  • API key tidak memiliki akses ke data tertentu
  • Parameter request tidak sesuai
Solusi:
  • Validasi endpoint dan parameter
  • Periksa scope akses API key
Kemungkinan penyebab:
  • Sensor error atau tidak terkalibrasi
  • Data duplikat atau missing
Solusi:
  • Lakukan kalibrasi sensor
  • Validasi data di level aplikasi

Masalah Webhook

Kemungkinan penyebab:
  • Endpoint tidak dapat diakses (down / timeout)
  • URL webhook salah
Solusi:
  • Periksa endpoint server Anda
  • Validasi URL dan pastikan response status mengembalikan 200 OK
Kemungkinan penyebab:
  • Retry dari server karena response gagal
  • Tidak ada deduplication di client
Solusi:
  • Implementasikan idempotency di sisi client
  • Simpan unique identifier data
Kemungkinan penyebab:
  • Volume data tinggi
  • Endpoint tidak scalable
Solusi:
  • Gunakan queue system (Kafka, RabbitMQ, dll.)
  • Tambahkan rate limiting atau buffering

3. App Dashboard — Manajemen Pengguna

Undangan & Login

Kemungkinan penyebab:
  • Email salah atau tidak aktif
  • Email masuk ke folder spam
Solusi:
  • Periksa kembali alamat email
  • Minta pengguna cek folder spam atau promotion
  • Kirim ulang undangan jika tersedia
Kemungkinan penyebab:
  • Proses aktivasi belum selesai
  • Password belum diterima melalui email
Solusi:
  • Pastikan pengguna telah membuka link undangan
  • Minta pengguna terima undangan
Kemungkinan penyebab:
  • Invite belum diproses sepenuhnya
  • Halaman belum diperbarui
Solusi:
  • Refresh halaman
  • Periksa kembali status undangan

Edit & Akses Pengguna

Kemungkinan penyebab:
  • Tidak memiliki permission yang cukup
  • Akun dibatasi oleh sistem
Solusi:
  • Gunakan akun dengan akses lebih tinggi
  • Periksa kebijakan sistem terkait akses edit
Kemungkinan penyebab:
  • Format nomor tidak sesuai
  • Mengandung karakter yang tidak diperbolehkan
Solusi:
  • Gunakan format nomor yang benar (angka saja, sesuai standar sistem)
  • Hindari spasi atau simbol tambahan
Kemungkinan penyebab:
  • Form belum diisi dengan benar / validasi sistem gagal
  • Cache browser belum diperbarui
Solusi:
  • Pastikan semua field wajib sudah diisi dan format data benar
  • Refresh halaman atau logout dan login kembali
Kemungkinan penyebab:
  • Tidak ada device yang dipilih saat konfigurasi
Solusi:
  • Edit kembali akses device
  • Pastikan minimal satu device dipilih
Kemungkinan penyebab:
  • Device belum terdaftar dalam sistem
  • Device berada di instansi berbeda
Solusi:
  • Pastikan device sudah dibuat dan aktif
  • Periksa kembali scope instansi
Kemungkinan penyebab:
  • Pembatasan belum tersimpan dengan benar
  • Ada konflik dengan konfigurasi lain
Solusi:
  • Ulangi proses dan pastikan klik simpan
  • Validasi kembali konfigurasi akses user

4. App Dashboard — Manajemen Role

Membuat & Mengedit Role

Kemungkinan penyebab:
  • Nama role duplikat
  • Input tidak valid atau koneksi bermasalah
Solusi:
  • Pastikan nama role tidak duplikat
  • Periksa koneksi dan validasi input
Kemungkinan penyebab:
  • Role merupakan role default atau dilindungi sistem
  • Tidak memiliki permission yang cukup
Solusi:
  • Gunakan akun dengan akses lebih tinggi
  • Periksa apakah role termasuk protected role
Kemungkinan penyebab:
  • Nama role sudah digunakan (duplikat)
  • Input kosong atau mengandung karakter yang tidak diperbolehkan
Solusi:
  • Gunakan nama yang unik
  • Pastikan format nama sesuai aturan sistem
Kemungkinan penyebab:
  • Tidak ada komunikasi perubahan ke pengguna
Solusi:
  • Informasikan perubahan kepada pengguna terkait
  • Gunakan nama yang lebih deskriptif dan familiar

Assign Role & Permission

Kemungkinan penyebab:
  • Salah memilih role saat invite
  • Perubahan belum tersimpan
Solusi:
  • Gunakan fitur Assign Role untuk memperbaiki
  • Pastikan konfigurasi role benar saat invite
Solusi:
  • Pastikan role sudah berhasil disimpan
  • Refresh halaman atau reload sistem
Solusi:
  • Periksa apakah Anda memiliki permission yang cukup
  • Pastikan role tujuan tidak dibatasi oleh sistem
Kemungkinan penyebab:
  • Permission belum diberikan pada role
  • Role yang digunakan tidak sesuai
Solusi:
  • Periksa dan tambahkan permission yang diperlukan
  • Validasi role pengguna
Solusi:
  • Pastikan permission sudah dikonfigurasi dan tersimpan
  • Periksa apakah ada override dari konfigurasi lain
Penjelasan: UI menampilkan tombol, tetapi permission di backend tidak mengizinkan aksi tersebut.Solusi:
  • Periksa konfigurasi permission di sistem
  • Pastikan aksi yang dipilih sudah diaktifkan
Kemungkinan penyebab:
  • Cache browser belum diperbarui
  • Sinkronisasi session belum terjadi
Solusi:
  • Refresh halaman
  • Logout dan login kembali
Penjelasan: Permission berlaku global untuk seluruh anggota role.Solusi:
  • Buat role baru jika membutuhkan variasi akses
  • Hindari perubahan langsung pada role yang digunakan banyak user

Menghapus Role

Kemungkinan penyebab:
  • Role masih digunakan oleh satu atau lebih pengguna
  • Role termasuk role default sistem
Solusi:
  • Pindahkan semua pengguna ke role lain melalui fitur Assign Role
  • Pastikan role bukan bagian dari role bawaan sistem
Kemungkinan penyebab:
  • Tidak memiliki permission untuk menghapus role
  • Role dilindungi oleh sistem (protected role)
Solusi:
  • Gunakan akun dengan akses lebih tinggi (misalnya Admin)
  • Periksa kebijakan sistem terkait role yang tidak bisa dimodifikasi
Kemungkinan penyebab:
  • Data belum ter-refresh
  • Role sudah dihapus sebelumnya
Solusi:
  • Refresh halaman
  • Periksa kembali dengan filter atau pencarian
Kemungkinan penyebab:
  • Gangguan koneksi
  • Validasi sistem gagal
Solusi:
  • Coba ulangi proses beberapa saat kemudian
  • Pastikan koneksi stabil

5. App Dashboard — Kalibrasi Sensor

Konfigurasi Rumus Kalibrasi

Kemungkinan penyebab:
  • Kalibrasi hanya berlaku untuk data baru, bukan data historis
  • Tidak ada data baru yang masuk setelah kalibrasi disimpan
  • Rumus tidak valid sehingga tidak dieksekusi
Solusi:
  • Pastikan device mengirim data terbaru
  • Cek timestamp data terakhir
  • Periksa kembali rumus (hindari typo atau format salah)
Kemungkinan penyebab:
  • Rumus menghasilkan nilai tidak valid (misalnya pembagian dengan 0)
  • Referensi parameter [parameter] tidak ditemukan
  • Dataset tidak mengembalikan nilai (lookup gagal)
Solusi:
  • Validasi rumus secara manual
  • Pastikan ID sensor atau parameter benar
  • Pastikan dataset memiliki range nilai yang sesuai dengan input
Kemungkinan penyebab:
  • Salah syntax (contoh: x + tanpa nilai lanjutan)
  • Salah operator (misalnya ^ seharusnya **)
  • Fungsi tidak didukung atau salah format
Solusi:
  • Gunakan operator yang didukung: + - * / **
  • Pastikan semua tanda kurung seimbang
  • Gunakan fungsi sesuai dokumentasi (contoh: sqrt(x))
Kemungkinan penyebab:
  • ID sensor salah atau tidak ada di device yang sama
  • Penulisan tidak sesuai format ([id_sensor])
  • Sensor belum memiliki data
Solusi:
  • Pastikan ID sensor benar (case-sensitive)
  • Gunakan fitur = untuk memilih parameter secara otomatis
  • Pastikan sensor referensi aktif dan mengirim data
Kemungkinan penyebab:
  • Salah konversi unit (misalnya cm ke m)
  • Kesalahan urutan operasi dalam rumus
  • Referensi parameter yang tidak sesuai
Solusi:
  • Validasi dengan perhitungan manual
  • Cek kembali unit sebelum dan sesudah kalibrasi
  • Gunakan nilai sample untuk testing
Penjelasan: Units hanya label tampilan dan tidak mengubah nilai secara otomatis.Solusi:
  • Ubah rumus kalibrasi sesuai unit baru
  • Contoh: cm → m harus menggunakan x/100, lalu update unit menjadi meter
Best practice:
  • Uji dengan sample data manual
  • Gunakan nilai sederhana terlebih dahulu (misal x/100)
  • Bandingkan hasil dengan perhitungan di luar sistem
  • Bangun rumus secara bertahap, hindari langsung menggunakan rumus kompleks

Virtual Parameter (Sensor Turunan)

Kemungkinan penyebab:
  • Kalibrasi belum disimpan
  • Parameter tidak digunakan di dashboard
  • Tidak ada data masuk
Solusi:
  • Klik Simpan setelah input rumus
  • Pastikan parameter digunakan di tampilan
  • Tunggu data baru masuk
Tidak. Parameter turunan tidak dapat digunakan sebagai faktor kalibrasi kembali.Tips:
  • Hindari menggunakan parameter turunan sebagai faktor kalibrasi
  • Lakukan kalibrasi yang sama untuk mendapat nilai dari parameter turunan, kemudian kalibrasikan perhitungan tersebut
Contoh yang salah:
Water level:  120 - x
Debit (virtual sensor):  [water_level] * [velocity]
Virtual sensor x:  [debit] * 10  ← TIDAK BOLEH, akan error
Ini bukan error.Sistem menggunakan Sintetik Data (hasil kalibrasi) untuk dashboard, grafik, dan laporan. Raw Data hanya sebagai referensi.Solusi:
  • Bandingkan raw vs sintetik melalui fitur unduh data untuk validasi
  • Pastikan rumus kalibrasi sudah benar

6. App Dashboard — Dataset

Format & Struktur File

Ya. Sistem hanya menerima file dalam format CSV (Comma-Separated Values).
  • Pastikan file berekstensi .csv
  • Jika dari Excel, gunakan Export → CSV
Ya, wajib. Header digunakan sebagai identifier kolom output dalam fungsi DATASET().Contoh yang benar:
water_level,area
4.0,40.4
3.9,39.0
Ya. Sistem akan mencocokkan nilai sensor ke kolom pertama. Kolom lain hanya digunakan sebagai output.Jika kolom pertama tidak sesuai, lookup akan menghasilkan nilai yang tidak akurat atau kosong.
Sangat disarankan. Data yang terurut mempermudah proses lookup dan mengurangi risiko hasil tidak akurat.
  • Urutkan data secara konsisten (ascending atau descending)
Tidak disarankan. Duplikasi menyebabkan lookup menjadi ambigu dan output tidak konsisten.
  • Pastikan setiap nilai referensi unik
Ya. Contoh:
water_level,area,volume,flow
Penggunaan dalam rumus:
  • DATASET("slug", x, "area")
  • DATASET("slug", x, "volume")
Tidak selalu. Sistem melakukan lookup berdasarkan nilai yang tersedia. Jika nilai tidak ditemukan secara langsung, hasil bisa kosong atau tidak akurat.Solusi:
  • Gunakan interval data yang lebih rapat
  • Tambahkan nilai di antara (intermediate values) jika diperlukan
Tidak. Dataset hanya berlaku untuk data setelah konfigurasi disimpan. Data historis tidak akan berubah.

Troubleshooting Dataset

Kemungkinan penyebab:
  • Format file bukan CSV
  • Tidak ada header di baris pertama
  • Struktur kolom tidak sesuai
  • File corrupt atau encoding tidak valid
Solusi:
  • Pastikan format CSV valid dengan delimiter koma (,)
  • Gunakan encoding UTF-8
  • Pastikan file dapat dibuka di editor teks
Kemungkinan penyebab:
  • File terlalu besar
  • Header kosong atau duplikat
  • Encoding tidak standar (bukan UTF-8)
Solusi:
  • Gunakan CSV dengan encoding UTF-8
  • Pastikan header unik dan tidak kosong
  • Periksa batas ukuran file yang diizinkan
Kemungkinan penyebab:
  • Nilai input tidak ditemukan dalam kolom referensi
  • Slug dataset salah
  • Nama kolom output tidak sesuai header
Solusi:
  • Pastikan nilai input berada dalam range dataset
  • Periksa slug dataset
  • Gunakan nama kolom output sesuai header (case-sensitive)
  • Kolom pertama = referensi (input)
  • Baris pertama = header
  • Tidak ada nilai kosong di kolom referensi
  • Range data mencakup nilai sensor
  • Tidak ada duplikasi nilai referensi
  • Uji dengan beberapa nilai sample dan bandingkan hasil manual dengan hasil sistem

7. Status Perangkat (Device Status)

Kemungkinan Penyebab

  • Device mati atau kehabisan daya
  • Gangguan jaringan
  • SIM card tidak aktif
  • Modem bermasalah

Langkah Pengecekan

  1. Pastikan device dalam kondisi menyala
  2. Periksa sumber daya / baterai
  3. Verifikasi koneksi internet
  4. Cek kualitas sinyal modem
  5. Restart device apabila diperlukan
Jika device tetap offline lebih dari 24 jam, lakukan pengecekan lapangan.

Kemungkinan Penyebab

  • Koneksi jaringan tidak stabil
  • Server mengalami latency
  • Interval pengiriman terlalu kecil
  • Gangguan modem sementara

Langkah Pengecekan

  1. Periksa kualitas sinyal
  2. Pastikan koneksi internet stabil
  3. Verifikasi interval pengiriman device
  4. Monitor apakah status berubah menjadi offline
Status maintenance biasanya diatur manual oleh admin atau teknisi.

Rekomendasi

  • Dokumentasikan aktivitas maintenance
  • Nonaktifkan alarm sementara jika diperlukan
  • Pastikan status dikembalikan setelah maintenance selesai