İçeriğe geç

Alarm API

Alarm API; alarm ve alarm gruplarının durumunu sorgulamak, aktivasyon/deaktivasyon yapmak, tetiklenmiş alarm (fired alarm) geçmişini çekmek ve alarmlar üzerinde acknowledge / comment / force-off aksiyonları yapmak için kullanılır.

Tek bir alarmın tanımını döner — AlarmResponseDto.

var a = ins.getAlarm("HighTemperature");
ins.consoleLog(a.getName() + " (" + a.getType() + ") — delay=" + a.getDelay());

ins.getAlarmGroup(name) / (projectName, name)

Section titled “ins.getAlarmGroup(name) / (projectName, name)”

Tek bir alarm grubunun tanımını döner — AlarmGroupResponseDto.

var g = ins.getAlarmGroup("Temperature_Alarms");
ins.consoleLog(g.getName() + " priority=" + g.getPriority() + " scan=" + g.getScanTimeInMillis() + "ms");
MetodTürAçıklama
getName()StringAlarm adı
getDsc()StringAçıklama
getGroupId()StringGrup ID
getType()StringTip (DIGITAL, ANALOG_HIGH_HIGH, ANALOG_HIGH, ANALOG_LOW, ANALOG_LOW_LOW, ANALOG_SET_POINT, CUSTOM)
getDelay()IntegerTetikleme gecikmesi (saniye)
getIsActive()BooleanAlarm tanımı aktif mi
getPart()StringGrup içi parçalama anahtarı
getOnTimeVariableId() / getOffTimeVariableId()StringOn/off zamanının yazıldığı değişken ID’leri
MetodTürAçıklama
getName()StringGrup adı
getDsc()StringAçıklama
getPriority()ShortÖncelik
getScanTimeInMillis()IntegerGrup içi tarama periyodu
getOnScriptId() / getOffScriptId() / getAckScriptId()StringOn/off/ack anında çalışacak script ID’leri
getOnNoAckColor() / getOnAckColor() / getOffNoAckColor() / getOffAckColor()StringDurum bazlı renk kodları
getPrinterIp() / getPrinterPort()Yazıcı adresi (varsa)
getPrintWhenOn() / getPrintWhenOff() / getPrintWhenAck() / getPrintWhenComment()BooleanHangi olaylarda yazıcıya düşecek

ins.getAlarmStatus(name) / (projectName, name)

Section titled “ins.getAlarmStatus(name) / (projectName, name)”

AlarmStatus enum döner — iki değer:

DeğerAnlam
"Active"Alarm aktif olarak çalışıyor
"Not Active"Alarm devre dışı
if (ins.getAlarmStatus("HighTemperature") == "Not Active") {
ins.notify("info", "Alarm", "HighTemperature devre dışı");
}

ins.getAlarmGroupStatus(name) / (projectName, name)

Section titled “ins.getAlarmGroupStatus(name) / (projectName, name)”

Grup için aynı enum.

Grubun o anki özet bilgisini döner — Map<String, Object> (toplam, aktif, ack’lenmemiş sayıları gibi).

var info = ins.getCurrentAlarmGroupInfo("Temperature_Alarms");
ins.consoleLog(JSON.stringify(info));

ins.activateAlarmGroup(name) / (projectName, name)

Section titled “ins.activateAlarmGroup(name) / (projectName, name)”

ins.deactivateAlarmGroup(name) / (projectName, name)

Section titled “ins.deactivateAlarmGroup(name) / (projectName, name)”

Bakım veya geçici süspansiyon için tüm grubu açıp kapar.

// Bakım başlangıcı
ins.deactivateAlarmGroup("Temperature_Alarms");
// ...
// Bakım sonu
ins.activateAlarmGroup("Temperature_Alarms");

Fired Alarm (Tetiklenmiş Alarm) Sorgulama

Section titled “Fired Alarm (Tetiklenmiş Alarm) Sorgulama”

“Fired alarm” kavramı bir alarmın tetiklenmesinden (on) sönmesine (off) kadar geçen tekil bir olayı temsil eder. İsteğe bağlı olarak sönmüş (off) olanları dahil etmek veya etmemek için includeOff parametresi vardır.

ins.getFiredAlarm() / (projectName) / (index) / (index, includeOff)

Section titled “ins.getFiredAlarm() / (projectName) / (index) / (index, includeOff)”

Index’e göre tek bir fired alarm döner.

var f = ins.getFiredAlarm(0); // en yeni aktif
var fAny = ins.getFiredAlarm(0, true); // en yeni (off dahil)

ins.getFiredAlarms(index, count) / (index, count, includeOff) / projectName varyantları

Section titled “ins.getFiredAlarms(index, count) / (index, count, includeOff) / projectName varyantları”

Bir pencere döndürür (start = index, boyut = count) — Collection<FiredAlarmDto>.

// Son 10 aktif fired alarm
var top10 = ins.getFiredAlarms(0, 10);
top10.forEach(function(f) {
ins.consoleLog(f.getName() + " @ " + f.getOnTime());
});
// Son 50 (off dahil)
var last50 = ins.getFiredAlarms(0, 50, true);

ins.getFiredAlarmsByDate(startDate, endDate, includeOff, limit) / projectName varyantı

Section titled “ins.getFiredAlarmsByDate(startDate, endDate, includeOff, limit) / projectName varyantı”

Tarih aralığında tetiklenen alarmlar.

var end = ins.now();
var start = ins.getDate(end.getTime() - 86400000); // son 24 saat
var history = ins.getFiredAlarmsByDate(start, endDate, true, 500);

ins.getFiredAlarmsByPart(part, page, count) / projectName varyantı

Section titled “ins.getFiredAlarmsByPart(part, page, count) / projectName varyantı”

Belirli bir part (parçalama anahtarı) için sayfalı fired alarm listesi.

var forLine1 = ins.getFiredAlarmsByPart("Line1", 0, 20);

ins.getCurrentAlarms(includeOff) / (projectName, includeOff)

Section titled “ins.getCurrentAlarms(includeOff) / (projectName, includeOff)”

O anda aktif olan alarmların tamamı. includeOff=true sönmüş olup ack bekleyenleri de kapsar.

var active = ins.getCurrentAlarms(false);
ins.setVariableValue("ActiveAlarmCount", { value: active.size() });

ins.getCurrentAlarmsByName(alarmNames[], includeOff)

Section titled “ins.getCurrentAlarmsByName(alarmNames[], includeOff)”

Verilen alarm adlarından şu an aktif olanların haritası — Map<String, FiredAlarmDto>.

var map = ins.getCurrentAlarmsByName(["HighTemperature", "LowPressure"], false);
if (map.HighTemperature) {
ins.consoleLog("HighTemperature aktif, on at " + map.HighTemperature.getOnTime());
}
MetodTürAçıklama
getName() / getDsc()StringAlarm adı ve açıklaması
getId() / getAlarmId() / getGroupId() / getProjectId()StringKimlikler
getGroup() / getProject()StringGrup ve proje adı
getPart()StringParçalama anahtarı
getStatus()FiredAlarmStatus"On" / "Off"
getStatusValue()IntegerHam status tamsayısı
getFiredAlarmType()FiredAlarmTypeDigital, Custom, Analog High High, Analog High, Analog Low, Analog Low Low, Analog Set Point
getOnValue() / getOffValue() / getOnValueB() / getOffValueB()DoubleTetikleme ve sönme değerleri
getOnTime() / getOnTimeInMs()Date / LongTetikleme zamanı
getOffTime() / getOffTimeInMs()Date / LongSönme zamanı (henüz sönmediyse null)
getAcknowledgeTime() / getAcknowledgeTimeInMs() / getAcknowledger()Acknowledge bilgisi
getForcedOff() / getForcedOffBy()Boolean / StringZorla kapatılıp kapatılmadığı
getComment() / getCommentedBy() / getCommentTime() / getCommentTimeInMs()Yorum bilgisi

Aksiyonlar (acknowledgeAlarm, forceOffAlarm, commentAlarm) FiredAlarmDto bekler — tipik kalıp: önce fired alarm’ı bul, sonra üzerinde işlem yap.

var active = ins.getCurrentAlarms(false);
active.forEach(function(f) {
ins.acknowledgeAlarm(f);
});

Alarmı zorla söndürür — gerçek tetikleyici koşul sürüyor olsa bile.

var f = ins.getFiredAlarm(0);
if (f && f.getName() == "StaleSensor") {
ins.forceOffAlarm(f);
}

Alarma operatör yorumu ekler.

var f = ins.getFiredAlarm(0);
ins.commentAlarm(f, "Sensör kalibrasyonu yapıldı, false positive");

Tam AlarmResponseDto bekler — get/mutate/update kalıbı kullan.

var a = ins.getAlarm("HighTemperature");
a.setDelay(60); // gecikme 60 sn
a.setDsc("Yüksek sıcaklık — güncellendi");
ins.updateAlarm("HighTemperature", a);
function main() {
var end = ins.now();
var start = ins.getDate(end.getTime() - 3600000);
// Son 1 saatte tetiklenen tüm alarmlar
var events = ins.getFiredAlarmsByDate(start, end, true, 1000);
ins.writeLog("INFO", "AlarmReport", "Son 1 saat: " + events.size() + " olay");
// Sensör temizliği sonrası aktif olanları otomatik ack'le
var active = ins.getCurrentAlarms(false);
active.forEach(function(f) {
if (f.getGroup() == "Sensors_Cleanup") {
ins.commentAlarm(f, "Oto-ack — temizlik sonrası");
ins.acknowledgeAlarm(f);
}
});
}
main();