Saltar al contenido principal

RuleNodes

RuleNodes​

Los RuleNodes son los componentes funcionales de una RuleChain en optiCLOUD. Determinan cómo se filtran, enriquecen, transforman, almacenan o transmiten a otros sistemas los mensajes entrantes.

Esta página sirve como orientación práctica sobre los nodos disponibles y sus ámbitos de uso:

  • ¿Qué nodos existen?
  • ¿Para qué se utilizan?
  • ¿Qué salidas o relaciones tienen?

Visión general por categorías​

Nodos de filtro​

RuleNodeFinalidad
Message Type FilterDeja pasar solo determinados tipos de mensaje
Message Type SwitchDistribuye los mensajes por distintas rutas según el tipo de mensaje
File Type SwitchBifurca los mensajes de archivo según el tipo de archivo
File Names FilterFiltra los nombres de archivo por prefijos
Device FilterLimita el procesamiento a determinados dispositivos
Script (Filter)Ejecuta una lógica de filtrado definida libremente mediante JavaScript
SwitchDirige los mensajes a salidas dinámicas mediante un script
Check Existence FieldsComprueba si existen campos en el mensaje o en los metadatos
GPS Geofencing FilterDeja pasar solo los mensajes dentro de un geofence

Nodos de acción​

RuleNodeFinalidad
Save TimeseriesAlmacena telemetría como serie temporal
Save AttributesAlmacena atributos en un scope seleccionado
Save AlarmsAlmacena estados de alarma a partir de mensajes de alarma
Create AlarmCrea o actualiza una alarma
Clear AlarmFinaliza una alarma existente
Alarm CounterCuenta alarmas dentro de una ventana de tiempo
LogEscribe salidas de depuración o de registro
GeneratorGenera mensajes periódicamente
Message CountCuenta los mensajes entrantes y publica el contador
DelayRetrasa el reenvío de un mensaje
Aggregate OSF FileLee archivos OSF y genera telemetría a partir de ellos
Aggregate JSONL FileLee archivos JSONL y genera telemetría a partir de ellos
Process Raw Data FileProcesa operaciones de archivo en el almacenamiento de blobs
Generate ReportCrea informes para un intervalo de tiempo definido
Device SystemAgrega datos de varios dispositivos
GPS Geofencing EventsGenera eventos al entrar o salir de un geofence
RPC Call RequestEnvía una llamada RPC a un dispositivo
RPC Call ReplyResponde a una llamada RPC entrante

Nodos de enriquecimiento​

RuleNodeFinalidad
Originator AttributesCarga atributos del elemento de origen en los metadatos
Originator TelemetryCarga telemetría del elemento de origen en los metadatos
Originator FieldsAñade datos maestros del elemento de origen
Tenant DetailsAñade información del tenant

Nodos de transformación​

RuleNodeFinalidad
Script (Transform)Modifica el mensaje, los metadatos o el tipo de mensaje mediante JavaScript
To EmailConstruye un objeto de correo electrónico a partir de un mensaje

Nodos externos​

RuleNodeFinalidad
REST API CallEnvía datos a una interfaz REST externa
MQTTPublica mensajes en un broker MQTT
KafkaPublica mensajes en un topic de Kafka
RabbitMQEnvía mensajes a RabbitMQ
AWS SQSEnvía mensajes a una cola SQS
AWS SNSPublica mensajes en un topic de SNS
GCP Pub/SubPublica mensajes en Google Pub/Sub
Send EmailEnvía un correo electrónico mediante SMTP

Nodos de Scheduler​

RuleNodeFinalidad
Create Scheduled TaskPrograma una ejecución única con retraso
Clear Scheduled TaskElimina una tarea programada anteriormente

Nodos de eventos y alarmas​

RuleNodeFinalidad
Complex AlarmCrea alarmas a partir de patrones complejos en tiempo real
Complex Event ProcessingEvalúa datos de archivos con reglas de eventos
Enrich AlarmCompleta alarmas existentes con información adicional

Vista general detallada​

Nodos de filtro​

Message Type Filter​

Categoría: Filtro
Salidas: True, False

El nodo comprueba si el tipo de mensaje del mensaje entrante figura en una lista configurada. Si coincide, el mensaje continúa por True; en caso contrario, por False.

Configuración​

LabelCampo obligatorioDescripción
Message Types FilterSíLista de tipos de mensaje permitidos. Debe haber al menos un tipo introducido.

Entre los valores admitidos se encuentran POST_ATTRIBUTES_REQUEST, POST_TELEMETRY_REQUEST, TO_SERVER_RPC_REQUEST, TO_DEVICE_RPC_REQUEST, ACTIVITY_EVENT, INACTIVITY_EVENT, CONNECT_EVENT, DISCONNECT_EVENT, BLOB_STORE_REQUEST y POST_ALARMS.

Ejemplo​

Utilice este nodo cuando, por ejemplo, solo deban seguir procesándose datos de telemetría. En ese caso se configura POST_TELEMETRY_REQUEST y se conecta mediante la salida TRUE con otro nodo, que entonces recibirá con seguridad únicamente mensajes del tipo POST_TELEMETRY_REQUEST.


Message Type Switch​

Categoría: Filtro
Salidas: una por tipo de mensaje más Other

El nodo distribuye los mensajes a salidas fijas según su tipo de mensaje. Es adecuado como distribuidor temprano en una RuleChain cuando los distintos tipos de mensaje deben procesarse en ramas separadas.

Configuración​

Este nodo no tiene opciones configurables. Las salidas están definidas de forma fija.

SalidaCondición
POST_ATTRIBUTESEl tipo de mensaje es POST_ATTRIBUTES_REQUEST
POST_TELEMETRYEl tipo de mensaje es POST_TELEMETRY_REQUEST
POST_ALARMSEl tipo de mensaje es POST_ALARMS
BLOB_STORE_REQUESTEl tipo de mensaje es BLOB_STORE_REQUEST
RPC_REQUEST_FROM_DEVICEEl tipo de mensaje es TO_SERVER_RPC_REQUEST
RPC_REQUEST_TO_DEVICEEl tipo de mensaje es TO_DEVICE_RPC_REQUEST
ACTIVITY_EVENTEl tipo de mensaje es ACTIVITY_EVENT
INACTIVITY_EVENTEl tipo de mensaje es INACTIVITY_EVENT
CONNECT_EVENTEl tipo de mensaje es CONNECT_EVENT
DISCONNECT_EVENTEl tipo de mensaje es DISCONNECT_EVENT
OtherTodos los demás tipos de mensaje

Ejemplo​

En una Root RuleChain, este nodo puede situarse directamente después de la entrada para dividir la telemetría, los atributos, las alarmas, los mensajes RPC y las operaciones de archivo en ramas de procesamiento separadas.


File Type Switch​

Categoría: Filtro
Salidas: OSF, JSONL, Other

El nodo bifurca los mensajes de archivo según la extensión del archivo. Se utiliza en pipelines de archivos, una vez que una operación de archivo se ha reconocido como BLOB_STORE_REQUEST.

Configuración​

Este nodo no tiene opciones configurables. El reconocimiento se realiza a partir de la extensión del archivo en los metadatos.

SalidaExtensiones de archivo reconocidas
OSF.osf, .osfz
JSONL.log, .log.gz
OtherTodas las demás extensiones de archivo

Ejemplo​

Dirija los archivos .osf, por ejemplo, a Aggregate OSF File.


File Names Filter​

Categoría: Filtro
Salidas: True, False

El nodo solo deja que los mensajes de archivo continúen por True si el nombre del archivo comienza con uno de los prefijos configurados.

Configuración​

LabelCampo obligatorioDescripción
File PrefixesSíLista de prefijos de nombre de archivo. La comprobación distingue entre mayúsculas y minúsculas.

Notas​

  • Una lista de prefijos vacía hace que todos los mensajes salgan por False.
  • El nombre del archivo se lee de los metadatos del mensaje, normalmente de fileName.

Ejemplo​

Si un dispositivo carga archivos con data_ y config_, pueden utilizarse dos File Names Filter para seguir procesando por separado ambos grupos de archivos.


Device Filter​

Categoría: Filtro
Salidas: True, False

El nodo limita el procesamiento a determinados dispositivos. Según el ajuste, la lista de dispositivos puede utilizarse como lista de permitidos o como lista de bloqueados.

Configuración​

LabelCampo obligatorioDescripción
DevicesSíSelección de dispositivos mediante selección múltiple.
Allow selected devicesSíActivado: solo los dispositivos seleccionados salen por True. Desactivado: los dispositivos seleccionados se bloquean.

Salidas​

SalidaCondición
TrueEl dispositivo está permitido o no está bloqueado
FalseEl dispositivo no está permitido o está bloqueado explícitamente

Ejemplo​

Si una regla debe ejecutarse solo para determinados dispositivos, puede colocarse el DeviceFilter antes de la regla, de modo que solo se reenvíe a la regla siguiente una selección de los dispositivos.


Script (Filter)​

Categoría: Filtro
Salidas: True, False

El nodo ejecuta una función JavaScript. Si el script devuelve true, el mensaje continúa por True. Con false o en caso de error del script, continúa por False.

Configuración​

LabelCampo obligatorioDescripción
Filter FunctionSíFunción JavaScript con la firma Filter(msg, metadata, msgType).

Contexto del script​

VariableDescripción
msgCuerpo del mensaje en JSON
metadataMetadatos del mensaje
msgTypeTipo de mensaje

Ejemplo​

var threshold = parseFloat(metadata.tempThreshold) || 50;
return msg.temperature > threshold;

Switch​

Categoría: Filtro
Salidas: dinámicas mediante script

El nodo dirige un mensaje a una o varias salidas con nombre. Los nombres de las salidas los devuelve una función JavaScript como array.

Configuración​

LabelCampo obligatorioDescripción
Switch FunctionSíFunción JavaScript con la firma Switch(msg, metadata, msgType).

El script debe devolver un array de cadenas de texto. Cada cadena corresponde al nombre de una salida.

Notas​

  • Los nombres de salida no conectados se ignoran.
  • Un array vacío descarta el mensaje.
  • Para todos los posibles valores devueltos deben crearse conexiones adecuadas en la RuleChain.

Ejemplo​

Con la siguiente función se puede, por ejemplo, comprobar el valor de temperatura de un mensaje y reenviar los mensajes de forma distinta según el valor.

  • La conexión "highTemp" podría dirigirse, por ejemplo, a un nodo de alarma que genere una alarma "High Temperature"
  • La conexión "lowTemp" podría dirigirse, por ejemplo, a un nodo de alarma que genere una alarma "Low Temperature"
  • La conexión "normalTemp" podría dirigirse, por ejemplo, a un nodo que establezca un atributo "TempStatus = OK"
function nextRelation(msg) {
if(msg.temperature > 50){
return ['highTemp'];
} else if (msg.temperature < 20){
return ['lowTemp'];
} else {
return ['normalTemp'];
}

}
return nextRelation(msg);

Check Existence Fields​

Categoría: Filtro
Salidas: True, False

El nodo comprueba si determinados campos existen en el cuerpo del mensaje y/o en los metadatos. De este modo se puede proteger a los nodos siguientes frente a mensajes incompletos.

Configuración​

LabelCampo obligatorioDescripción
Message DataNoNombres de campo que deben existir en el cuerpo del mensaje.
Message MetadataNoNombres de campo que deben existir en los metadatos.
Check All Keys PresentSíActivado: deben existir todos los campos indicados. Desactivado: debe existir al menos un campo.

Al menos uno de los dos campos messageNames o metadataNames debe contener entradas.

Ejemplo​

Antes de un nodo Script se puede comprobar, por ejemplo, si todos los canales utilizados en el script también están presentes en el mensaje. Esto evita que el script falle y reduce la complejidad del script, en el que de lo contrario habría que tomar precauciones mediante condiciones if/else para comprobar si existen los canales. Si este nodo se coloca antes de un nodo Script, en el nodo Script se puede dar por supuesto que los canales están presentes en el mensaje.


GPS Geofencing Filter​

Categoría: Filtro
Salidas: True, False

El nodo comprueba si las coordenadas GPS se encuentran dentro de un geofence definido. La comprobación no tiene estado y evalúa en cada caso el mensaje actual.

Configuración​

LabelCampo obligatorioDescripción
Latitude Key NameSíNombre de campo de la latitud en el cuerpo del mensaje.
Longitude Key NameSíNombre de campo de la longitud en el cuerpo del mensaje.
Fetch Perimeter Info from MetadataSíActivado: la definición del geofence se lee de los metadatos. Desactivado: el geofence se configura de forma estática en el nodo.
Perimeter TypeSí, con configuración estáticaCircle o Polygon.
Circle-FelderSí, con círculoCentro, radio y unidad del círculo.
Polygon DefinitionSí, con polígonoDefinición del polígono en GeoJSON o WKT.

Nota​

Para los eventos de entrada/salida basados en estado se utiliza GPS Geofencing Events.

Ejemplo​

Procese, por ejemplo, la telemetría solo cuando un vehículo se encuentre dentro de una zona definida; de lo contrario, la telemetría se descarta.


Nodos de acción​

Save Timeseries​

Categoría: Acción
Salidas: Success, Failure

El nodo almacena en la base de datos los datos de telemetría del cuerpo del mensaje como valores de series temporales.

Configuración​

LabelCampo obligatorioDescripción
Default TTLSíVida útil de los puntos de datos almacenados, en segundos. 0 significa que no hay eliminación automática.
Enable Type CastSíConvierte valores numéricos o booleanos de cadenas de texto a tipos de datos nativos.

Entrada​

El tipo de mensaje debe ser POST_TELEMETRY_REQUEST. El cuerpo del mensaje debe ser un objeto JSON o contener un array de objetos JSON con marca de tiempo ts.


Save Attributes​

Categoría: Acción
Salidas: Success, Failure

El nodo almacena los pares clave-valor del cuerpo del mensaje como atributos de la entidad de origen.

Configuración​

LabelCampo obligatorioDescripción
Attribute ScopeSíScope de destino de los atributos.
Enable Type CastSíConvierte valores numéricos o booleanos de cadenas de texto a tipos de datos nativos.
ScopeSignificado
CLIENT_SCOPEAtributos notificados por el dispositivo y visibles para el dispositivo.
SHARED_SCOPEAtributos establecidos en el lado del servidor que pueden distribuirse al dispositivo.
SERVER_SCOPEAtributos internos del servidor que no se envían al dispositivo.

Entrada​

El cuerpo del mensaje debe ser un objeto JSON. Cada clave se almacena como nombre de atributo.


Save Alarms​

Categoría: Acción
Salidas: Activated, Deactivated, Sustained

El nodo procesa mensajes del tipo POST_ALARMS y almacena estados de alarma en la base de datos. Con ello refleja los cambios de estado de las alarmas.

Salidas​

SalidaSignificado
ActivatedSe ha abierto una alarma nueva o una alarma eliminada ha vuelto a estar activa.
DeactivatedSe ha finalizado una alarma activa.
SustainedUna alarma ya activa sigue activa.

Configuración​

LabelCampo obligatorioDescripción
PropagateSíIndica si las alarmas se propagan a entidades superiores.

Entrada​

El mensaje debe ser del tipo POST_ALARMS y contener datos de alarma conforme al modelo de alarmas de la plataforma.


Create Alarm​

Categoría: Acción
Salidas: Created, Updated, False

El nodo crea una alarma para el origen del mensaje o actualiza una alarma ya existente del mismo tipo. Los detalles de la alarma se construyen mediante JavaScript a partir del mensaje y de los metadatos.

Salidas​

SalidaSignificado
CreatedSe ha creado una alarma nueva.
UpdatedSe ha actualizado una alarma existente de este tipo.
FalseEl script no ha generado ninguna alarma.

Configuración​

LabelCampo obligatorioDescripción
Alarm Details BuilderSíFunción JavaScript Details(msg, metadata, msgType) para los detalles de la alarma.
Alarm TypeSíTipo de alarma. Admite patrones ${metadata.key}.
Alarm SeveritySíNivel de gravedad: CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE.
PropagateSíPropaga la alarma a entidades superiores.

Metadatos tras el procesamiento​

El nodo añade, entre otros, alarmType, alarmIsNew, alarmSeverity y alarmId.

Ejemplo​

Un Script Filter anterior comprueba msg.temperature > 80. Con True, este nodo crea una alarma HighTemperature con nivel de gravedad MAJOR. En los detalles podría haber, por ejemplo, una función que registre en los detalles el valor máximo de temperatura mientras una alarma haya estado activa y actualizada

var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
if (parseFloat(details.highestTemp) < msg.temperature){
details.highestTemp = msg.temperature;
}
}
return details;

Clear Alarm​

Categoría: Acción
Salidas: Cleared, False

El nodo finaliza una alarma activa del tipo configurado para el origen del mensaje.

Salidas​

SalidaSignificado
ClearedSe ha encontrado y finalizado una alarma activa coincidente.
FalseNo se ha encontrado ninguna alarma activa coincidente.

Configuración​

LabelCampo obligatorioDescripción
Alarm Details BuilderSíFunción JavaScript para los detalles finales de la alarma al finalizar.
Alarm TypeSíTipo de alarma, que debe coincidir exactamente con la alarma generada anteriormente.

Metadatos tras el procesamiento​

El nodo añade alarmType y alarmId.

Ejemplo​

Si un dispositivo vuelve a notificar temperature < 70, Clear Alarm puede finalizar la alarma HighTemperature creada anteriormente.

información

¡El tipo de alarma distingue entre mayúsculas y minúsculas! Si con un nodo Create Alarm se ha creado una alarma del tipo HighTemperature, ese mismo tipo de alarma HighTemperature debe introducirse también en el nodo Clear Alarm para que pueda cancelarse (cleared).


Alarm Counter​

Categoría: Acción
Salidas: Success, Failure

El nodo cuenta alarmas según criterios configurados dentro de una ventana de tiempo y almacena los resultados como atributos de servidor en el origen del mensaje.

Configuración​

El nodo contiene una lista de definiciones de contadores.

LabelCampo obligatorioDescripción
Find by Field NameSíCampo de alarma por el que se filtra, p. ej., severity o type.
With Field ValueSíValor que debe tener el campo, p. ej., CRITICAL.
Save in Server AttributeSíNombre del atributo de servidor en el que se almacena el contador.
Time Period Alarm ConsideredSíVentana de tiempo considerada, en segundos. 0 significa sin restricción temporal.

Ejemplo​

Con

  • fieldName = severity
  • fieldValue = CRITICAL
  • attributeName = criticalAlarms24h
  • periodInSeconds = 86400

se cuenta el número de alarmas críticas de las últimas 24 horas y se almacena en el atributo de servidor criticalAlarms24h.


Log​

Categoría: Acción
Salidas: Success, Failure

El nodo escribe en el log del servidor un texto generado mediante JavaScript y reenvía el mensaje original sin modificarlo.

Configuración​

LabelCampo obligatorioDescripción
Log FunctionSíFunción JavaScript ToString(msg, metadata, msgType) que devuelve el texto del log.

Notas​

  • El nodo está pensado sobre todo para el desarrollo, el análisis y la corrección de errores.
  • Debe utilizarse con moderación y, preferiblemente, solo tras consultarlo con Optimeas, ya que un nodo Log en realidad solo tiene sentido si antes se han producido errores que, dado el caso, el propio usuario no puede resolver.

Generator​

Categoría: Acción
Salidas: Success, Failure

El nodo genera mensajes periódicamente mediante JavaScript y los introduce en la RuleChain. Puede utilizarse para pruebas, simulaciones o procesos programados en el tiempo.

Configuración​

LabelCampo obligatorioDescripción
Message CountSíNúmero de mensajes que se deben generar. 0 significa ilimitado.
Period in SecondsSíIntervalo entre los mensajes generados, en segundos.
OriginatorSíDispositivo de origen de los mensajes generados.
Generator FunctionSíFunción JavaScript Generate(prevMsg, prevMetadata, prevMsgType).

La función debe devolver msg, metadata y msgType.

Ejemplo​

Si, por ejemplo, se quiere crear y probar una RuleChain pero en ese momento no se dispone de un dispositivo real, o de uno que justo en ese momento envíe datos en directo, se pueden generar mensajes artificiales con el nodo Generator. Para una prueba adecuada, estos mensajes generados artificialmente deberían reflejar lo mejor posible los mensajes previstos de un dispositivo real.

El siguiente ejemplo genera mensajes con:

Canales de telemetría: {"temperature": 42} y {"humidity": 77}

Metadatos: {"data": 40}

Tipo: POST_TELEMETRY_REQUEST

var msg = { temperature: 42, humidity: 77 };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

En el ejemplo anterior se trata de mensajes estáticos con siempre los mismos valores (42, 77, 40). Sin embargo, un Generator también puede generar datos variables, por ejemplo mediante:

var temp = Math.floor(Math.random() * max);
var hum = Math.floor(Math.random() * max);
var meta = Math.floor(Math.random() * max);

var msg = { temperature: temp, humidity: hum };
var metadata = { data: meta };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

Nota​

En entornos de producción, el intervalo de tiempo debe elegirse con cuidado para no generar una carga de mensajes innecesariamente alta.


Message Count​

Categoría: Acción
Salidas: Success, Failure

El nodo cuenta mensajes dentro de un intervalo de tiempo y publica el valor del contador como telemetría.

Configuración​

LabelCampo obligatorioDescripción
Interval in SecondsSíDuración de la ventana de recuento, en segundos.
Output Timeseries Key PrefixSíClave de telemetría para el valor del contador.

Salida​

Al final de cada intervalo se genera un mensaje POST_TELEMETRY_REQUEST, p. ej.:

{
"messageCount": 42
}

Los mensajes entrantes se reenvían además sin modificar por Success.


Delay​

Categoría: Acción
Salidas: Success, Failure

El nodo retiene los mensajes durante una duración configurada y después los reenvía. El retraso puede determinarse de forma estática o mediante metadatos.

Configuración​

LabelCampo obligatorioDescripción
Use Metadata Period PatternSíActiva un retraso dinámico mediante metadatos.
Period in SecondsSí, si es estáticoRetraso estático en segundos.
Period in Seconds PatternSí, si es dinámicoCampo de metadatos o expresión ${...} para el retraso.
Max Pending MessagesSíNúmero máximo de mensajes almacenados temporalmente.

Notas​

  • En caso de reinicio del servidor, los mensajes en espera se pierden, ya que no se almacenan de forma persistente.
  • Cuando se alcanza el número máximo de mensajes, los mensajes nuevos salen por Failure.

Aggregate OSF File​

Categoría: Acción
Salidas: Success, Failure

El nodo carga un archivo OSF referenciado en un BLOB_STORE_REQUEST y lo procesa.

Entrada y salida​

  • Entrada: BLOB_STORE_REQUEST con el método GET.
  • Los metadatos deben contener la referencia al archivo almacenado.
  • Por cada intervalo de tiempo reconocido, el nodo genera un mensaje POST_TELEMETRY_REQUEST con los valores de medición.

Cadena de procesamiento​

File Type Switch [OSF]
-> Aggregate OSF File [Success]
-> Save Timeseries

Aggregate JSONL File​

Categoría: Acción
Salidas: Success, Failure

El nodo carga un archivo JSONL de un BLOB_STORE_REQUEST y lo procesa.

Entrada y salida​

  • Entrada: BLOB_STORE_REQUEST con el método GET.
  • El archivo debe contener JSONL válido.
  • Cada línea genera un mensaje POST_TELEMETRY_REQUEST por Success.

Cadena de procesamiento​

File Type Switch [JSONL]
-> Aggregate JSONL File [Success]
-> Save Timeseries

Process Raw Data File​

Categoría: Acción
Salidas: Download, Upload, Delete, Other

El nodo clasifica los mensajes BLOB_STORE_REQUEST según la operación de archivo y los dirige a la salida correspondiente.

Configuración​

LabelCampo obligatorioDescripción
Selected ScopesSíScopes de atributos que deben procesarse.
Selected MethodsSíMétodos HTTP u operaciones de archivo que deben reenviarse.
MétodoSalidaSignificado
PUTUploadEl archivo se ha cargado.
GETDownloadEl archivo debe descargarse.
DELETEDeleteEl archivo se ha eliminado.
otrosOtherOperación desconocida o no configurada.

Ejemplo​

Upload puede conectarse a File Type Switch para distinguir además entre archivos OSF y JSONL.


Generate Report​

Categoría: Acción
Salidas: Success, Failure

El nodo genera un informe para el origen del mensaje durante una ventana de tiempo configurada.

Configuración​

ÁreaCampos
Tipo de informereportType con valores como DEVICE_ACTIVITY, TELEMETRY, DEVICE_STATISTIC, ALARM, OSF_DATA, JASPER_TEMPLATE.
Campos condicionalesalarmSearchStatus, templateId, keys, sources, según el tipo de informe.
Ventana de tiempouseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Ejemplo​

Para una exportación diaria de telemetría se puede configurar reportType = TELEMETRY con una ventana de tiempo de un día y las claves de telemetría deseadas.


Device System​

Categoría: Acción
Salidas: Success, Failure

El nodo procesa datos procedentes de un Device System. Para ello se agregan o correlacionan datos de varios dispositivos relacionados entre sí.

Configuración​

El nodo no tiene opciones de UI configurables. La versión interna la establece la plataforma.

Notas​

  • El origen debe pertenecer a un Device System configurado.
  • La estructura del Device System se lee de la base de datos.
  • El nodo solo es relevante si se utiliza la función Device System.

GPS Geofencing Events​

Categoría: Acción
Salidas: Entered, Left, Inside, Outside

El nodo realiza el seguimiento del estado de geofence por dispositivo y genera eventos al entrar o salir de una zona. A diferencia del GPS Geofencing Filter, este nodo tiene estado.

Configuración​

Los campos de coordenadas y de geofence corresponden a los del GPS Geofencing Filter. Además se configuran duraciones mínimas:

LabelDescripción
Minimal Inside DurationDuración que un dispositivo debe permanecer dentro de la zona antes de que se genere Entered.
Inside Duration UnitUnidad de tiempo para minInsideDuration.
Minimal Outside DurationDuración fuera de la zona antes de que se genere Left.
Outside Duration UnitUnidad de tiempo para minOutsideDuration.

Salidas​

SalidaSignificado
EnteredEl dispositivo ha permanecido dentro de la zona el tiempo suficiente y antes estaba fuera.
LeftEl dispositivo ha permanecido fuera de la zona el tiempo suficiente y antes estaba dentro.
InsideEl dispositivo está dentro, pero aún no se ha alcanzado la duración mínima.
OutsideEl dispositivo está fuera, pero aún no se ha alcanzado la duración mínima.

RPC Call Request​

Categoría: Acción
Salidas: Success, Failure, Timeout

El nodo envía una llamada RPC desde el servidor a un dispositivo y espera la respuesta.

Configuración​

LabelCampo obligatorioDescripción
TimeoutSíTiempo de espera en segundos antes de que el mensaje continúe por Timeout.

Entrada y salida​

El cuerpo del mensaje debe contener method y params. El origen debe ser un dispositivo. Con Success, la respuesta del dispositivo sustituye al cuerpo del mensaje.

Ejemplo​

{
"method": "emergencyShutdown",
"params": { "reason": "HighTemperature" }
}
información

El dispositivo debe estar configurado de forma adecuada para poder ejecutar también las Remote Procedure Calls concretas.


RPC Call Reply​

Categoría: Acción
Salidas: Success, Failure

El nodo devuelve una respuesta a una solicitud RPC procedente del dispositivo. El contenido de la respuesta se forma a partir del cuerpo del mensaje actual.

Configuración​

LabelCampo obligatorioDescripción
Request ID Metadata AttributeNoCampo de metadatos con el ID de la solicitud RPC.

Entrada​

El mensaje debe ser del tipo TO_SERVER_RPC_REQUEST. serviceId, sessionId y requestId normalmente los establece la plataforma.


Nodos de enriquecimiento​

Originator Attributes​

Categoría: Enriquecimiento
Salidas: Success, Failure

El nodo lee de la base de datos los atributos y los últimos valores de telemetría del origen y los escribe en los metadatos del mensaje.

Prefijos en los metadatos​

OrigenPrefijo en los metadatos
Atributos de clientecs_
Atributos sharedshared_
Atributos de servidorss_
Última telemetríasin prefijo

Configuración​

LabelCampo obligatorioDescripción
Client AttributesNoAtributos de cliente que se añaden como cs_<name>.
Shared AttributesNoAtributos shared que se añaden como shared_<name>.
Server AttributesNoAtributos de servidor que se añaden como ss_<name>.
Latest TimeseriesNoÚltimos valores de telemetría, que se añaden sin prefijo.
Tell FailureSíActivado: los valores que faltan provocan Failure. Desactivado: los valores que faltan se omiten.

Debe introducirse al menos una clave de atributo o de telemetría.

Ejemplo​

Si, por ejemplo, se quiere definir manualmente un valor de offset para un canal de temperatura, se podría crear un atributo de servidor con la forma offset : 5. Mediante este nodo se podría leer ese valor y enriquecer los metadatos para seguir trabajando con él, seleccionando el canal offset en Server Attributes. En el nodo Script siguiente se puede acceder entonces a este valor mediante:

var offset = metadata.ss_offset;
var correctedTemperature = msg.temperature + offset;
return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Telemetry​

Categoría: Enriquecimiento
Salidas: Success, Failure

El nodo lee valores históricos de telemetría del origen dentro de una ventana de tiempo y los añade a los metadatos.

Configuración​

ÁreaCampos
Selección de datoslatestTsKeyNames, fetchMode con FIRST, LAST o ALL.
Campos adicionales con ALLaggregation, orderBy, limit.
Ventana de tiempouseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Notas​

  • Con FIRST o LAST se añade un único valor por clave.
  • Con ALL los valores se almacenan en los metadatos como un array JSON.

Ejemplo​

Para una comparación con el promedio de los últimos cinco minutos, se puede cargar temperature con fetchMode = ALL y evaluarlo a continuación en un script Transform.

*Nodo Script


var temperatureArray = metadata.temperatureArray;
var total = 0;
var avgTemp = 0;

for (var i = 0; i < temperatureArray.length; i++) {
total += temperatureArray[i];
}

if (temperatureArray.length > 0) {
avgTemp = total / temperatureArray.length;
}

msg.avgTemp = avgTemp;

return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Fields​

Categoría: Enriquecimiento
Salidas: Success, Failure

El nodo lee campos de datos maestros del origen, por ejemplo el nombre o el tipo, y los escribe en los metadatos con nombres configurables.

Configuración​

LabelCampo obligatorioDescripción
Fields MappingSíAsignación de nombres de campo de la entidad a claves de metadatos.
Campo de origenSignificado
nameNombre visible del dispositivo
typeTipo de entidad, DEVICE
labelLabel de la entidad
additionalInfoInformación adicional como JSON
createdTimeFecha de creación en milisegundos de época (epoch)

Ejemplo​

Con name -> deviceName, un nodo To Email posterior puede utilizar ${deviceName} en el asunto.


Tenant Details​

Categoría: Enriquecimiento
Salidas: Success, Failure

El nodo añade datos de contacto y de dirección del tenant al cuerpo del mensaje o a los metadatos.

Configuración​

LabelCampo obligatorioDescripción
DetailsSíCampos del tenant seleccionados. Debe seleccionarse al menos un campo.
Add Details to MetadataSíActivado: los valores se escriben en los metadatos. Desactivado: los valores se escriben en el cuerpo del mensaje.

Los campos disponibles son TITLE, EMAIL, PHONE, COUNTRY, CITY, STATE, ZIP, ADDRESS, ADDRESS2 y ADDITIONAL_INFO.


Nodos de transformación​

Script (Transform)​

Categoría: Transformación
Salidas: Success, Failure

El nodo modifica el cuerpo del mensaje, los metadatos y/o el tipo de mensaje mediante JavaScript. El resultado del script se transmite a los nodos siguientes.

Configuración​

LabelCampo obligatorioDescripción
Transform FunctionSíFunción JavaScript Transform(msg, metadata, msgType).

Valor devuelto​

El script debe devolver un objeto con msg, metadata y msgType.

Ejemplo​

var newMsg = {};
newMsg.temperatureF = msg.temperature * 9 / 5 + 32;
newMsg.humidity = msg.humidity;

return {
msg: newMsg,
metadata: metadata,
msgType: msgType
};

To Email​

Categoría: Transformación
Salidas: Success, Failure

El nodo crea un objeto de correo electrónico a partir del mensaje actual y sus metadatos.

Configuración​

LabelCampo obligatorioDescripción
FromSíDirección del remitente.
ToSíDirección del destinatario o varios destinatarios separados por comas.
CCNoDestinatarios en CC.
BCCNoDestinatarios en BCC.
SubjectSíAsunto.
BodySíContenido del correo electrónico.

Todos los campos admiten marcadores de posición con el formato ${metadataKey}.

información

El nodo to Email solo genera el correo electrónico. El correo se envía con el nodo Send Email, que se encarga de la comunicación con el servidor SMTP.

Cadena de procesamiento​


Nodos externos​

REST API Call​

Categoría: Externo
Salidas: Success, Failure

El nodo envía una solicitud HTTP a una interfaz REST externa. El cuerpo del mensaje actual se utiliza como payload de la solicitud.

Configuración​

LabelCampo obligatorioDescripción
Endpoint URL PatternSíURL de destino. Admite marcadores de posición ${metadata}.
Request MethodSíMétodo HTTP: GET, POST, PUT, DELETE.
Use Simple Client HTTP FactoryNoUtiliza un cliente HTTP sencillo, p. ej., para respuestas grandes.
HeadersNoEncabezados HTTP como lista clave-valor.

Salida​

Si tiene éxito, status, statusCode, statusReason y headers se escriben en los metadatos. El Response Body pasa a ser el nuevo cuerpo del mensaje.


MQTT​

Categoría: Externo
Salidas: Success, Failure

El nodo publica el cuerpo del mensaje actual en un broker MQTT externo. El topic puede construirse dinámicamente mediante metadatos.

Configuración​

LabelCampo obligatorioDescripción
Topic PatternSíTopic MQTT con marcadores de posición ${metadata} opcionales.
HostSíNombre de host o dirección IP del broker.
PortSíPuerto del broker, p. ej., 1883 u 8883.
Connection TimeoutSíTimeout de conexión en segundos.
Client IDNoID de cliente MQTT.
Clean SessionNoControla si se descartan los datos de sesión del broker.
Enable SSLNoActiva TLS/SSL.

Credenciales​

Se admiten anonymous, basic con nombre de usuario/contraseña y cert.PEM para mTLS con certificados PEM.


Kafka​

Categoría: Externo
Salidas: Success, Failure

El nodo publica el cuerpo del mensaje actual como registro en un topic de Kafka.

Configuración​

LabelCampo obligatorioDescripción
Topic PatternSíTopic de Kafka, opcionalmente con marcadores de posición de metadatos.
Bootstrap ServersSíLista de brokers separados por comas.
Auto Retry TimesNoNúmero de reintentos de envío.
Batch SizeNoTamaño del lote en bytes.
Time to BufferNoTiempo de espera para reunir registros, en milisegundos.
Buffer Max SizeNoBúfer máximo del producer.
AcksSíComportamiento de confirmación del broker.
SerializerSíClases de serializer.
Other PropertiesNoPropiedades adicionales del producer de Kafka.

Salida​

Si tiene éxito, offset, partition y topic se escriben en los metadatos.


RabbitMQ​

Categoría: Externo
Salidas: Success, Failure

El nodo publica el cuerpo del mensaje en un exchange de RabbitMQ. El exchange y la routing key pueden formarse a partir de metadatos.

Configuración​

LabelCampo obligatorioDescripción
Exchange Name PatternNoNombre del exchange. Vacío significa exchange predeterminado (Default Exchange).
Routing Key PatternNoRouting key.
Message PropertiesNoPropiedades del mensaje AMQP.
HostSíHost de RabbitMQ.
PortSíPuerto AMQP.
Virtual HostNoVirtual Host de RabbitMQ.
CredencialesNoAutenticación.
Automatic RecoveryNoReconexión automática.
TimeoutsNoTimeout de conexión y de handshake.
Client PropertiesNoPropiedades adicionales del cliente.

AWS SQS​

Categoría: Externo
Salidas: Success, Failure

El nodo envía el cuerpo del mensaje actual a una cola AWS SQS. Se admiten colas estándar y FIFO.

Configuración​

LabelCampo obligatorioDescripción
Queue TypeSíCola estándar o FIFO.
Queue URL PatternSíURL de la cola SQS. Admite marcadores de posición de metadatos.
Delay SecondsNoRetraso para colas estándar.
Message AttributesNoAtributos SQS adicionales.
Credenciales de AWSSíCredenciales IAM.
AWS RegionSíRegión de AWS de la cola.

Salida​

Si tiene éxito se añaden, entre otros, messageId, requestId, messageBodyMd5, messageAttributesMd5 y, en las colas FIFO, sequenceNumber.


AWS SNS​

Categoría: Externo
Salidas: Success, Failure

El nodo publica el cuerpo del mensaje actual en un topic de AWS SNS.

Configuración​

LabelCampo obligatorioDescripción
Topic ARN PatternSíARN del topic de SNS. Admite marcadores de posición de metadatos.
Credenciales de AWSSíCredenciales IAM.
AWS RegionSíRegión de AWS del topic.

Salida​

Si tiene éxito, messageId y requestId se escriben en los metadatos.


GCP Pub/Sub​

Categoría: Externo
Salidas: Success, Failure

El nodo publica el cuerpo del mensaje actual en un topic de Google Cloud Pub/Sub.

Configuración​

LabelCampo obligatorioDescripción
GCP Project IDSíID del proyecto de Google Cloud.
Topic NameSíNombre del topic de Pub/Sub.
GCP Service Account KeySíCarga de un archivo JSON con las credenciales de la cuenta de servicio.
Message AttributesNoAtributos adicionales de Pub/Sub.

Nota​

La cuenta de servicio necesita el permiso roles/pubsub.publisher para el topic de destino.

Salida​

Si tiene éxito, messageId se escribe en los metadatos.


Send Email​

Categoría: Externo
Salidas: Success, Failure

El nodo envía un objeto de correo electrónico mediante SMTP. El objeto de correo electrónico debe haberse generado previamente con el nodo To Email.

Configuración​

LabelCampo obligatorioDescripción
Use General SMTP SettingsSíActiva los ajustes SMTP de todo el sistema.

Si se desactivan los ajustes SMTP de todo el sistema, se pueden configurar smtpProtocol, smtpHost, smtpPort, username, password, timeout, enableTls, requireTls, checkServerIdentity y sslTrustHost.

Nota​

Si el mensaje entrante no es un objeto de correo electrónico válido, sale por Failure.


Nodos de Scheduler​

Create Scheduled Task​

Categoría: Scheduler
Salidas: Success, Failure

El nodo programa una tarea única para un momento posterior. La tarea puede generar un informe o activar una RuleChain.

Configuración​

LabelCampo obligatorioDescripción
Job NameSíNombre único de la tarea programada.
Delay Before StartSíRetraso hasta la ejecución.
TypeSíREPORT o RULE_CHAIN.
Rule ChainSí, con RULE_CHAINRuleChain que se debe ejecutar.
Campos del informesegún el tipo de informeConfiguración de los informes programados.

Notas​

  • Una tarea con el mismo jobName para la misma entidad se sobrescribe.

Clear Scheduled Task​

Categoría: Scheduler
Salidas: Success, Failure

El nodo elimina una tarea programada anteriormente antes de que se ejecute.

Configuración​

LabelCampo obligatorioDescripción
Job NameSíNombre exacto de la tarea que se debe eliminar.

Notas​

  • El nombre debe coincidir con el nombre de Create Scheduled Task.
  • La asignación se realiza por entidad de origen.
  • Si no existe ninguna tarea coincidente, el mensaje sale por Failure.

Nodos de eventos y alarmas​

Complex Alarm​

Categoría: Regla de evento
Salidas: Success, Created, Cleared

El nodo genera o finaliza alarmas mediante una regla de evento para telemetría en tiempo real. Es adecuado para patrones que no pueden representarse mediante una simple comprobación de un valor individual.

Configuración​

LabelCampo obligatorioDescripción
Event RuleSíSelección de una regla de evento existente.

Notas​

  • La regla de evento debe haberse creado antes de utilizar el nodo. Véase Event Processing
  • Created significa que se ha abierto una alarma nueva.
  • Cleared significa que se ha finalizado una alarma existente.
  • Success significa que no se ha producido ningún cambio en el estado de la alarma.

Complex Event Processing​

Categoría: Regla de evento
Salidas: Success, Created, Cleared

El nodo aplica Complex Event Processing a datos de archivos OSF ya cargados. Es la variante basada en archivos de Complex Alarm.

Configuración​

LabelCampo obligatorioDescripción
Event RuleSíSelección de la regla de evento para la evaluación CEP.

Notas​

  • El nodo se coloca después de Aggregate OSF File.
  • La regla de evento debe haberse creado previamente en la plataforma. Véase Event Processing

Enrich Alarm​

Categoría: Regla de evento
Salidas: Success, Failure

El nodo enriquece una alarma existente con información adicional de una regla de evento basada en Excel.

Configuración​

LabelCampo obligatorioDescripción
Event RuleSíSelección de una regla de evento con el archivo Excel asociado para el enriquecimiento.

Notas​

  • La regla de evento debe haberse creado previamente en la plataforma. Véase Event Processing
  • La regla de evento debe tener un archivo Excel con asignaciones para tipos de alarma o condiciones.
  • El nodo se utiliza después de Create Alarm o Complex Alarm.
  • Los detalles añadidos se escriben de nuevo en el registro de la alarma.