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

Referencia de condiciones de alarma

Cómo se comparan las condiciones de alarma: operadores, números frente a texto, grupos all/any, límites por atributo de dispositivo, temas y reglas de varias claves.

Cada severidad de una regla de umbral tiene una condición. Una condición es una única comparación (una hoja) o un grupo de condiciones. Esta página describe cómo Hermetry las evalúa, para que puedas predecir cuándo se abre una alarma.

Forma

Condition = { "key": …, "op": …, "value": …, "topic"?: … }
          | { "all": [ Condition, … ] }
          | { "any": [ Condition, … ] }

El formulario edita una comparación por severidad. Los grupos se escriben en modo JSON.

Operadores

opVerdadero cuando
>el valor es mayor que el umbral
>=mayor o igual que
<menor que
<=menor o igual que
==igual a
!=distinto de

No existe «entre»: usa all con >= y <=. No hay aritmética: una condición no puede decir «punto de consigna + 10» ni «más que el otro sensor». Para ello, calcula una clave derivada en un flujo (consulta Derived values) o usa una fórmula de la tarjeta Rules.

Cómo se comparan los valores

Valor y umbralComparación
Ambos son números, o texto que se lee como número ("23.5", "1e3")Como números. "80" y 80 son iguales.
Cualquier otro caso con == o !=Como texto: true es igual a "true".
Cualquier otro caso con >, >=, <, <=Siempre falso.
El dispositivo envió null== es falso y != es verdadero.

Así, un estado enviado como texto funciona con ==: { "key": "state", "op": "==", "value": "fault" }. Los booleanos también funcionan: { "key": "door_open", "op": "==", "value": true } también coincide con un dispositivo que envía "true".

Umbrales por dispositivo desde atributos

En lugar de un número, el valor puede nombrar un atributo del dispositivo:

{ "key": "temperature", "op": ">", "value": { "attribute": "max_temp" } }

En el formulario, escribe attribute:max_temp en Value.

  • Hermetry lee el atributo server del dispositivo con ese nombre y, después, su atributo shared. Los atributos de cliente no se usan.
  • Un dispositivo que no tiene ese atributo no se comprueba en esa comparación: la hoja es falsa. Asigna el atributo a todos los dispositivos, o añade una segunda severidad con un número fijo.
  • Un atributo modificado se usa en unos 30 segundos.

Esto permite que una sola regla sirva a dispositivos con límites distintos. Define los atributos en la pestaña Attributes de los dispositivos, mediante importación o a través de la API. Consulta Attributes.

Grupos: all y any

{
  "all": [
    { "key": "door_open", "op": "==", "value": true },
    { "key": "pressure", "op": "<", "value": 1.2 }
  ]
}
  • all es verdadero cuando todas las partes son verdaderas; any cuando al menos una lo es.
  • Los grupos pueden anidarse hasta 4 niveles.
  • La condición de una severidad puede contener como máximo 16 comparaciones en total.

Reglas sobre varias claves

Los dispositivos suelen enviar las claves en mensajes separados. Una regla se evalúa con los últimos valores conocidos del dispositivo, no solo con el mensaje que acaba de llegar:

  • Una regla solo se evalúa con un mensaje que contenga al menos una de sus claves (de un tema coincidente). Un mensaje sin ninguna de sus claves no la abre ni la cierra, y no cuenta como muestra para el debounce.
  • Para una clave que el mensaje no trae, la comparación usa el último valor de esa clave que la regla vio en este dispositivo.
  • Una comparación cuya clave la regla nunca ha visto en el dispositivo es falsa.

Ejemplo: el estado de la puerta llega cada minuto y la presión cada diez segundos. La regla all de arriba se abre en cuanto ambas son verdaderas, sea cual sea el mensaje que llegue último.

Los valores recordados se guardan con el estado de la regla. Un dispositivo en silencio durante 30 días pierde ese estado y empieza de cero.

Filtros de tema

Para dispositivos que publican en sus propios temas MQTT, una hoja puede limitarse a un tema:

topicLa hoja se aplica a
ausentemensajes de cualquier tema
"factory/line1/temp"mensajes solo de este tema exacto
nullmensajes solo de los temas por defecto

La misma clave en dos temas cuenta como dos valores distintos. En el formulario, defínelo en Advanced > Only from topic. Consulta MQTT topics and payloads.

Claves

Una clave es una clave de telemetría: sin espacios, no un número suelto, de como máximo 128 caracteres. Las claves distinguen mayúsculas y minúsculas: Temperature y temperature son claves distintas. Una clave que el perfil no declara se acepta con una advertencia; una clave con forma numérica solo si el perfil la declara.

Severidades

Con varias severidades, todas las condiciones se evalúan en cada mensaje y gana la severidad verdadera más alta:

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

A 85 la alarma es Major; a 95 escala a Critical; de nuevo a 85 vuelve a Major (tras el debounce de cierre); por debajo de 70 (menos la histéresis) se cierra.

Lo que una condición no puede hacer

No posibleAlternativa
Comparar dos claves o dos dispositivosUna fórmula de la tarjeta Rules, o un flujo que escriba una clave derivada
Usar la hora del día o un calendarioUna regla de la tarjeta Rules con una ventana horaria
«No ha cambiado durante 10 minutos»Un flujo con un bloque de watchdog o delta
Aritmética en el umbralUna clave derivada, o un atributo por dispositivo
Leer un atributo de cliente como umbralGuardar el límite como atributo de servidor o compartido