Yeni: Yapay zekâ güvenlik duvarı her modülü izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Alarm koşulları referansı

Alarm koşullarının nasıl karşılaştırıldığı – operatörler, sayılar ile metin, all/any grupları, cihaza özel nitelik limitleri, konular ve çok anahtarlı kurallar.

Her eşik kuralının her önem derecesinin tek bir koşulu vardır. Bir koşul ya tek bir karşılaştırmadır (yaprak) ya da bir koşul grubudur. Bu sayfa Hermetry’nin bunları nasıl değerlendirdiğini anlatır; böylece bir alarmın ne zaman açılacağını önceden tahmin edebilirsiniz.

Yapı

Condition = { "key": …, "op": …, "value": …, "topic"?: … }
          | { "all": [ Condition, … ] }
          | { "any": [ Condition, … ] }

Form, önem derecesi başına bir karşılaştırmayı düzenler. Gruplar JSON modunda yazılır.

Operatörler

opŞu durumda doğru
>değer eşik değerinden büyükse
>=büyük veya eşit
<küçükse
<=küçük veya eşit
==eşit
!=eşit değil

“Arasında” diye bir operatör yoktur: all ile >= ve <= kullanın. Aritmetik de yoktur: bir koşul “setpoint + 10” ya da “diğer sensörden fazla” diyemez. Bunun için bir akışta türetilmiş bir anahtar hesaplayın (bkz. Türetilmiş değerler) ya da Kurallar kartındaki bir formülü kullanın.

Değerler nasıl karşılaştırılır

Değer ve eşikKarşılaştırma
İkisi de sayıysa ya da sayı gibi okunan metinse ("23.5", "1e3")Sayı olarak. "80" ile 80 eşittir.
Diğer durumlarda == veya != ileMetin olarak: true, "true" ile eşittir.
Diğer durumlarda >, >=, <, <= ileHer zaman yanlış.
Cihaz null gönderdiyse== yanlış, != doğrudur.

Bu nedenle metin olarak raporlanan bir durum == ile çalışır: { "key": "state", "op": "==", "value": "fault" }. Boolean değerler de çalışır: { "key": "door_open", "op": "==", "value": true } ayrıca "true" gönderen bir cihazla da eşleşir.

Niteliklerden cihaza özel eşikler

Değer olarak bir sayı yerine, cihazın bir niteliğinin adı verilebilir:

{ "key": "temperature", "op": ">", "value": { "attribute": "max_temp" } }

Formda Değer alanına attribute:max_temp yazın.

  • Hermetry, cihazın o ada sahip server niteliğini, ardından shared niteliğini okur. Client nitelikleri kullanılmaz.
  • Böyle bir niteliği olmayan cihaz o karşılaştırma için kontrol edilmez: yaprak yanlış değerlendirilir. Her cihaza niteliği verin ya da sabit bir sayıyla ikinci bir önem derecesi ekleyin.
  • Değişen bir nitelik yaklaşık 30 saniye içinde kullanılır.

Bu, tek bir kuralın farklı limitlere sahip cihazlara hizmet etmesini sağlar. Nitelikleri cihazların Attributes sekmesinde, içe aktarma yoluyla ya da API üzerinden ayarlayın. Bkz. Nitelikler.

Gruplar: all ve any

{
  "all": [
    { "key": "door_open", "op": "==", "value": true },
    { "key": "pressure", "op": "<", "value": 1.2 }
  ]
}
  • all, her parça doğru olduğunda doğrudur; any ise en az biri doğru olduğunda.
  • Gruplar en fazla 4 seviye iç içe geçebilir.
  • Bir önem derecesinin koşulu toplamda en fazla 16 karşılaştırma içerebilir.

Birden çok anahtar üzerindeki kurallar

Cihazlar genellikle anahtarları ayrı mesajlarda gönderir. Bir kural, yalnızca gelen mesaja değil, cihazın en son bilinen değerlerine göre değerlendirilir:

  • Bir kural yalnızca anahtarlarından en az birini taşıyan (eşleşen bir konudan gelen) bir mesajda değerlendirilir. Anahtarlarından hiçbirini içermeyen bir mesaj kuralı ne açar ne de kapatır ve debounce için bir örnek sayılmaz.
  • Mesajın taşımadığı bir anahtar için karşılaştırma, kuralın bu cihazda o anahtarın gördüğü son değerini kullanır.
  • Kuralın cihazda hiç görmediği bir anahtara ait karşılaştırma yanlıştır.

Örnek: kapı durumu her dakika, basınç her on saniyede bir gelir. Yukarıdaki all kuralı, ikisi de doğru olduğunda, hangi mesaj en son gelirse gelsin açılır.

Hatırlanan değerler kuralın durumuyla birlikte saklanır. 30 gün sessiz kalan bir cihaz bu durumu kaybeder ve baştan başlar.

Konu filtreleri

Kendi MQTT konularına yayın yapan cihazlar için bir yaprak tek bir konuyla sınırlanabilir:

topicYaprak şunlara uygulanır
yokherhangi bir konudan gelen mesajlar
"factory/line1/temp"yalnızca tam olarak bu konudan gelen mesajlar
nullyalnızca varsayılan konulardan gelen mesajlar

Aynı anahtar iki konuda bulunuyorsa iki farklı değer sayılır. Formda bunu Advanced > Only from topic altında ayarlayın. Bkz. MQTT konuları ve yükleri.

Anahtarlar

Anahtar bir telemetri anahtarıdır: boşluk içermez, çıplak bir sayı olamaz, en fazla 128 karakter olabilir. Anahtarlarda büyük/küçük harf duyarlıdır: Temperature ile temperature farklı anahtarlardır. Profilin tanımlamadığı bir anahtar uyarıyla kabul edilir; sayıya benzer bir anahtar ise yalnızca profil onu tanımladığında kabul edilir.

Önem dereceleri

Birden çok önem derecesi varsa, tüm koşullar her mesajda değerlendirilir ve doğru olan en yüksek önem derecesi kazanır:

"severities": [
  { "severity": "CRITICAL", "condition": { "key": "temperature", "op": ">", "value": 90 } },
  { "severity": "MAJOR",    "condition": { "key": "temperature", "op": ">", "value": 80 } },
  { "severity": "WARNING",  "condition": { "key": "temperature", "op": ">", "value": 70 } }
]

85’te alarm Major olur; 95’te Critical‘a yükselir; yeniden 85’e düşünce Major‘a döner (temizleme debounce süresinden sonra); 70’in altına (histerezis çıkarılmış hâlde) inince temizlenir.

Bir koşulun yapamadıkları

Mümkün değilAlternatif
İki anahtarı ya da iki cihazı karşılaştırmakKurallar kartındaki bir formül ya da türetilmiş bir anahtar yazan bir akış
Günün saatini ya da takvimi kullanmakZaman aralığı içeren bir Kurallar kartı kuralı
“10 dakikadır değişmedi”Bir watchdog ya da delta bloğu içeren bir akış
Eşikte aritmetikTüretilmiş bir anahtar ya da cihaza özel bir nitelik
Eşik olarak bir client niteliği okumakLimiti bir server ya da shared niteliği olarak saklamak