Aller au contenu principal

Module dashboard optiCLOUD « opticloud »

Description​

Le module « opticloud » fournit une interface vers le dashboard optiCLOUD. Il permet de transmettre du dispositif de mesure au dashboard aussi bien des données de télémétrie que des attributs client. Il est en outre possible d'injecter, depuis le dashboard vers le dispositif de mesure, des attributs dits partagés (shared attributes). De plus, la communication depuis le dashboard vers l'appareil via l'interface RPC est possible.

Interfaces et protocoles utilisés​

  • MQTT

Configuration JSON​

La section suivante décrit l'intégralité de la configuration JSON du module et explique chacun des paramètres.

Exemple de configuration (minimale)​

Voici un exemple de configuration minimale :

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

Exemple de configuration (typique)​

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

Exemple de configuration (maximale)​

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

Le tableau JSON « splitGpsLocationChannels » ne doit être spécifié que si des GPS Locations, par exemple issues du module GPS, sont effectivement transmises au dashboard ET si la séparation de ces données doit être configurée librement. Les canaux séparés sont alors nommés automatiquement comme suit, soit par

  • ajout de ".Latitude", ".Longitude", ".Altitude" au nom du canal GPS Location, soit par
  • suppression du suffixe ".Location" puis ajout de ".Latitude", ".Longitude", ".Altitude" au nom du canal GPS Location, si ce suffixe existe dans le nom du canal GPS Location.

Externalisation globale des paramètres spécifiques à l'appareil​

Les paramètres spécifiques à la connexion peuvent être externalisés dans la section globale suivante de la configuration statique smartCORE (smartcore.json), c'est-à-dire :

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

Ces paramètres globaux ont priorité sur les paramètres configurés au niveau du module. Cela simplifie le déploiement d'une même nouvelle configuration de mesure dynamique (smartcore_dynamic.json) sur plusieurs appareils.

Paramètres de module (globaux) spécifiques à la connexion​

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
brokerAddressNonSTRINGURL de dashboard valide"ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (non recommandé)
brokerUserIdNonSTRINGnuméro de sérieNom d'utilisateur (User-ID) de l'appareil
brokerUserPasswordNonSTRING""""Mot de passe du serveur dashboard
brokerAuthenticationNonBOOLtrue, falsetrueAuthentification du serveur dashboard
trustStoreNonSTRING/etc/ssl/certs/ca-certificates.crtTrust store pour l'authentification du serveur dashboard
clientCertificateNonSTRING BASE64certificat valideCertificat pour l'authentification de l'appareil (non pris en charge)

Paramètres du module​

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
pollingIntervalMsNonINT1000 -1000Intervalle d'acquisition des données de canal du module [ms]
transmitBoolAsIntNonBOOLfalse, truefalseTransmettre les valeurs booléennes (false,true) sous forme d'entiers (0,1)
transmitStatusChannelsNonBOOLfalse, truefalseIndique si des signaux STATUS doivent être créés et transmis
channelnameTransmitDataNonSTRINGnom de canal valide""Canal permettant de suspendre et de reprendre la transmission des données de mesure, voir ci-dessous (à partir de smartCORE 2.12)
connectTimeoutSNonINT1 -10Timeout pour l'établissement de la connexion
disconnectTimeoutSNonINT1 -10Timeout pour la déconnexion après demande
keepaliveIntervalSNonINT1 -10Timeout pour la détection d'une connexion interrompue
completionIntervalSNonINT1 -10Timeout pour la réception de l'accusé de réception après l'envoi d'un message MQTT
sendingIntervalSNonINT1 -10Timeout pour l'envoi d'un message MQTT
maxBufferedMessagesNonINT1 -10Nombre maximal de messages MQTT mis en tampon au sein du client MQTT
channelsOUIJSON Arrayvoir ci-dessous
splitGpsLocationsoptionnel pour les canaux GPSJSON Arrayvoir ci-dessous
sharedAttributesNonJSON Arrayvoir ci-dessous

Configuration des canaux « channels »​

Les canaux de télémétrie / d'attributs client transmis au dashboard sont chacun configurés sous forme d'objet JSON avec les paramètres suivants

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
nameOUISTRINGnom de canal valideNom du canal, les jokers simplifiés "*" et "?" sont pris en charge
messageTypeNonSTRING"telemetry", "clientAttribute""telemetry"Type de transmission vers le dashboard. "telemetry,clientAttribute" est également possible
sendOnlyOnChangeNonBOOLtrue, falsetrueRéduction des données pour les valeurs de canal inchangées
refreshIntervalMsNonINT1 -60000 (60 s)Nouvel envoi de valeurs identiques à l'expiration d'un intervalle, si l'horodatage fiable associé a été mis à jour
minimumSendIntervalMsNonINT0 -0 (0 s)Intervalle de transmission minimal par canal
useTrueTimestampsNonBOOLfalse, truefalseTransmission avec les horodatages de production, si activé (sinon horodatage du cycle de traitement)

Séparation des canaux GPS Location « splitGpsLocationChannels »​

Les canaux GPS Location doivent être séparés avant l'envoi au dashboard. La séparation peut être définie pour chaque canal sous forme d'objet JSON

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
gpsLocationChannelNameOUISTRINGnom de canal GPS Location valideCanal d'entrée provenant de smartCORE
gpsLatitudeChannelNameNonSTRINGvoir ci-dessusNom de canal pour la transmission de la latitude géographique au dashboard
gpsLongitudeChannelNameNonSTRINGvoir ci-dessusNom de canal pour la transmission de la longitude géographique au dashboard
gpsAltitudeChannelNameNonSTRINGvoir ci-dessusNom de canal pour la transmission de l'altitude au-dessus du niveau de la mer au dashboard

Configuration des canaux « sharedAttributes »​

Via « sharedAttributes », des attributs créés côté dashboard peuvent être chargés sur l'appareil et produits dans les canaux correspondants. La configuration s'effectue pour chaque canal à l'aide de l'objet JSON suivant.

Nom du paramètreObligatoireType de donnéesPlage de valeurs utileDéfautDescription
nameOUISTRINGnom de canal valideNom du canal
typeOUISTRINGtype de données valide"bool", "double", "float", "string", "[u]int8"
persistentNonBOOLfalse, truetruela dernière valeur du canal doit-elle être conservée après un redémarrage de smartCORE
requestInitialValueNonBOOLfalse, truetrueobtention supplémentaire du sharedAttribute directement après le démarrage du fonctionnement de mesure
bufferSizeNonINT1 -1024Taille du tampon du canal créé
physicalDimensionNonSTRINGGrandeur physique
physicalUnitNonSTRINGUnité physique

Pilotage de la transmission des données « channelnameTransmitData »​

info

Ce paramètre est disponible à partir de smartCORE 2.12.

Le paramètre optionnel « channelnameTransmitData » permet de suspendre et de reprendre la transmission des données de mesure pendant l'exécution, sans couper la connexion au dashboard. On indique le nom d'un canal horodaté de type de données "bool".

Tant que ce canal a la valeur false, le module retient les données de mesure. Tout ce qui maintient l'appareil joignable continue de fonctionner sans changement :

Type de donnéesComportement tant que le canal de pilotage a la valeur false
Télémétrieest retenue
Attributs clientsont retenus
Valeurs STATUS de ce modulene sont pas transmises, mais continuent d'être écrites localement dans les canaux STATUS
Canal de pilotage lui-mêmecontinue d'être transmis, à condition de faire partie de la configuration "channels"
Alarmesinchangées
Shared Attributes (dashboard → appareil)inchangés
RPCinchangé
Numéro de sérieinchangé

Le canal de pilotage lui-même est volontairement exclu du blocage : ainsi, dans le dashboard, un silence voulu reste distinguable d'une coupure de connexion. La connexion étant maintenue, la transmission peut être réactivée à tout moment depuis le dashboard.

L'état du canal de pilotage est évalué une fois par cycle d'acquisition ("pollingIntervalMs") ; chaque changement d'état est écrit dans le journal (log).

En cas de doute, les données sont transmises. La transmission reste active dans tous les cas suivants :

  • le paramètre est absent ou vide,
  • le canal indiqué n'existe pas,
  • le canal indiqué n'est pas horodaté ou n'est pas de type de données "bool",
  • le canal n'a pas encore de valeur.

Une faute de frappe dans le nom du canal ne peut donc pas rendre un appareil muet. Les trois cas liés au canal sont écrits comme avertissement dans le journal au démarrage du fonctionnement de mesure.

Le cas d'usage typique est le pilotage depuis le dashboard via un Shared Attribute :

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

Un Shared Attribute ainsi créé est un canal horodaté du type de données indiqué et satisfait ainsi aux exigences posées au canal de pilotage. Le module lui-même ne mémorise pas l'état : après un redémarrage, les données sont transmises jusqu'à ce que le canal de pilotage ait une valeur. "persistent" et "requestInitialValue" garantissent que la dernière valeur définie est de nouveau disponible.

Le canal de pilotage ne doit pas nécessairement provenir du dashboard. Une entrée numérique ou un canal calculé issu du module "math" est également possible ; seul un canal horodaté de type de données "bool" est exigé.

Informations sur le module​

InformationValeur
AuteursoptiMEAS GmbH
depuis smartCORE0
Type de moduleConsumer, (optionnel) Producer
Dépendancesdashboard optiCLOUD