Data fluida dari lapangan, sampai ke layar — dan berbunyi saat berhenti.
Temperatur, tekanan, dan debit dibaca instrumen, dikumpulkan PLC, dikirim gateway, lalu disimpan, dinilai, dan dialarmkan di server ini. Yang paling sering gagal di sistem seperti ini bukan sensornya — melainkan jalur komunikasinya, dan satu-satunya gejalanya adalah dasbor yang membeku sambil terlihat normal. Karena itu alarm pertama yang dipasang di sini adalah alarm data basi.
Alur sistem: lapangan → PLC → gateway → server
Yang dikerjakan sistem ini
Dua pintu masuk
MQTT (QoS 1, LWT, store-and-forward) untuk gateway yang mendukungnya, dan HTTPS POST /v1/ingest bertoken untuk yang tidak. Keduanya masuk ke satu fungsi ingest yang sama — tidak ada aturan validasi yang menyimpang diam-diam antar jalur.
Kualitas, bukan penyaringan
Nilai di luar rentang teknis, loop 4–20 mA putus (<3,5 mA), dan debit di bawah cutoff tetap disimpan — dengan tanda kualitas. "Tidak ada data karena sensor rusak" harus bisa dibedakan dari "tidak ada data karena jaringan putus".
Alarm yang masih dibaca orang
Ambang + dead band + tunda konfirmasi, supaya nilai yang bergetar di sekitar ambang tidak melahirkan puluhan notifikasi per jam. Alarm pulih dan alarm terbit sama-sama diberitakan.
Alarm data basi
Tidak ada publikasi selama 3× interval = gateway, SIM, atau PLC bermasalah. Ini alarm yang menangkap mayoritas kegagalan nyata, dan satu-satunya yang berbunyi justru ketika tidak ada data sama sekali.
Totalizer tahan reset
Volume harian dihitung dari selisih antar bacaan, dan counter yang berputar atau direset teknisi dicatat sebagai rollover — bukan dijumlahkan jadi angka negatif raksasa yang merusak total selamanya.
Jejak yang jujur
Payload yang DITOLAK ikut tercatat lengkap dengan alasannya. Tanpa itu, "gateway sudah kirim kok" tidak pernah bisa diadu dengan bukti.
Sisi lapangan
Parameter gateway
| Polling PLC | 1–5 detik |
|---|---|
| Publish | 5–10 detik, QoS 1 |
| Keepalive | 60 detik |
| Buffer offline | ≥ 24 jam, dikirim ulang saat pulih |
| LWT | plant/<situs>/<perangkat>/status → offline, retained |
| Topik data | plant/<situs>/<perangkat>/telemetry |
Contoh payload
{
"ts": 1758000000,
"device": "PLC-01",
"temp_c": 78.4,
"press_bar": 3.21,
"flow_m3h": 12.7,
"total_m3": 145890.5,
"loop_ma": 12.1,
"quality": "good"
}
Stempel ts boleh detik maupun milidetik. Yang melenceng >60 detik dari server ditandai ragu, bukan dibuang.
Risiko yang sudah dipasangi penjaga
Sudah ditangani
- Jalur komunikasi mati → alarm data basi (3× interval)
- Gateway mati mendadak → Last Will retained
- Sinyal 4G putus → buffer gateway + deduplikasi di server
- Loop 4–20 mA putus/korslet → deteksi <3,5 / >20,5 mA
- Jam gateway ngawur → dua stempel waktu, selisih ditampilkan
- Counter flowmeter direset → rollover dicatat, bukan dijumlah
- Alarm fatigue → dead band + tunda konfirmasi + redaman notifikasi
- Disk penuh → retensi partisi 90 hari, agregat 2 tahun, log payload 7 hari
Masih tanggung jawab manusia
- Kalibrasi berkala instrumen — drift sensor tidak punya gejala di layar
- Grounding & kabel shielded untuk sinyal 4–20 mA
- UPS untuk panel & gateway saat PLN padam
- Uji pemulihan cadangan, minimal tiap kuartal
- Minimal dua orang paham cara memulihkan sistem ini