Lewati ke konten

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 ──▶ node
Celestian ◀──(2) config/reported: nilai berlaku, cfg_ver, rejected── node
Celestian ◀──(3) event: alarm mulai / selesai + nilai pemicu── node
Celestian ◀──(4) telemetry: status tiap alarm + alarm_level── node

Dikirim 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). Bila t1_name = rack_top, namanya alarm_rack_top_high dan alarm_rack_top_high_value.
  • …_value selalu satu paket dengan metrik statusnya; bila sensor tidak terbaca saat event dikirim, …_value tidak disertakan.
  • Peringatan dan alarm suhu adalah dua alarm terpisah; alarm_t1_warn tetap true selama alarm_t1_high aktif.
  • Mode pemeliharaan punya event sendiri: maintenance (true saat mulai, false saat berakhir).

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.

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
  1. Kenali alarm dari metrik boolean berawalan alarm_. true membuka, false menutup; <nama>_value di paket yang sama adalah nilai saat itu.
  2. Simpan status per device dan per alarm (aktif sejak kapan, nilai terakhir). Perbarui juga dari telemetri, karena event bisa terlewat, dan jadikan idempoten.
  3. Tingkat keparahan: tabel di Alarm, atau alarm_level untuk ringkasan per device.
  4. Tampilkan status sinkron dari cfg_ver dan rejected (Config dan laporan).
  5. 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).
  • Event mulai lalu selesai menghasilkan satu insiden dengan waktu mulai dan selesai.
  • Event mulai dikirim dua kali berturut-turut: satu insiden.
  • Telemetri alarm_*: true tanpa 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_ver berbeda dari yang dikirim: status “menunggu”; rejected berisi: “ditolak sebagian”.

Uji tanpa perangkat dengan simulator: celestianctl.py config … temp_alarm_c=25 dan pantau watch.