Saltar al contenido principal

Módulo "opticloud" del dashboard optiCLOUD

Descripción​

El módulo "opticloud" proporciona una interfaz con el dashboard optiCLOUD. Permite transmitir al dashboard tanto datos de telemetría como atributos de cliente desde el equipo de medición. Además, es posible que el dashboard envíe al equipo de medición los denominados atributos compartidos (shared attributes). Adicionalmente existe la posibilidad de comunicarse con el dispositivo desde el dashboard mediante la interfaz RPC.

Interfaces y protocolos utilizados​

  • MQTT

Configuración JSON​

En la sección siguiente se describe la configuración JSON completa del módulo y se explican los distintos parámetros.

Configuración de ejemplo (mínima)​

A continuación se muestra una configuración de ejemplo mínima:

{
"module":"Opticloud",
"factory":"opticloud",
"config":{
"channels":[
{
"name":"*"
}
]
}
}

Configuración de ejemplo (habitual)​

{
"module": "Opticloud",
"factory": "opticloud",
"config":{
"pollingIntervalMs":1000,
"channels":[
{
"name": "*",
"refreshIntervalMs":60000,
"minimumSendIntervalMs":0
}
]
}
}

Configuración de ejemplo (máxima)​

{
"module":"Opticloud",
"factory":"opticloud",
"config":{
"transmitBoolAsInt": false,
"transmitStatusChannels": false,
"channelnameTransmitData": "TransmitData",
"connectTimeoutS": 10,
"disconnectTimeoutS": 10,
"keepaliveIntervalS": 10,
"completionIntervalS": 10,
"sendingIntervalS": 10,
"maxBufferedMessages": 10,
"channels":[
{
"name":"can*",
"messageType":"telemetry,clientAttribute",
"sendOnlyOnChange":true,
"refreshIntervalMs":60000,
"minimumSendIntervalMs":0,
"useTrueTimestamps":false
}
],
"splitGpsLocationChannels":[
{
"gpsLocationChannelName":"GPS.Location",
"gpsLatitudeChannelName":"GPS.Latitude",
"gpsLongitudeChannelName":"GPS.Longitude",
"gpsAltitudeChannelName":"GPS.Altitude"
}
],
"pollingIntervalMs":1000,
"sharedAttributes":[
{
"name":"dataFromDashboardChannel",
"type":"double",
"persistent":true,
"requestInitialValue":true,
"bufferSize":1024,
"physicalDimension":"temperature",
"physicalUnit":"K"
}
],
"brokerAddress": "ssl://dashboard.opticloud.io:8883",
"brokerUserId": "",
"brokerUserPassword": "",
"brokerAuthentication": true,
"trustStore": "/etc/ssl/certs/ca-certificates.crt",
"clientCertificate": "notImplementedYet"
}
}

El array JSON "splitGpsLocationChannels" solo debe especificarse si realmente se transmiten al dashboard ubicaciones GPS, por ejemplo del módulo GPS, Y se desea configurar libremente la división de estos datos. En ese caso, los canales resultantes de la división se denominan automáticamente de la siguiente manera, ya sea mediante

  • la adición de ".Latitude", ".Longitude", ".Altitude" al nombre del canal de ubicación GPS, o bien
  • la eliminación del sufijo ".Location" y la adición de ".Latitude", ".Longitude", ".Altitude" al nombre del canal de ubicación GPS, si dicho sufijo existe en el nombre del canal de ubicación GPS.

Externalización global de parámetros específicos del dispositivo​

Los parámetros específicos de la conexión pueden externalizarse a la siguiente sección global de la configuración estática de smartCORE (smartcore.json), es decir:

"device_based":{
"instances":{
"opticloudInstance1":{
"brokerAddress": "ssl://awe.some.io:8883",
"brokerUserId": "",
"brokerUserPassword": "",
"brokerAuthentication": true,
"clientCertificate": "notImplementedYet"
}
}
},

Estos parámetros globales tienen prioridad sobre los parámetros configurados específicamente en el módulo. De este modo se simplifica el despliegue de una misma configuración de medición dinámica nueva (smartcore_dynamic.json) en varios dispositivos.

Parámetros del módulo específicos de la conexión (globales)​

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
brokerAddressNoSTRINGURL de dashboard válida"ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (no recomendado)
brokerUserIdNoSTRINGNúmero de serieNombre de usuario (ID de usuario) del dispositivo
brokerUserPasswordNoSTRING""""Contraseña del servidor del dashboard
brokerAuthenticationNoBOOLtrue, falsetrueAutenticación del servidor del dashboard
trustStoreNoSTRING/etc/ssl/certs/ca-certificates.crtTrust store para la autenticación del servidor del dashboard
clientCertificateNoSTRING BASE64certificado válidoCertificado para la autenticación del dispositivo (no admitido)

Parámetros del módulo​

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
pollingIntervalMsNoINT1000 -1000Intervalo de adquisición de datos de canal del módulo [ms]
transmitBoolAsIntNoBOOLfalse, truefalseTransmitir valores booleanos (false, true) como enteros (0, 1)
transmitStatusChannelsNoBOOLfalse, truefalseIndica si deben crearse y transmitirse señales STATUS
channelnameTransmitDataNoSTRINGnombre de canal válido""Canal para detener y reanudar la transmisión de datos de medición, véase más abajo (a partir de smartCORE 2.12)
connectTimeoutSNoINT1 -10Timeout del establecimiento de la conexión
disconnectTimeoutSNoINT1 -10Timeout de la desconexión tras solicitarla
keepaliveIntervalSNoINT1 -10Timeout para la detección de una conexión interrumpida
completionIntervalSNoINT1 -10Timeout de la recepción de confirmación tras el envío de un mensaje MQTT
sendingIntervalSNoINT1 -10Timeout del envío de un mensaje MQTT
maxBufferedMessagesNoINT1 -10Número máximo de mensajes MQTT en búfer dentro del cliente MQTT
channelsSÍJSON Arrayvéase más abajo
splitGpsLocationsopcional en canales GPSJSON Arrayvéase más abajo
sharedAttributesNoJSON Arrayvéase más abajo

Configuración de canales "channels"​

Los canales de telemetría/atributos de cliente transmitidos al dashboard se configuran, cada uno, como un objeto JSON con los siguientes parámetros

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
nameSÍSTRINGnombre de canal válidoNombre del canal; se admiten comodines simplificados "*" y "?"
messageTypeNoSTRING"telemetry", "clientAttribute""telemetry"Tipo de transmisión al dashboard. También es posible "telemetry,clientAttribute"
sendOnlyOnChangeNoBOOLtrue, falsetrueReducción de datos de valores de canal sin cambios
refreshIntervalMsNoINT1 -60000 (60 s)Nuevo envío de valores iguales tras transcurrir un intervalo, si se ha actualizado su marca de tiempo fiable asociada
minimumSendIntervalMsNoINT0 -0 (0 s)Intervalo mínimo de transmisión por canal
useTrueTimestampsNoBOOLfalse, truefalseTransmisión con las marcas de tiempo de producción, si está activado (de lo contrario, marca de tiempo del ciclo de procesamiento)

División de los canales de ubicación GPS "splitGpsLocationChannels"​

Los canales de ubicación GPS deben dividirse antes de enviarse al dashboard. La división puede definirse para cada canal en forma de objeto JSON

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
gpsLocationChannelNameSÍSTRINGnombre de canal de ubicación GPS válidoCanal de entrada de smartCORE
gpsLatitudeChannelNameNoSTRINGvéase arribaNombre del canal para transmitir la latitud geográfica al dashboard
gpsLongitudeChannelNameNoSTRINGvéase arribaNombre del canal para transmitir la longitud geográfica al dashboard
gpsAltitudeChannelNameNoSTRINGvéase arribaNombre del canal para transmitir la altitud sobre el nivel del mar al dashboard

Configuración de canales "sharedAttributes"​

Mediante "sharedAttributes" pueden cargarse en el dispositivo atributos creados en el dashboard y producirse en los canales correspondientes. La configuración se realiza con el siguiente objeto JSON para cada canal.

Nombre del parámetroObligatorioTipo de datosRango de valores razonableValor por defectoDescripción
nameSÍSTRINGnombre de canal válidoNombre del canal
typeSÍSTRINGtipo de datos válido"bool", "double", "float", "string", "[u]int8"
persistentNoBOOLfalse, truetruesi el último valor del canal debe conservarse tras un reinicio de smartCORE
requestInitialValueNoBOOLfalse, truetrueobtención adicional del sharedAttribute directamente tras el inicio de la medición
bufferSizeNoINT1 -1024Tamaño del búfer del canal creado
physicalDimensionNoSTRINGMagnitud física
physicalUnitNoSTRINGUnidad física

Control de la transmisión de datos "channelnameTransmitData"​

información

Este parámetro está disponible a partir de smartCORE 2.12.

Mediante el parámetro opcional "channelnameTransmitData" es posible detener y reanudar en tiempo de ejecución la transmisión de los datos de medición, sin interrumpir la conexión con el dashboard. Se indica el nombre de un canal con marca de tiempo de tipo de datos "bool".

Mientras este canal tenga el valor false, el módulo retiene los datos de medición. Todo lo que mantiene accesible el dispositivo sigue funcionando sin cambios:

Tipo de datosComportamiento mientras el canal de control tenga el valor false
Telemetríase retiene
Atributos de clientese retienen
Valores STATUS de este módulono se transmiten, pero se siguen escribiendo localmente en los canales STATUS
El propio canal de controlse sigue transmitiendo, siempre que forme parte de la configuración "channels"
Alarmassin cambios
Shared Attributes (dashboard → dispositivo)sin cambios
RPCsin cambios
Número de seriesin cambios

El propio canal de control queda excluido del bloqueo de forma deliberada: así, en el dashboard un silencio intencionado sigue pudiendo distinguirse de una interrupción de la conexión. Como la conexión se mantiene, la transmisión puede volver a activarse en cualquier momento desde el dashboard.

El estado del canal de control se evalúa una vez por cada ciclo de adquisición ("pollingIntervalMs"); cada cambio de estado se escribe en el registro.

En caso de duda, se transmite. La transmisión permanece activa en todos los casos siguientes:

  • el parámetro falta o está vacío,
  • el canal indicado no existe,
  • el canal indicado no tiene marca de tiempo o no es del tipo de datos "bool",
  • el canal todavía no tiene ningún valor.

Por tanto, un error tipográfico en el nombre del canal no puede silenciar un dispositivo. Los tres casos relativos al canal se escriben como advertencia en el registro al iniciar la medición.

El caso de uso habitual es el control desde el dashboard mediante un Shared Attribute:

"channelnameTransmitData":"TransmitData",
"sharedAttributes":[
{
"name":"TransmitData",
"type":"bool",
"persistent":true,
"requestInitialValue":true
}
]

Un Shared Attribute creado de este modo es un canal con marca de tiempo del tipo de datos indicado y, por tanto, cumple los requisitos del canal de control. El propio módulo no guarda el estado: tras un reinicio se transmite hasta que el canal de control tenga un valor. "persistent" y "requestInitialValue" garantizan que el último valor establecido vuelva a estar disponible.

El canal de control no tiene que proceder del dashboard. También es posible, por ejemplo, una entrada digital o un canal calculado del módulo "math"; solo se exige un canal con marca de tiempo del tipo de datos "bool".

Información del módulo​

InformaciónValor
AutoresoptiMEAS GmbH
desde smartCORE0
Tipo de móduloConsumer, (opcional) Producer
Dependenciasdashboard optiCLOUD