Novedad: el cortafuegos de IA supervisa cada módulo y explica cada incidente con palabras sencillas. Vea cómo funciona

Recetario de reglas de alarma

Diez reglas de alarma listas para pegar en el modo JSON de un perfil: escaleras de temperatura, límites por dispositivo, batería, puertas, fugas, fallos y desconexión.

Cada receta es una regla. Para usarla: abra la pestaña Alarm rules del perfil, haga clic en Add rule > Threshold rule (o Device offline rule), cambie a JSON, pegue, ajuste las claves y los números, haga clic en Add to list y, después, en Save rules. Cada clave debe coincidir con lo que envían sus dispositivos, incluidas las mayúsculas y minúsculas.

1. Escalera de temperatura

Tres severidades sobre una misma clave; gana la más alta que sea verdadera.

{
  "type": "high_temperature",
  "title": "{{device.name}}: {{value}} °C ({{severity}})",
  "severities": [
    { "severity": "CRITICAL", "condition": { "key": "temperature", "op": ">", "value": 90 } },
    { "severity": "MAJOR", "condition": { "key": "temperature", "op": ">", "value": 80 } },
    { "severity": "WARNING", "condition": { "key": "temperature", "op": ">", "value": 70 } }
  ],
  "debounce": { "mode": "count", "raise": 2, "clear": 2 },
  "hysteresis": 2,
  "runbook": "Check cooling and airflow. Above 90 °C shut the unit down.",
  "enabled": true
}

2. Una regla, un límite por dispositivo

Cada dispositivo tiene su propio límite como atributo de servidor o compartido maxTempThreshold. Los dispositivos sin este atributo no se comprueban.

{
  "type": "temp_over_limit",
  "title": "{{device.name}}: {{value}} °C, limit {{threshold}}",
  "severities": [
    { "severity": "MAJOR", "condition": { "key": "air_temp", "op": ">", "value": { "attribute": "maxTempThreshold" } } }
  ],
  "debounce": { "mode": "count", "raise": 2, "clear": 2 },
  "enabled": true
}

3. Banda de advertencia por debajo del límite

Una advertencia entre un atributo de advertencia y el límite máximo; la receta 2 cubre los valores por encima del límite.

{
  "type": "temp_warning_band",
  "title": "{{device.name}}: {{value}} °C, getting warm",
  "severities": [
    { "severity": "WARNING", "condition": { "all": [
      { "key": "air_temp", "op": ">", "value": { "attribute": "warnTempThreshold" } },
      { "key": "air_temp", "op": "<=", "value": { "attribute": "maxTempThreshold" } }
    ] } }
  ],
  "enabled": true
}

4. Batería baja

La histéresis 3 evita que la alarma oscile mientras la batería se recupera al sol.

{
  "type": "battery_low",
  "title": "{{device.name}}: battery {{value}} %",
  "severities": [
    { "severity": "MINOR", "condition": { "key": "battery", "op": "<", "value": 10 } },
    { "severity": "WARNING", "condition": { "key": "battery", "op": "<", "value": 20 } }
  ],
  "hysteresis": 3,
  "enabled": true
}

5. Puerta abierta con presión baja

Dos claves que pueden llegar en mensajes separados. La regla usa el último valor de cada una.

{
  "type": "door_open_low_pressure",
  "title": "{{device.name}}: door open with low pressure",
  "severities": [
    { "severity": "MAJOR", "condition": { "all": [
      { "key": "door_open", "op": "==", "value": true },
      { "key": "pressure", "op": "<", "value": 1.2 }
    ] } }
  ],
  "debounce": { "mode": "duration", "raise": 60, "clear": 30 },
  "enabled": true
}

6. Puerta abierta demasiado tiempo

{
  "type": "door_open_long",
  "title": "{{device.name}}: door open for over 5 minutes",
  "severities": [ { "severity": "WARNING", "condition": { "key": "door_open", "op": "==", "value": true } } ],
  "debounce": { "mode": "duration", "raise": 300, "clear": 1 },
  "enabled": true
}

El tiempo es el del dispositivo: el dispositivo debe informar mientras la puerta permanezca abierta.

7. Fuga que permanece hasta el reinicio

La alarma no se borra cuando el sensor se seca; espera a leak_reset.

{
  "type": "water_leak",
  "title": "{{device.name}}: water leak",
  "severities": [ { "severity": "CRITICAL", "condition": { "key": "water_leak", "op": "==", "value": true } } ],
  "clear": { "key": "leak_reset", "op": "==", "value": true },
  "runbook": "Close the main valve and find the leak. The alarm clears when the device reports leak_reset = true, or clear it by hand.",
  "enabled": true
}

8. Código de fallo de un controlador

Cualquier código de alarma distinto de cero, con el código en el título.

{
  "type": "ups_fault",
  "title": "{{device.name}}: UPS alarm code {{value}}",
  "severities": [ { "severity": "MAJOR", "condition": { "key": "ups_a_alarm_code", "op": "!=", "value": 0 } } ],
  "enabled": true
}

Para un estado de texto, use == con el texto: { "key": "state", "op": "==", "value": "fault" }.

9. Sensor intermitente

Un interruptor de nivel que oscila cerca de su punto de conmutación. Filtrado por lecturas, más un amortiguamiento más estricto.

{
  "type": "tank_high_level",
  "title": "{{device.name}}: tank level high",
  "severities": [ { "severity": "MAJOR", "condition": { "key": "level_high", "op": "==", "value": true } } ],
  "debounce": { "mode": "count", "raise": 3, "clear": 5 },
  "dampening": { "maxTransitions": 4, "windowSec": 1800, "holdSec": 900 },
  "enabled": true
}

10. Sin conexión tras 15 minutos, con recordatorios

{
  "type": "device_offline",
  "title": "{{device.name}} is offline",
  "inactivity": { "afterSec": 900, "severity": "MAJOR" },
  "notify": {
    "recipients": [ { "kind": "role", "role": "ADMIN" }, { "kind": "email", "email": "noc@example.com" } ],
    "repeatEverySec": 3600
  },
  "enabled": true
}

Los recordatorios se envían cada hora mientras la alarma esté abierta y nadie la haya reconocido.

Añadir notificaciones

Cualquier receta admite un bloque notify:

"notify": {
  "recipients": [ { "kind": "role", "role": "OWNER" }, { "kind": "email", "email": "oncall@example.com" } ],
  "minSeverity": "MAJOR",
  "repeatEverySec": 1800
}

Consulte Alarm notifications in depth.

Solo para un tema

Para dispositivos que publican sus propios temas, añada "topic" a una hoja: { "key": "temp", "op": ">", "value": 60, "topic": "plant/line2/oven" }. Consulte Alarm conditions reference.