Skip to main content

General

Kural İfade Sözdizimi

Kriter Dilini kullanarak otomasyon kuralları yazmak için tam referans.

Proxus, kuralları gelen verilere karşı değerlendirmek için güçlü bir Kriter Dili kullanır. Kural motoru dört olay türünü destekler:

  1. DataReceived (TransportData) - Cihaz telemetrisi ve sensör verileri
  2. StatusChanged (DeviceStatus) - Cihaz bağlantı durumu değişiklikleri
  3. LogReceived (Log) - İzleme ve uyarı için sistem log mesajları
  4. MetricsReceived (ProxusActorMetrics) - Aktör performans metrikleri

Her olay türü, kriterleri farklı bir veri modeline göre değerlendirir.

Grafiksel bir arayüz mü tercih ediyorsunuz? Görsel Kural Editörü sayfasına bakın.

Veri Erişim Sözdizimi

Kural motoru koşulları veri koleksiyonlarına karşı değerlendirir. Bu koleksiyonları filtrelemek için köşeli parantez [...] sözdizimini kullanırsınız.

KoleksiyonAçıklamaErişim Deseni
PayloadMetrikler listesi (örn. Sıcaklık, Voltaj).[Payload][Key = 'Temp' AND NumericValue > 50]
MetaDataCihaz meta verileri listesi (örn. DeviceId).[MetaData][Key = 'Location' AND Value = 'Zone1']
AttributesEkstra öznitelikler sözlüğü.[Attributes][Key = 'Priority' AND Value = 'High']
TopicMesaj konusu (String).[Topic] = 'Device123'

Önemli: Parantez Mantığı

Tek bir parantez bloğu içine birden fazla koşul yerleştirdiğinizde, bunlar koleksiyondaki aynı öğeye uygulanmalıdır.

  • Doğru: [Payload][Key = 'Temp' AND NumericValue > 50]
  • (Key'i 'Temp' olan VE Değeri > 50 olan bir öğe bul)
  • Yanlış: [Payload][Key = 'Temp'] AND [Payload][NumericValue > 50]
  • (Key'i 'Temp' olan bir öğe bul VE Değeri > 50 olan HERHANGİ bir öğe bul. Bunlar farklı öğeler olabilir!)

Operatörler ve Fonksiyonlar

Karşılaştırma ve Mantık

OperatörAçıklamaÖrnek
=, !=, <>Eşitlik[Topic] = 'Gen1'
>, >=, <, <=Sayısal KarşılaştırmaNumericValue > 100
AND, OR, NOTMantıksal OperatörlerCondition1 AND NOT Condition2
[v] BETWEEN(min, max)Aralık KontrolüNumericValue BETWEEN(10, 20)
[v] IN(list)Liste KontrolüValue IN ('A', 'B', 'C')

String Fonksiyonları

FonksiyonAçıklamaÖrnek
Contains(str, substr)Alt dizeyi kontrol eder.Contains(Value, 'Error')
StartsWith(str, prefix)Öneki kontrol eder.StartsWith(Value, 'Sensor')
EndsWith(str, suffix)Soneki kontrol eder.EndsWith(Value, '.log')
Len(str)String uzunluğu.Len(Value) > 5
Upper(str), Lower(str)Harf dönüşümü.Upper(Value) = 'OK'
Replace(str, old, new)Metni değiştirir.Replace(Value, '-', '')

Tarih ve Saat Fonksiyonları

FonksiyonAçıklamaÖrnek
Now()Mevcut sunucu saati.Time > AddMinutes(Now(), -5)
AddMinutes(date, n)Dakika Ekle/Çıkar.Time < AddMinutes(PreviousValueTime, 10)
AddHours(date, n)Saat Ekle/Çıkar.Time >= AddHours(Now(), -1)
AddDays(date, n)Gün Ekle/Çıkar.Time >= AddDays(Now(), -1)
GetYear(date)Yılı çıkar.GetYear(Time) = 2024

Yardımcı Fonksiyonlar

FonksiyonAçıklamaÖrnek
Iif(cond, true, false)Satıriçi Eğer.Iif(NumericValue > 10, 'High', 'Low')
IsNullOrEmpty(str)Null/Boş kontrolü.IsNullOrEmpty(Value)
ToDouble(str)String'i sayıya çevir.ToDouble(Value) > 5.5
Abs(n)Mutlak değer.Abs(NumericValue) > 10

Yaygın Senaryolar

1. Basit Eşik

"Sıcaklık" etiketi 80'in üzerindeyse tetikle.

[Payload][Key = 'Temperature' AND NumericValue > 80]

2. Cihaz ve Değer Filtresi

"Basınç" düşükse VE belirli bir cihazdan geliyorsa tetikle.

[MetaData][Key = 'DeviceName' AND Value = 'Pump01']
AND
[Payload][Key = 'Pressure' AND NumericValue < 10]

3. Değişim Tespiti (Delta)

"Hız" önceki değere göre 5 birimden fazla değiştiyse tetikle.

[Payload][Key = 'Speed' AND Abs(NumericValue - ToDouble(PreviousValue)) > 5]

4. Ölü Bant / Aralık

"Voltaj" güvenli aralığın (220-240) dışındaysa tetikle.

[Payload][Key = 'Voltage' AND NOT (NumericValue BETWEEN(220, 240))]

5. Zaman Boşluğu (Bayat Veri)

Yeni değer, bir öncekinden 10 dakikadan fazla bir süre sonra geldiyse tetikle.

[Payload][Key = 'Heartbeat' AND Time >= AddMinutes(PreviousValueTime, 10)]

Cihaz Durum Kuralları

Kural Olayı Status Changed olarak ayarlandığında, kriterler DeviceStatus nesnesine karşı değerlendirilir (TransportData değil).

ÖzellikAçıklama
DeviceIdCihazın benzersiz ID'si.
DeviceNameCihazın adı.
CurrentConnectionStatusConnected veya Disconnected.
PreviousConnectionStatusConnected veya Disconnected.
ConnectionDurationMevcut durumdaki saniye cinsinden süre (Double).

Örnek: Cihaz Bağlantısı Koptu

CurrentConnectionStatus = 'Disconnected'

Log Tabanlı Kurallar

Kural Olayı Log Received olarak ayarlandığında, kriterler Log nesnesine karşı değerlendirilir. Bu, sistem loglarını izlemenize ve belirli log modellerine göre uyarıları tetiklemenize olanak tanır.

ÖzellikAçıklama
MessageLog mesajı içeriği (String).
LevelLog ciddiyeti: Trace, Debug, Information, Warning, Error, Critical.
CategoryLog kategorisi/kaynağı (örn. Proxus.ProtocolDrivers veya Proxus.SystemCore).
SourceLog kaynağı tanımlayıcısı.
TimeLog girişinin zaman damgası (DateTime).
warning
Sonsuz Döngü Önleme

KRİTİK: Log kuralları, kendileri de log üreten aksiyonları (bildirimler gibi) tetikleyebilir. Sonsuz döngüleri önlemek için:

  • Katı kriterler kullanın (belirli kategoriler, seviyeler veya mesaj kalıpları)
  • Hız sınırlaması uygulayın (örn. 60 saniyede maksimum 10 aksiyon)
  • Level = 'Error' gibi aşırı geniş kriterlerden kaçının

Platform, kendi kendini tetiklemeyi önlemek için kural motoru loglarını otomatik olarak filtreler.

Örnek 1: Kritik Hatalar

Level = 'Critical' OR Level = 'Error'

Metrik Tabanlı Kurallar

Kural Olayı Metrics Received olarak ayarlandığında, kriterler ProxusActorMetrics nesnesine karşı değerlendirilir. Bu, aktör performansını ve veri kalitesi metriklerini izlemeyi sağlar.

ÖzellikAçıklama
DeviceCihaz veya servis tanımlayıcısı (String).
TotalRequestsİşlenen toplam istek sayısı (Int64).
SuccessfulRequestsBaşarılı istek sayısı (Int64).
FailedRequestsBaşarısız istek sayısı (Int64).
TotalDataReceivedAlınan toplam veri paketi sayısı (Int64).
AverageResponseTimeMilisaniye cinsinden ortalama yanıt süresi (Double).
ResponseCountAlınan toplam geçerli yanıt sayısı (Int64).
ProcessedDataCountİşlenen toplam benzersiz veri noktası (Int64).
ReadErrorCountProtokol okuma hatası sayısı (Int64).
ReadErrorPercentageBaşarısız olan isteklerin yüzdesi (0-100).
DataAccuracyVeri kalitesi metriği: doğruluk yüzdesi (0-100).
DataCompletenessVeri kalitesi metriği: eksiksizlik yüzdesi (0-100).
DataFreshnessVeri kalitesi metriği: güncellik yüzdesi (0-100).
DataIntegrityVeri kalitesi metriği: bütünlük yüzdesi (0-100).
DataConsistencyVeri kalitesi metriği: tutarlılık yüzdesi (0-100).
ConnectionErrorCountBağlantı hatası sayısı (Int64).
SleepModeTransitionCountCihazın uyku moduna girme sayısı (Int64).
LastCommunicationTimeSon iletişim zaman damgası (DateTime).
LastDataReceivedTimeSon geçerli veri paketi zaman damgası (DateTime).
info
Performans İzleme

Metrik kuralları şunlar için idealdir:

  • Servis sağlığını ve performansını izleme
  • Düşen servis kalitesini tespit etme
  • Yüksek hata oranlarında uyarı verme
  • Veri kalitesi trendlerini takip etme

Önerilen Hız Sınırlaması: 300 saniyede (5 dakika) maksimum 5 aksiyon


Anomali Tespiti

Kayan bir pencere üzerinde istatistiksel analiz için (örn. Z-Score, Hareketli Ortalama), Kural Motorunda Anomali Tespiti modunu seçin.

Anomali Tespiti modunda, Kriter İfadelerini yine de bir ön filtre olarak kullanabilirsiniz. Yalnızca kriterlerle eşleşen veriler istatistiksel modele beslenecektir (örn. [Payload][Key='Vibration']).