rules
rules, bir rule group içindeki tekil koşulları tanımlar. Aynı alarm grubu içinde farklı tipte kurallar birlikte bulunabilir: üç faz akımının eşik üstünde olması, belirli bir register bitin aktif olması, belirli süredir stream gelmemesi gibi. Bu çeşitlilik tek bir tablo içinde rule.type enum'u ile ayrılır.
Bu tablo kuralın tanımını taşır; hangi cihazda aktif olduğunu taşımaz. Aynı kural setinin birçok cihaza bağlanabilmesi bu ayrımla mümkündür.
rule.type Enum Değerleri
| Değer | Anlamı |
|---|---|
threshold | Tek anlık eşik kontrolü |
duration | Belirli süre eşik üstünde/altında kalma |
register_transition | Register eski-yeni değer geçişi |
register_bit | Belirli register bit kontrolü |
stream_gap | Belirli süre stream gelmemesi |
Kolonlar
| Kolon | Tip | Null | Anlamı |
|---|---|---|---|
id | int | hayır | Kural birincil anahtarı |
group_id | int | hayır | Bağlı olduğu rule group; rule_groups.id ile ilişkili |
rule_type | rule.type | hayır | Kural tipi |
variable_id | varchar(30) | evet | Değişken temelli kurallarda hedef değişken; modelde opsiyonel bırakılmıştır |
operator | varchar(10) | evet | Karşılaştırma operatörü: >, <, =, >=, <= |
value | decimal(18,6) | evet | Eşik değeri |
duration_sec | int | evet | Süreli kurallarda gereken süre (saniye) |
old_register_value | varchar(32) | evet | Register transition: beklenen önceki değer |
new_register_value | varchar(32) | evet | Register transition: beklenen yeni değer |
register_bit | int | evet | Register bit kuralı için bit numarası |
create_time | timestamp | hayır | Kayıt oluşturulma zamanı |
update_time | timestamp | hayır | Son güncelleme zamanı |
Örnek Kayıtlar
- IFUND_R Süreli Kural
- IFUND_S Süreli Kural
- IFUND_T Süreli Kural
- Register Bit Kuralı
- Stream Gap Kuralı
{
"id": 1,
"group_id": 1,
"rule_type": "duration",
"variable_id": "IFUND_R",
"operator": ">",
"value": 45.000000,
"duration_sec": 300,
"old_register_value": null,
"new_register_value": null,
"register_bit": null,
"create_time": "2026-04-03T09:15:00Z",
"update_time": "2026-04-03T09:15:00Z"
}
Özet: Alarm grubu 1'in ilk faz kuralı. IFUND_R değeri 45 A üstünde 300 saniye kalırsa duration koşulu sağlanır.
{
"id": 2,
"group_id": 1,
"rule_type": "duration",
"variable_id": "IFUND_S",
"operator": ">",
"value": 45.000000,
"duration_sec": 300,
"old_register_value": null,
"new_register_value": null,
"register_bit": null,
"create_time": "2026-04-03T09:16:00Z",
"update_time": "2026-04-03T09:16:00Z"
}
Özet: Alarm grubu 1'in ikinci faz kuralı. R-S-T üçlüsünün ayrı satırlarda tanımlanması, grup seviyesinde match_type=all ile birlikte çalışır.
{
"id": 3,
"group_id": 1,
"rule_type": "duration",
"variable_id": "IFUND_T",
"operator": ">",
"value": 45.000000,
"duration_sec": 300,
"old_register_value": null,
"new_register_value": null,
"register_bit": null,
"create_time": "2026-04-03T09:17:00Z",
"update_time": "2026-04-03T09:17:00Z"
}
Özet: Alarm grubu 1'in üçüncü faz kuralı. Üç duration satırı birlikte sağlandığında Yüksek Akım Alarmı tetiklenir.
{
"id": 4,
"group_id": 2,
"rule_type": "register_bit",
"variable_id": "REGISTER_STATUS",
"operator": null,
"value": null,
"duration_sec": null,
"old_register_value": null,
"new_register_value": null,
"register_bit": 3,
"create_time": "2026-04-03T09:20:00Z",
"update_time": "2026-04-03T09:20:00Z"
}
Özet: REGISTER_STATUS üstünden bit 3 kontrol edilir. Bit aktif olduğunda grup 2 alarmı tetiklenir.
{
"id": 5,
"group_id": 3,
"rule_type": "stream_gap",
"variable_id": null,
"operator": null,
"value": null,
"duration_sec": 7200,
"old_register_value": null,
"new_register_value": null,
"register_bit": null,
"create_time": "2026-04-03T09:25:00Z",
"update_time": "2026-04-03T09:25:00Z"
}
Özet: 7200 saniye boyunca stream alınmazsa bağlantı kaybı alarmı (grup 3) tetiklenir.