Event dan status alarm
Halaman ini untuk pengembang integrasi yang membaca alarm Sentinel dari MQTT. Pengaturan batas ada di Alarm.
Celestian ──(1) config: batas alarm + cfg_ver──▶ gateway ──▶ nodeCelestian ◀──(2) config/reported: nilai berlaku, cfg_ver, rejected── nodeCelestian ◀──(3) event: alarm mulai / selesai + nilai pemicu── nodeCelestian ◀──(4) telemetry: status tiap alarm + alarm_level── nodeDikirim ke …/<mac>/event (QoS 1) saat status berubah, tanpa menunggu telemetri. Format mengikuti payload_format. Contoh suhu t1 melewati batas alarm, dalam flat:
{"f":"flat","v":1,"id":"001a2b3c4d5e","t":1790000123,"m":{"alarm_t1_high":true,"alarm_t1_high_value":35.4}}Dalam senml:
[{"bn":"001a2b3c4d5e:","bt":1790000123,"n":"alarm_t1_high","vb":true}, {"n":"alarm_t1_high_value","u":"Cel","v":35.4}]Selesai: metrik yang sama dengan false dan nilai terakhir.
- Contoh memakai nama bawaan (
t1). Bilat1_name=rack_top, namanyaalarm_rack_top_highdanalarm_rack_top_high_value. …_valueselalu satu paket dengan metrik statusnya; bila sensor tidak terbaca saat event dikirim,…_valuetidak disertakan.- Peringatan dan alarm suhu adalah dua alarm terpisah;
alarm_t1_warntetaptrueselamaalarm_t1_highaktif. - Mode pemeliharaan punya event sendiri:
maintenance(truesaat mulai,falsesaat berakhir).
Status di telemetri
Section titled “Status di telemetri”Telemetri membawa status tiap alarm yang batasnya diisi (untuk input digital: dN_alarm = true) pada slot yang aktif, ditambah tingkat gabungan:
{"n":"alarm_t1_warn","vb":true},{"n":"alarm_t1_high","vb":false},{"n":"alarm_level","v":1}alarm_level selalu dikirim: 0 = normal, 1 = ada peringatan, 2 = ada alarm. Telemetri dikirim seketika saat alarm_level berubah. Pesan yang membawa alarm_level menutup alarm yang tidak ikut; pesan dengan alarm_* tanpa alarm_level tidak menutup apa pun.
Aturan perilaku
Section titled “Aturan perilaku”| Situasi | Perilaku |
|---|---|
| Jeda | alarm mulai setelah kondisi bertahan alarm_delay_s. Bila nilai kembali normal sebelum itu, tidak ada event |
| Histeresis | suhu: temp_alarm_hyst_c; listrik: 2%. Selesai tidak memakai jeda |
| Sensor gagal dibaca | status alarm tidak berubah dan tidak ada event; metrik sensornya hilang dari telemetri |
| Batas diubah saat alarm aktif | dievaluasi ulang; bila kondisi berakhir, event selesai dikirim |
Alarm dinonaktifkan (0) saat aktif |
event selesai dikirim sekali, lalu metrik alarm itu hilang dari telemetri |
| Node reboot saat alarm aktif | tidak ada event selesai; setelah boot dan jeda, event mulai dikirim lagi. Perlakukan sebagai pembaruan, bukan insiden baru |
| MQTT putus saat status berubah | event ditahan dan dikirim begitu tersambung (status terakhir, bukan semua perubahan) |
| BACK (bisukan) | urusan lokal; tidak menghasilkan event |
alarm_buzzer = false atau pemeliharaan |
event dan status tetap dikirim |
| Jam belum sinkron | event tanpa t / bt; server memakai waktu terima |
Saran implementasi di server
Section titled “Saran implementasi di server”- Kenali alarm dari metrik boolean berawalan
alarm_.truemembuka,falsemenutup;<nama>_valuedi paket yang sama adalah nilai saat itu. - Simpan status per device dan per alarm (aktif sejak kapan, nilai terakhir). Perbarui juga dari telemetri, karena event bisa terlewat, dan jadikan idempoten.
- Tingkat keparahan: tabel di Alarm, atau
alarm_leveluntuk ringkasan per device. - Tampilkan status sinkron dari
cfg_verdanrejected(Config dan laporan). - Nama slot berasal dari konfigurasi; mengganti nama memulai deret baru. Baca label dan tipe dari
config/reported(tN_label,dN_label,dN_type,dN_active).
Kasus uji
Section titled “Kasus uji”- Event mulai lalu selesai menghasilkan satu insiden dengan waktu mulai dan selesai.
- Event mulai dikirim dua kali berturut-turut: satu insiden.
- Telemetri
alarm_*: truetanpa event mulai sebelumnya: alarm tetap tercatat aktif. - Event selesai hilang tetapi telemetri berikutnya
alarm_*: false: insiden ditutup. - Metrik alarm hilang dari telemetri (batas di-nol-kan): insiden ditutup.
cfg_verberbeda dari yang dikirim: status “menunggu”;rejectedberisi: “ditolak sebagian”.
Uji tanpa perangkat dengan simulator: celestianctl.py config … temp_alarm_c=25 dan pantau watch.