Alarm koşulunda aritmetik yok, haklısın, “eşik + yüzde 20” ya da “geçen haftaya göre” yazılamıyor. Ben bunu kendi su pompalarımda iki adımda çözdüm.
Birinci adım cihazda: her saniyelik akım yerine her açılış-kapanış döngüsünün özetini gönder. Döngü bitince tek mesaj:
{"cycle.peak_a": 4.1, "cycle.avg_a": 2.3,
"cycle.duration_s": 14.2, "cycle.energy_wh": 0.21}
Yaşlanan motorda önce cycle.duration_s ve cycle.avg_a artıyor. Grafikte günlük ortalama ile çizince aylık trend çok net görünüyor. Mesaj sayısı da düşüyor.
İkinci adım alarm: eşiği sabit sayı yerine cihazın özniteliğinden okut. Motor yeniyken birkaç gün ölç, normal süreyi bul (ör. 12 s), cihaza duration_limit = 14.5 diye bir server attribute yaz. Kural:
"severities": [
{ "severity": "WARNING",
"condition": { "key": "cycle.duration_s", "op": ">",
"value": { "attribute": "duration_limit" } } }
],
"debounce": { "mode": "count", "raise": 3, "clear": 3 }
Debounce 3 sayesinde buzlu bir sabahtaki tek yavaş açılış alarm açmıyor, arka arkaya üç yavaş döngü açıyor. Fırçayı değiştirince özniteliği güncellersin, yarım dakika içinde yeni değer kullanılıyor. 6 A kuralını da kalsın, o sıkışma gibi ani durumlar için.
Öznitelikten eşik okuma: Alarm koşulları referansı.

