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

Contadores, estadísticas y watchdogs

Referencia de los bloques que recuerdan – Counter, Delta, Statistics, Watchdog e Inicio / fin – y cómo se comporta la memoria de los bloques en Hermetry.

Algunos bloques recuerdan mensajes anteriores: un recuento, el valor previo, una ventana de valores, la hora del último mensaje. Esta página enumera esos bloques y explica cómo se comporta su memoria, lo que importa al desplegar cambios.

Cómo funciona la memoria de los bloques

ReglaDetalle
Una memoria por dispositivoA menos que establezca key, estos bloques mantienen una memoria independiente por cada origen del mensaje: cada dispositivo tiene su propio recuento, valor previo o vigilancia. Establezca key en msg.topic u otra ruta para agrupar de otra forma.
Sobrevive a los reiniciosLa plataforma conserva la memoria y los mensajes en espera; un reinicio o un traslado a otro worker no los pierde. Las esperas se vuelven a armar en su hora de vencimiento original.
Se reinicia al cambiar la configuraciónUn bloque conserva su memoria tras un despliegue cuando su configuración no ha cambiado. Un bloque cuya configuración ha cambiado empieza con una memoria vacía (los mensajes que estaba retención se conservan). Un bloque eliminado, o cuyo tipo ha cambiado, pierde todo.
Se conserva en pausaUn flujo desactivado o en pausa conserva la memoria de sus bloques; un flujo eliminado la pierde.
TamañoComo máximo 10.000 claves por bloque; si se supera, se olvida la clave más antigua. Los mensajes retenidos cuentan contra 16 MiB por bloque.
PruebasUna prueba parte de una memoria vacía, o de una copia de solo lectura de la memoria activa cuando marca Start from the live state and context. Una prueba nunca modifica la memoria activa.

Así pues: si cambia una ventana de Statistics, sus promedios empiezan desde cero; si solo reconecta alrededor de él, continúan.

Contador

Cuenta mensajes por clave, en todo el tiempo o dentro de una ventana deslizante, y añade el recuento al mensaje.

AjusteSignificadoPredeterminadoValores
nEl recuento que envía una copia a reached; vacío o 0 = nuncavacío0 o más
window_msContar solo el último este tiempo; 0 = todos00 a 7 días
reset_at_nEmpezar de nuevo desde 0 al alcanzar noffon, off
keyCada clave tiene su propio recuentomsg.originatoruna ruta
storememory, o persist (se conserva en el contexto persistente del flujo)memorymemory, persist

Salidas: out (cada mensaje, con msg.count), reached (una copia cuando el recuento es n o más). msg.reset = true pone el recuento de la clave a 0. Sin reset_at_n, cada mensaje desde el n-ésimo también va a reached.

Ejemplo: «3 aperturas de puerta en 10 minutos»: n 3, window_ms 10 min, reset_at_n on, reached → Raise alarm.

Delta

La diferencia entre un número y el número anterior de la misma clave: consumo de un contador, pulsos desde el último informe.

AjusteSignificadoPredeterminadoValores
inputEl númeromsg.payloaduna ruta
outputDónde se escribe la diferenciamsg.payload.deltauna ruta
periodDónde escribir los milisegundos desde el valor anteriornoneuna ruta
roundDecimales, aplicados primeronone0 a 15
on_negativeUna caída (reinicio del contador)errorerror (negative_delta), pass (escrito con su signo), zero
skip_zeroDeja pasar un delta cero sin cambios, sin escribirlooffon, off
keyCada clave tiene su propio valor previomsg.originatoruna ruta
seedEl valor previo del primer mensajenone (delta 0)none, latest (el último valor almacenado del dispositivo)
seed_keyLa clave almacenada de la que tomar el valor inicial (seed = latest)hasta 128 caracteres
ts_pathDónde está la hora de la lecturala hora del registrouna ruta

Salidas: out, other (sin valor en la ruta de entrada), error (not_a_number, negative_delta). Tras una caída, el nuevo valor pasa a ser la base en todos los modos. Delta no lee la base de datos por mensaje, por eso es la forma eficiente de calcular consumos.

Statistics

Recuento, suma, promedio, mínimo, máximo, desviación estándar, último valor y tasa sobre los últimos valores o el último periodo, por clave.

AjusteSignificadoPredeterminadoValores
propertyEl númeromsg.payloaduna ruta
windowcount (los últimos size valores) o time (los últimos size ms)countcount, time
sizeNúmero de valores, o la ventana en ms10count: 1 a 10.000; time: 1 ms a 7 días
outputsQué cifrascount, avg, min, maxcualquiera de count, sum, avg, min, max, stddev, last, rate
emiteach mensaje, o una vez por ventana completa (end_of_window)eacheach, end_of_window
keyCada clave tiene su propia ventanamsg.originatoruna ruta

msg.payload se sustituye por la cifra (una salida elegida) o por un objeto de cifras. rate son valores por segundo. Una ventana de tiempo guarda como máximo 10.000 valores. Tras cambiar window a time, establezca size en milisegundos: el valor predeterminado 10 sería 10 ms. Error invalid_value «not a number».

Ejemplo: promedio horario enviado una vez por hora: window time, size 3600000, outputs avg, emit end_of_window.

Watchdog

Avisa cuando los mensajes dejan de llegar: si no llega ningún mensaje de una clave dentro del tiempo, envía un mensaje de timeout; cuando los mensajes vuelven, también lo informa.

AjusteSignificadoPredeterminadoValores
msCuánto tiempo puede estar en silencio una clave1 min100 ms a 7 días
keyCada clave se vigila por separadomsg.originatoruna ruta
repeatEnvía timeout de nuevo cada ms mientras esté en silenciooffon, off

Salidas:

  • timeout: un mensaje nuevo (una nueva ejecución) con msg.payload = la clave, msg.topic del último mensaje, msg.timeout_ms, y el origen del último mensaje, de modo que Raise alarm funciona sobre él.
  • ok: el primer mensaje de una clave tras un timeout, sin cambios.

Los demás mensajes no se pasan. La vigilancia de una clave empieza con su primer mensaje: un dispositivo que nunca envía no se detecta (para eso use una regla de alarma de desconexión; véase Offline alarms). Un mensaje tardío (tras una interrupción) no alimenta ni dispara el watchdog, de modo que una alarma de silencio no se borra con lecturas antiguas. Para vigilar por dispositivo, key debe establecerse en el dispositivo: msg.originator (el predeterminado) o msg.metadata.deviceId.

Inicio / fin

Marca el inicio y el fin de un periodo de actividad.

AjusteSignificadoPredeterminadoValores
msTiempo de calma tras el último mensaje que termina el periodo1 min0 a 7 días
keyCada clave tiene su propio periodomsg.originatoruna ruta

Salidas: start (una copia del primer mensaje de un periodo, de inmediato), end (el último mensaje, ms después de su llegada). Los mensajes intermedios no salen.

Variables como memoria

Para valores que comparten varios bloques o flujos, escriba variables con Set variable o Change y léalas con rutas:

AlmacénAlcanceLímite
flow.xEste flujo1 MiB por flujo
global.xTodos los flujos de la organización4 MiB por organización
flow.persist:x, global.persist:xEl almacén persistente del mismo alcancedentro de los mismos límites

Una escritura por encima de un límite falla con limit y conserva el valor anterior. La pestaña Activity > Data del editor muestra los valores y el grado de ocupación de los almacenes. Véase Action blocks.

Temporizadores

Para «si nada lo cancela en 10 minutos, haz esto» entre flujos, use el bloque de acción Timer con un disparador Named timer. Véanse Action blocks y Trigger blocks.