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ètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
| brokerAddress | Non | STRING | URL de dashboard valide | "ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (non recommandé) | |
| brokerUserId | Non | STRING | numéro de série | Nom d'utilisateur (User-ID) de l'appareil | |
| brokerUserPassword | Non | STRING | "" | "" | Mot de passe du serveur dashboard |
| brokerAuthentication | Non | BOOL | true, false | true | Authentification du serveur dashboard |
| trustStore | Non | STRING | /etc/ssl/certs/ca-certificates.crt | Trust store pour l'authentification du serveur dashboard | |
| clientCertificate | Non | STRING BASE64 | certificat valide | Certificat pour l'authentification de l'appareil (non pris en charge) |
Paramètres du module
| Nom du paramètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
| pollingIntervalMs | Non | INT | 1000 - | 1000 | Intervalle d'acquisition des données de canal du module [ms] |
| transmitBoolAsInt | Non | BOOL | false, true | false | Transmettre les valeurs booléennes (false,true) sous forme d'entiers (0,1) |
| transmitStatusChannels | Non | BOOL | false, true | false | Indique si des signaux STATUS doivent être créés et transmis |
| channelnameTransmitData | Non | STRING | nom 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) |
| connectTimeoutS | Non | INT | 1 - | 10 | Timeout pour l'établissement de la connexion |
| disconnectTimeoutS | Non | INT | 1 - | 10 | Timeout pour la déconnexion après demande |
| keepaliveIntervalS | Non | INT | 1 - | 10 | Timeout pour la détection d'une connexion interrompue |
| completionIntervalS | Non | INT | 1 - | 10 | Timeout pour la réception de l'accusé de réception après l'envoi d'un message MQTT |
| sendingIntervalS | Non | INT | 1 - | 10 | Timeout pour l'envoi d'un message MQTT |
| maxBufferedMessages | Non | INT | 1 - | 10 | Nombre maximal de messages MQTT mis en tampon au sein du client MQTT |
| channels | OUI | JSON Array | voir ci-dessous | ||
| splitGpsLocations | optionnel pour les canaux GPS | JSON Array | voir ci-dessous | ||
| sharedAttributes | Non | JSON Array | voir 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ètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
| name | OUI | STRING | nom de canal valide | Nom du canal, les jokers simplifiés "*" et "?" sont pris en charge | |
| messageType | Non | STRING | "telemetry", "clientAttribute" | "telemetry" | Type de transmission vers le dashboard. "telemetry,clientAttribute" est également possible |
| sendOnlyOnChange | Non | BOOL | true, false | true | Réduction des données pour les valeurs de canal inchangées |
| refreshIntervalMs | Non | INT | 1 - | 60000 (60 s) | Nouvel envoi de valeurs identiques à l'expiration d'un intervalle, si l'horodatage fiable associé a été mis à jour |
| minimumSendIntervalMs | Non | INT | 0 - | 0 (0 s) | Intervalle de transmission minimal par canal |
| useTrueTimestamps | Non | BOOL | false, true | false | Transmission 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ètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
| gpsLocationChannelName | OUI | STRING | nom de canal GPS Location valide | Canal d'entrée provenant de smartCORE | |
| gpsLatitudeChannelName | Non | STRING | voir ci-dessus | Nom de canal pour la transmission de la latitude géographique au dashboard | |
| gpsLongitudeChannelName | Non | STRING | voir ci-dessus | Nom de canal pour la transmission de la longitude géographique au dashboard | |
| gpsAltitudeChannelName | Non | STRING | voir ci-dessus | Nom 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ètre | Obligatoire | Type de données | Plage de valeurs utile | Défaut | Description |
|---|---|---|---|---|---|
| name | OUI | STRING | nom de canal valide | Nom du canal | |
| type | OUI | STRING | type de données valide | "bool", "double", "float", "string", "[u]int8" | |
| persistent | Non | BOOL | false, true | true | la dernière valeur du canal doit-elle être conservée après un redémarrage de smartCORE |
| requestInitialValue | Non | BOOL | false, true | true | obtention supplémentaire du sharedAttribute directement après le démarrage du fonctionnement de mesure |
| bufferSize | Non | INT | 1 - | 1024 | Taille du tampon du canal créé |
| physicalDimension | Non | STRING | Grandeur physique | ||
| physicalUnit | Non | STRING | Unité physique |
Pilotage de la transmission des données « channelnameTransmitData »
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ées | Comportement tant que le canal de pilotage a la valeur false |
|---|---|
| Télémétrie | est retenue |
| Attributs client | sont retenus |
| Valeurs STATUS de ce module | ne sont pas transmises, mais continuent d'être écrites localement dans les canaux STATUS |
| Canal de pilotage lui-même | continue d'être transmis, à condition de faire partie de la configuration "channels" |
| Alarmes | inchangées |
| Shared Attributes (dashboard → appareil) | inchangés |
| RPC | inchangé |
| Numéro de série | inchangé |
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
| Information | Valeur |
|---|---|
| Auteurs | optiMEAS GmbH |
| depuis smartCORE | 0 |
| Type de module | Consumer, (optionnel) Producer |
| Dépendances | dashboard optiCLOUD |