A monitoring system that cries wolf is worse than none. Alarm rules have three settings against noise. Debounce makes a condition prove itself before the alarm opens or clears. Hysteresis puts a margin on the clear side. Dampening holds an alarm that keeps flipping.
Debounce
| Campo (JSON) | Etiqueta del formulario | Rango | Por defecto |
|---|---|---|---|
debounce.mode | Contar en: Lecturas consecutivas (count) o Segundos (tiempo del dispositivo) (duration) | count | |
debounce.raise | Activar tras este número de lecturas consecutivas / Activar cuando sea verdadera durante (segundos) | 1 a 86,400 | 1 |
debounce.clear | Desactivar tras este número de lecturas consecutivas / Desactivar cuando sea falsa durante (segundos) | 1 a 86,400 | 1 |
Por lecturas
La alarma se abre en la lectura raise-ésima consecutiva cuya condición sea verdadera, y se cierra en la lectura clear-ésima consecutiva cuya condición sea falsa. Una lectura en sentido contrario reinicia el contador. Con los valores por defecto 1 y 1, la alarma sigue cada lectura.
Solo cuentan las lecturas que contengan una de las claves de la regla. Un mensaje con otras claves no es una lectura para esta regla.
Por tiempo del dispositivo
La alarma se abre cuando la condición ha sido verdadera de forma continua durante raise segundos, medidos según las marcas de tiempo de las lecturas, no según el reloj del servidor. Se cierra de forma simétrica.
Importante
El tiempo solo avanza cuando llega una lectura. Si un dispositivo informa cada 10 minutos, «verdadera durante 60 segundos» se alcanza con la segunda lectura verdadera, 10 minutos después. Si el dispositivo deja de enviar, no se decide nada hasta que vuelva a enviar. Haga que los dispositivos repitan su estado periódicamente, o use una alarma de desconexión para detectar el silencio.
Ejemplo: «puerta abierta durante 120 s» es door_open == true con Segundos (tiempo del dispositivo), activar en 120.
Cambios de severidad
Dentro de una alarma abierta, un cambio de severidad espera el mismo debounce: una subida espera el número o el tiempo de activación, una bajada espera el número o el tiempo de desactivación.
Histéresis
hysteresis (formulario: Histéresis (margen de cierre)) es un número absoluto, 0 o más. Amplía el umbral en el lado de cierre de las comparaciones de orden (>, >=, <, <=):
| Condición | Histéresis | Se abre | Se cierra |
|---|---|---|---|
temperature > 80 | 3 | por encima de 80 | en 77 o menos |
battery < 20 | 5 | por debajo de 20 | en 25 o más |
pressure >= 6 | 0.2 | en 6 o más | por debajo de 5.8 |
La histéresis no se aplica a == ni a !=, y se ignora cuando la regla tiene una condición clear explícita (esa condición decide). Un valor que oscila en el umbral no abre y cierra la alarma en cada lectura.
Dampening
El dampening se aplica a toda regla de umbral. Sin un bloque dampening, se usan los valores por defecto:
| Campo | Significado | Rango | Por defecto |
|---|---|---|---|
maxTransitions | Aperturas y cierres permitidos dentro de la ventana | 2 a 100 | 4 |
windowSec | La ventana | 10 a 86,400 s | 600 |
holdSec | Tiempo que la condición debe permanecer falsa antes de que una alarma retenida se cierre | 1 a 86,400 s | 300 |
Cuando un cierre supondría más de maxTransitions aperturas y cierres dentro de windowSec, el cierre se retiene: la alarma sigue abierta y se marca como Flapping (cronología: Flapping: cierres retenidos). Solo se cierra cuando su condición ha sido falsa durante holdSec segundos de tiempo del dispositivo.
Con los valores por defecto: una alarma que se abrió y se cerró dos veces en 10 minutos y se abre una tercera vez se mantiene abierta en su siguiente cierre hasta que la condición haya sido falsa durante 5 minutos.
Defina sus propios valores en el modo JSON:
"dampening": { "maxTransitions": 6, "windowSec": 1800, "holdSec": 600 }
Ejemplos prácticos
Una sonda de temperatura ruidosa. Las lecturas cada 10 s saltan ±1 °C alrededor de 80.
"severities": [ { "severity": "MAJOR", "condition": { "key": "temperature", "op": ">", "value": 80 } } ],
"debounce": { "mode": "count", "raise": 3, "clear": 3 },
"hysteresis": 2
Se abre en la tercera lectura consecutiva por encima de 80, y se cierra en la tercera lectura consecutiva en 78 o menos.
Una puerta que puede quedar abierta brevemente.
"severities": [ { "severity": "WARNING", "condition": { "key": "door_open", "op": "==", "value": true } } ],
"debounce": { "mode": "duration", "raise": 300, "clear": 1 }
Se abre cuando la puerta ha estado abierta 5 minutos según el reloj del dispositivo (el dispositivo debe informar mientras la puerta está abierta). En modo tiempo, una sola lectura nunca decide: la alarma se cierra con la segunda lectura de cerrada, al menos 1 segundo después de la primera.
Una bomba que cicla a propósito. Una regla sobre una presión que baja en cada ciclo de la bomba oscilaría. Aumente maxTransitions o holdSec para que el ciclo esperado no genere avisos, y mantenga el debounce corto para que un fallo real se detecte rápido.
Elegir los valores
| El dispositivo informa | Debounce sugerido |
|---|---|
| Cada pocos segundos | count de 3 a 5, o duration de 30 a 60 |
| Cada minuto | count de 2 a 3 |
| Cada 10 a 60 minutos | count de 1 a 2. Una regla duration requiere al menos un intervalo de envío. |
| Solo al cambiar | count 1; use el retardo propio del dispositivo, o un disparador «se mantiene así durante» de la tarjeta Reglas |

