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.

