rule_groups
rule_groups, bir alarm veya karar senaryosunun üst kapsayıcı tablosudur. Gerçek sahada alarm çoğu zaman tek bir koşul değildir; birden fazla koşul birlikte değerlendirilir. Bazı senaryolarda tüm kurallar sağlanmalı, bazılarında herhangi biri yeterlidir. Bu nedenle tekil rule tanımından önce bir kapsayıcı grup gerekir.
Bu tablo, bildirim davranışını, reset politikasını, önceliği ve publish bitmask bağlantısını taşır. Tekil kural koşulları rules tablosunda, cihaz atamaları ise device_rule_assignments tablosunda tutulur.
match_type Enum Değerleri
match_type, PostgreSQL ENUM tipidir ve grup içindeki kuralların nasıl birleştirileceğini belirler.
| Değer | Anlamı |
|---|---|
all | Gruptaki tüm kurallar eşleşmeli (AND mantığı) |
any | Gruptaki herhangi bir kural eşleşmesi yeterli (OR mantığı) |
Kolonlar
| Kolon | Tip | Null | Anlamı |
|---|---|---|---|
id | int | hayır | Kural grubu birincil anahtarı |
project_id | int | evet | Hangi projeye ait; projects.id ile ilişkili |
name | varchar(100) | hayır | Grup adı |
description | varchar(255) | evet | Açıklama |
match_type | rule_group.match_type | hayır | Kural eşleşme mantığı (DEFAULT: all) |
multi_trigger | boolean | hayır | Alarm aktifken tekrar tetiklenebilir mi (DEFAULT: false) |
notify_on_reset | boolean | hayır | Reset olduğunda bildirim üretilecek mi (DEFAULT: false) |
priority | int | hayır | Değerlendirme önceliği; düşük değer daha yüksek öncelik (DEFAULT: 1) |
valid_from | timestamp | evet | Kuralın geçerlilik başlangıcı |
valid_to | timestamp | evet | Kuralın geçerlilik bitişi; null ise süresiz |
publish_bit | int | evet | Cihaz publish maskesindeki ilgili bit; register_structure ile örtüşür |
is_active | boolean | hayır | Grup aktif mi (DEFAULT: true) |
create_time | timestamp | hayır | Kayıt oluşturulma zamanı |
update_time | timestamp | hayır | Son güncelleme zamanı |
Örnek Kayıtlar
- Yüksek Akım Alarmı
- Durum Bit Alarmı
- Bağlantı Kaybı Alarmı
{
"id": 1,
"project_id": 1,
"name": "Yüksek Akım Alarmı",
"description": "Akım belirli eşik üzerine çıktığında alarm üretir",
"match_type": "all",
"multi_trigger": false,
"notify_on_reset": true,
"priority": 1,
"valid_from": "2026-04-01T00:00:00Z",
"valid_to": null,
"publish_bit": 1,
"is_active": true,
"create_time": "2026-04-03T09:00:00Z",
"update_time": "2026-04-03T09:00:00Z"
}
Özet: Akım eşik aşımı için AND mantıklı alarm grubu. Tek tetikleme politikası; reset geldiğinde ayrıca bildirim üretilir. publish_bit: 1 ile register_structure bağlantısı kurulmuş.
{
"id": 2,
"project_id": 1,
"name": "Durum Bit Alarmı",
"description": "Register status içindeki belirli bit aktif olduğunda alarm üretir",
"match_type": "all",
"multi_trigger": true,
"notify_on_reset": true,
"priority": 2,
"valid_from": "2026-04-01T00:00:00Z",
"valid_to": null,
"publish_bit": 2,
"is_active": true,
"create_time": "2026-04-03T09:05:00Z",
"update_time": "2026-04-03T09:05:00Z"
}
Özet: Register bit alarmı. multi_trigger: true ile alarm aktifken yeni tetikleme engellenmez; sürekli değişen register bitleri için uygundur.
{
"id": 3,
"project_id": 5,
"name": "Bağlantı Kaybı Alarmı",
"description": "Cihaz veri göndermediğinde bağlantı kaybı bildirimi üretir",
"match_type": "any",
"multi_trigger": true,
"notify_on_reset": true,
"priority": 1,
"valid_from": "2026-04-01T00:00:00Z",
"valid_to": null,
"publish_bit": 4,
"is_active": true,
"create_time": "2026-04-03T09:10:00Z",
"update_time": "2026-04-03T09:10:00Z"
}
Özet: any mantığı ile tanımlanmış bağlantı kaybı senaryosu; stream_gap kuralı tek başına yeterlidir. Bağlantı restore olunca reset bildirimi de üretilir.