Nouveau : le pare-feu IA surveille chaque module et explique chaque incident en termes simples. Découvrez comment ça marche

Alarm rule cookbook

Dix règles d'alarme prêtes à coller dans le mode JSON d'un profil : échelles de température, limites par appareil, batterie, portes, fuites, défauts et hors ligne.

Chaque recette correspond à une règle. Pour l’utiliser : ouvrez l’onglet Alarm rules du profil, cliquez sur Add rule > Threshold rule (ou Device offline rule), passez en JSON, collez, ajustez les clés et les valeurs numériques, cliquez sur Add to list, puis sur Save rules. Chaque clé doit correspondre exactement à ce qu’envoient vos appareils, y compris la casse.

1. Échelle de température

Trois niveaux de gravité sur une même clé ; le niveau le plus élevé dont la condition est vraie l’emporte.

{
  "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. Une règle, une limite par appareil

Chaque appareil porte sa propre limite sous forme d’attribut serveur ou partagé maxTempThreshold. Les appareils qui n’en ont pas ne sont pas contrôlés.

{
  "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. Bande d’avertissement sous la limite

Un avertissement entre un attribut d’avertissement et la limite critique ; la recette 2 couvre le dépassement de la limite.

{
  "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. Batterie faible

L’hystérésis 3 évite que l’alarme ne clignote lorsque la batterie se recharge au soleil.

{
  "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. Porte ouverte alors que la pression est basse

Deux clés qui peuvent arriver dans des messages séparés. La règle utilise la dernière valeur de chacune.

{
  "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. Porte ouverte trop longtemps

{
  "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
}

La durée est celle de l’appareil : l’appareil doit transmettre pendant que la porte reste ouverte.

7. Fuite qui persiste jusqu’à la réinitialisation

L’alarme ne se désactive pas quand le capteur sèche ; elle attend 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. Code de défaut d’un automate

Tout code d’alarme non nul, le code figurant dans le titre.

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

Pour un statut textuel, utilisez == avec le texte : { "key": "state", "op": "==", "value": "fault" }.

9. Capteur instable

Un contacteur de niveau qui oscille près de son point de commutation. Filtrage par nombre de mesures, plus un amortissement plus strict.

{
  "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. Hors ligne après 15 minutes, avec rappels

{
  "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
}

Les rappels sont envoyés toutes les heures tant que l’alarme est ouverte et que personne ne l’a acquittée.

Ajouter des notifications

Toute recette accepte un bloc notify :

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

Voir Alarm notifications in depth.

Pour un seul topic

Pour les appareils qui publient leurs propres topics, ajoutez "topic" à une feuille : { "key": "temp", "op": ">", "value": 60, "topic": "plant/line2/oven" }. Voir Alarm conditions reference.