optiCLOUD Dashboard Modul "opticloud"
Beschreibung
Das "opticloud" Modul stellt eine Schnittstelle zum optiCLOUD Dashboard zur Verfügung. Es können hierbei sowohl Telemetriedaten als auch Client-Attribute vom Messgerät ans Dashboard übertragen werden. Darüberhinaus ist eine Einspeisung sogenannter Shared-Attribute seitens des Dashboards an das Messgerät möglich. Zusätzlich besteht die Möglichkeit der Kommunikation via RPC-Schnittstelle vom Dashboard aus an das Gerät.
Verwendete Schnittstellen & Protokolle
- MQTT
JSON-Konfiguration
Im folgenden Abschnitt soll die gesamte JSON-Konfiguration des Moduls beschrieben und die einzelnen Parameter erläutert werden.
Beispielkonfiguration (minimal)
Im folgenden eine minimale Beispielkonfiguration:
{
"module":"Opticloud",
"factory":"opticloud",
"config":{
"channels":[
{
"name":"*"
}
]
}
}
Beispielkonfiguration (typisch)
{
"module": "Opticloud",
"factory": "opticloud",
"config":{
"pollingIntervalMs":1000,
"channels":[
{
"name": "*",
"refreshIntervalMs":60000,
"minimumSendIntervalMs":0
}
]
}
}
Beispielkonfiguration (maximal)
{
"module":"Opticloud",
"factory":"opticloud",
"config":{
"transmitBoolAsInt": false,
"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"
}
}
Das "splitGpsLocationChannels" JSON Array ist nur dann zu spezifizieren, falls tatsächlich GPS Locations, etwa aus dem GPS Modul, an das Dashboard übertragen werden UND das Splitting dieser Daten frei konfiguriert werden soll. Hierbei werden die aufgeteilten Kanäle wie folgt automatisch benannt, entweder duch
- Anhängen von ".Latitude", ".Longitude", ".Altitude" an den GPS Location Kanalnamen, oder
- Entfernen des ".Location" Suffix und Anhängen von ".Latitude", ".Longitude", ".Altitude" an den GPS Location Kanalnamen, falls dieser Suffix im GPS Location Kanalnamen existiert.
Globale Auslagerung gerätespezifischer Parameter
Die verbindungsspezifischen Parameter können hierbei in die folgende globale Sektion der statischen smartCORE Konfiguration (smartcore.json) ausgelagert werden, d.h.:
"device_based":{
"instances":{
"opticloudInstance1":{
"brokerAddress": "ssl://awe.some.io:8883",
"brokerUserId": "",
"brokerUserPassword": "",
"brokerAuthentication": true,
"clientCertificate": "notImplementedYet"
}
}
},
Diese globalen Parameter haben Vorrang vor den modulspezifisch konfigurierten Parametern. Es wird hierdurch das Ausrollen einer gleichen neuen dynamischen Messkonfigurationen (smartcore_dynamic.json) auf mehrere Geräte vereinfacht.
(Globale) Verbindungsspezifische Modulparameter
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
brokerAddress | Nein | STRING | gültige Dashboard URL | "ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (nicht empfohlen) | |
brokerUserId | Nein | STRING | Seriennummer | Password des Geräts | |
brokerUserPassword | Nein | STRING | "" | "" | Password der Dashboard-Servers |
brokerAuthentication | Nein | BOOL | true, false | true | Dashboard-Server-Authentifizierung |
trustStore | Nein | STRING | /etc/ssl/certs/ca-certificates.crt | Trust Store für Dashboard-Server-Authentifizierung | |
clientCertificate | Nein | STRING BASE64 | gültiges Zertifikat | Zertifikat für Geräte-Authentifizierung (nicht unterstützt) |
Modulparameter
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
pollingIntervalMs | Nein | INT | 1000 - | 1000 | Modulbezogenes Kanaldatenaquisitionsintervall [ms] |
transmitBoolAsInt | Nein | BOOL | false, true | false | Boole'sche Werte (false,true) als Ganzzahlen (0,1) übertragen |
connectTimeoutS | Nein | INT | 1 - | 10 | Timeout bzgl. Verbindungsherstellung |
disconnectTimeoutS | Nein | INT | 1 - | 10 | Timeout bzgl. Verbindungstrennung nach Aufforderung |
keepaliveIntervalS | Nein | INT | 1 - | 10 | Timeout bzgl. Detektion einer getrennten Verbindung |
completionIntervalS | Nein | INT | 1 - | 10 | Timeout bzgl. Quittierungsempfang nach Versand einer MQTT Botschaft |
sendingIntervalS | Nein | INT | 1 - | 10 | Timeout bzgl. Versand einer MQTT Botschaft |
maxBufferedMessages | Nein | INT | 1 - | 10 | Maximale Anzahl gepufferter MQTT Botschaften innerhalb des MQTT Clients |
channels | JA | JSON Array | siehe unten | ||
splitGpsLocations | optional bei GPS Kanälen | JSON Array | siehe unten | ||
sharedAttributes | Nein | JSON Array | siehe unten |
Kanalkonfiguration "channels"
Die an das Dashboard übertragenen Telemetrie-/Client-Attribute-Kanäle werden jeweils als JSON Object mit folgenden Parametern konfiguriert
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
name | JA | STRING | gültiger Kanalname | Kanalname, es werden vereinfachte Wildcards "*" und "?" unterstützt | |
messageType | Nein | STRING | "telemetry", "clientAttribute" | "telemetry" | Art der Übertragung an das Dashboard. "telemetry,clientAttribute" ist ebenso möglich |
sendOnlyOnChange | Nein | BOOL | true, false | true | Datenreduktion unveränderter Kanalwerte |
refreshIntervalMs | Nein | INT | 1 - | 60000 (60 s) | Erneuter Versand gleicher Werte nach Ablauf eines Intervalls, falls ihr zugehöriger vertrauenswürdiger Zeitstempel aktualisiert wurde |
minimumSendIntervalMs | Nein | INT | 0 - | 0 (0 s) | Kanalbezogenes minimales Übertragungsintervall |
useTrueTimestamps | Nein | BOOL | false, true | false | Übertragung unter Verwendung der Produktionszeitstempel, wennn gesetzt (sonst Zeitstempel des Verarbeitungszyklus) |
Aufteilung der GPS Location Kanäle "splitGpsLocationChannels"
Die GPS Location Kanäle müssen vor dem Versand an das Dashboard aufgeteilt werden. Die Aufteilung kann in Form eines JSON Objekts für jeden Kanal definiert werden
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
gpsLocationChannelName | JA | STRING | gültiger GPS Location Kanalname | Eingangskanal aus dem smartCORE | |
gpsLatitudeChannelName | Nein | STRING | siehe oben | Kanalname für Übertragung der geo. Breite an das Dashboard | |
gpsLongitudeChannelName | Nein | STRING | siehe oben | Kanalname für Übertragung der geo. Länge an das Dashboard | |
gpsAltitudeChannelName | Nein | STRING | siehe oben | Kanalname für Übertragung der geo. Höhe über NN an das Dashboard |
Kanalkonfiguration "sharedAttributes"
Über "sharedAttributes" können seitens des Dashboards angelegte Attribute auf das Gerät geladen und in entsprechende Kanäle produziert werden. Die Konfiguration erfolgt hierbei über folgendes JSON Objekt für jeden Kanal.
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
name | JA | STRING | gültiger Kanalname | Kanalname | |
type | JA | STRING | gültiger Datentyp | "bool", "double", "float", "string", "[u]int8" | |
persistent | Nein | BOOL | false, true | true | soll der letzte Wert des Kanals über einen smartCORE Neustart hinweg beständig sein |
requestInitialValue | Nein | BOOL | false, true | true | zusätzlicher Bezug des sharedAttributes direkt nach Start des Messbetriebs |
bufferSize | Nein | INT | 1 - | 1024 | Puffergröße des angelegten Kanals |
physicalDimension | Nein | STRING | Physikalische Größe | ||
physicalUnit | Nein | STRING | Physikalische Einheit |
Modul-Informationen
Information | Wert |
---|---|
Autoren | optiMEAS Measurement and Automation Systems GmbH |
seit smartCORE | 0 |
Modultyp | Consumer, (optional) Producer |
Abhängigkeiten | optiCLOUD Dashboard |