Passa al contenuto principale

Modulo "opticloud" per il dashboard optiCLOUD

Descrizione​

Il modulo "opticloud" fornisce un'interfaccia verso il dashboard optiCLOUD. Dal dispositivo di misura al dashboard possono essere trasmessi sia dati di telemetria sia client attribute. Inoltre il dashboard può inviare al dispositivo di misura i cosiddetti shared attribute. È inoltre possibile la comunicazione dal dashboard al dispositivo tramite interfaccia RPC.

Interfacce e protocolli utilizzati​

  • MQTT

Configurazione JSON​

La sezione seguente descrive l'intera configurazione JSON del modulo e illustra i singoli parametri.

Configurazione di esempio (minima)​

Di seguito una configurazione di esempio minima:

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

Configurazione di esempio (tipica)​

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

Configurazione di esempio (massima)​

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

Il JSON array "splitGpsLocationChannels" deve essere specificato solo se al dashboard vengono effettivamente trasmesse posizioni GPS, ad esempio dal modulo GPS, E se la suddivisione di questi dati deve essere configurata liberamente. I canali ottenuti dalla suddivisione vengono denominati automaticamente come segue, alternativamente

  • aggiungendo ".Latitude", ".Longitude", ".Altitude" al nome del canale GPS Location, oppure
  • rimuovendo il suffisso ".Location" e aggiungendo ".Latitude", ".Longitude", ".Altitude" al nome del canale GPS Location, se tale suffisso è presente nel nome del canale GPS Location.

Spostamento globale dei parametri specifici del dispositivo​

I parametri specifici della connessione possono essere spostati nella seguente sezione globale della configurazione statica di smartCORE (smartcore.json), ovvero:

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

Questi parametri globali hanno la precedenza sui parametri configurati a livello di modulo. In questo modo si semplifica la distribuzione di una stessa nuova configurazione di misura dinamica (smartcore_dynamic.json) su più dispositivi.

Parametri del modulo (globali) specifici della connessione​

Nome del parametroObbligatorioTipo di datiIntervallo di valori consigliatoDefaultDescrizione
brokerAddressNoSTRINGURL del dashboard valido"ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (sconsigliato)
brokerUserIdNoSTRINGnumero di serieNome utente (User-ID) del dispositivo
brokerUserPasswordNoSTRING""""Password del server del dashboard
brokerAuthenticationNoBOOLtrue, falsetrueAutenticazione del server del dashboard
trustStoreNoSTRING/etc/ssl/certs/ca-certificates.crtTrust store per l'autenticazione del server del dashboard
clientCertificateNoSTRING BASE64certificato validoCertificato per l'autenticazione del dispositivo (non supportato)

Parametri del modulo​

Nome del parametroObbligatorioTipo di datiIntervallo di valori consigliatoDefaultDescrizione
pollingIntervalMsNoINT1000 -1000Intervallo di acquisizione dei dati dei canali a livello di modulo [ms]
transmitBoolAsIntNoBOOLfalse, truefalseTrasmette i valori booleani (false, true) come numeri interi (0, 1)
transmitStatusChannelsNoBOOLfalse, truefalseIndica se devono essere creati e trasmessi segnali STATUS
channelnameTransmitDataNoSTRINGnome di canale valido""Canale per sospendere e riprendere la trasmissione dei dati di misura, vedere sotto (da smartCORE 2.12)
connectTimeoutSNoINT1 -10Timeout per lo stabilimento della connessione
disconnectTimeoutSNoINT1 -10Timeout per la disconnessione dopo la richiesta
keepaliveIntervalSNoINT1 -10Timeout per il rilevamento di una connessione interrotta
completionIntervalSNoINT1 -10Timeout per la ricezione della conferma dopo l'invio di un messaggio MQTT
sendingIntervalSNoINT1 -10Timeout per l'invio di un messaggio MQTT
maxBufferedMessagesNoINT1 -10Numero massimo di messaggi MQTT in buffer all'interno del client MQTT
channelsSÌJSON Arrayvedere sotto
splitGpsLocationsfacoltativo per i canali GPSJSON Arrayvedere sotto
sharedAttributesNoJSON Arrayvedere sotto

Configurazione dei canali "channels"​

I canali di telemetria / client attribute trasmessi al dashboard vengono configurati ciascuno come oggetto JSON con i seguenti parametri

Nome del parametroObbligatorioTipo di datiIntervallo di valori consigliatoDefaultDescrizione
nameSÌSTRINGnome di canale validoNome del canale; sono supportati i wildcard semplificati "*" e "?"
messageTypeNoSTRING"telemetry", "clientAttribute""telemetry"Tipo di trasmissione al dashboard. È possibile anche "telemetry,clientAttribute"
sendOnlyOnChangeNoBOOLtrue, falsetrueRiduzione dei dati per i valori di canale invariati
refreshIntervalMsNoINT1 -60000 (60 s)Nuovo invio di valori identici allo scadere di un intervallo, se il relativo timestamp attendibile è stato aggiornato
minimumSendIntervalMsNoINT0 -0 (0 s)Intervallo minimo di trasmissione per canale
useTrueTimestampsNoBOOLfalse, truefalseSe impostato, trasmissione con i timestamp di produzione (altrimenti timestamp del ciclo di elaborazione)

Suddivisione dei canali GPS Location "splitGpsLocationChannels"​

I canali GPS Location devono essere suddivisi prima dell'invio al dashboard. La suddivisione può essere definita per ciascun canale sotto forma di oggetto JSON

Nome del parametroObbligatorioTipo di datiIntervallo di valori consigliatoDefaultDescrizione
gpsLocationChannelNameSÌSTRINGnome valido di canale GPS LocationCanale di ingresso da smartCORE
gpsLatitudeChannelNameNoSTRINGvedere sopraNome del canale per la trasmissione della latitudine al dashboard
gpsLongitudeChannelNameNoSTRINGvedere sopraNome del canale per la trasmissione della longitudine al dashboard
gpsAltitudeChannelNameNoSTRINGvedere sopraNome del canale per la trasmissione dell'altitudine sul livello del mare al dashboard

Configurazione dei canali "sharedAttributes"​

Tramite "sharedAttributes" gli attributi creati sul dashboard possono essere caricati sul dispositivo e prodotti nei canali corrispondenti. La configurazione avviene per ciascun canale mediante il seguente oggetto JSON.

Nome del parametroObbligatorioTipo di datiIntervallo di valori consigliatoDefaultDescrizione
nameSÌSTRINGnome di canale validoNome del canale
typeSÌSTRINGtipo di dati valido"bool", "double", "float", "string", "[u]int8"
persistentNoBOOLfalse, truetrueindica se l'ultimo valore del canale deve rimanere persistente dopo un riavvio di smartCORE
requestInitialValueNoBOOLfalse, truetruerichiesta aggiuntiva dello shared attribute subito dopo l'avvio del funzionamento di misura
bufferSizeNoINT1 -1024Dimensione del buffer del canale creato
physicalDimensionNoSTRINGGrandezza fisica
physicalUnitNoSTRINGUnità fisica

Controllo della trasmissione dei dati "channelnameTransmitData"​

informazioni

Questo parametro è disponibile a partire da smartCORE 2.12.

Tramite il parametro facoltativo "channelnameTransmitData" è possibile sospendere e riprendere la trasmissione dei dati di misura durante il funzionamento, senza interrompere la connessione al dashboard. Si indica il nome di un canale con timestamp di tipo di dati "bool".

Finché questo canale ha il valore false, il modulo trattiene i dati di misura. Tutto ciò che mantiene raggiungibile il dispositivo continua a funzionare invariato:

Tipo di datiComportamento finché il canale di controllo ha il valore false
Telemetriaviene trattenuta
Client attributevengono trattenuti
Valori STATUS di questo modulonon vengono trasmessi, ma continuano a essere scritti localmente nei canali STATUS
Canale di controllo stessocontinua a essere trasmesso, purché faccia parte della configurazione "channels"
Allarmiinvariato
Shared attribute (dashboard → dispositivo)invariato
RPCinvariato
Numero di serieinvariato

Il canale di controllo stesso è volutamente escluso dal blocco: in questo modo nel dashboard un silenzio voluto resta distinguibile da un'interruzione della connessione. Poiché la connessione rimane attiva, la trasmissione può essere riattivata in qualsiasi momento dal dashboard.

Lo stato del canale di controllo viene valutato una volta per ciclo di acquisizione ("pollingIntervalMs"); ogni cambio di stato viene scritto nel log.

In caso di dubbio si trasmette. La trasmissione resta attiva in tutti i casi seguenti:

  • il parametro manca o è vuoto,
  • il canale indicato non esiste,
  • il canale indicato non ha timestamp oppure non è di tipo di dati "bool",
  • il canale non ha ancora alcun valore.

Un errore di battitura nel nome del canale non può quindi mettere a tacere un dispositivo. I tre casi relativi al canale vengono scritti nel log come avviso all'avvio del funzionamento di misura.

Il caso d'uso tipico è il controllo dal dashboard tramite uno shared attribute:

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

Uno shared attribute creato in questo modo è un canale con timestamp del tipo di dati indicato e soddisfa quindi i requisiti per il canale di controllo. Il modulo stesso non memorizza lo stato: dopo un riavvio si trasmette finché il canale di controllo non ha un valore. "persistent" e "requestInitialValue" fanno sì che l'ultimo valore impostato sia nuovamente disponibile.

Il canale di controllo non deve necessariamente provenire dal dashboard. È possibile ad esempio anche un ingresso digitale o un canale calcolato dal modulo "math"; è richiesto soltanto un canale con timestamp di tipo di dati "bool".

Informazioni sul modulo​

InformazioneValore
AutorioptiMEAS GmbH
da smartCORE0
Tipo di moduloConsumer, (facoltativo) Producer
Dipendenzedashboard optiCLOUD