Zum Hauptinhalt springen

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

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
brokerAddressNeinSTRINGgültige Dashboard URL"ssl://dashboard.opticloud.io:8883" , "tcp://awe.some.io:1883" (nicht empfohlen)
brokerUserIdNeinSTRINGSeriennummerPassword des Geräts
brokerUserPasswordNeinSTRING""""Password der Dashboard-Servers
brokerAuthenticationNeinBOOLtrue, falsetrueDashboard-Server-Authentifizierung
trustStoreNeinSTRING/etc/ssl/certs/ca-certificates.crtTrust Store für Dashboard-Server-Authentifizierung
clientCertificateNeinSTRING BASE64gültiges ZertifikatZertifikat für Geräte-Authentifizierung (nicht unterstützt)

Modulparameter

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
pollingIntervalMsNeinINT1000 -1000Modulbezogenes Kanaldatenaquisitionsintervall [ms]
transmitBoolAsIntNeinBOOLfalse, truefalseBoole'sche Werte (false,true) als Ganzzahlen (0,1) übertragen
connectTimeoutSNeinINT1 -10Timeout bzgl. Verbindungsherstellung
disconnectTimeoutSNeinINT1 -10Timeout bzgl. Verbindungstrennung nach Aufforderung
keepaliveIntervalSNeinINT1 -10Timeout bzgl. Detektion einer getrennten Verbindung
completionIntervalSNeinINT1 -10Timeout bzgl. Quittierungsempfang nach Versand einer MQTT Botschaft
sendingIntervalSNeinINT1 -10Timeout bzgl. Versand einer MQTT Botschaft
maxBufferedMessagesNeinINT1 -10Maximale Anzahl gepufferter MQTT Botschaften innerhalb des MQTT Clients
channelsJAJSON Arraysiehe unten
splitGpsLocationsoptional bei GPS KanälenJSON Arraysiehe unten
sharedAttributesNeinJSON Arraysiehe unten

Kanalkonfiguration "channels"

Die an das Dashboard übertragenen Telemetrie-/Client-Attribute-Kanäle werden jeweils als JSON Object mit folgenden Parametern konfiguriert

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
nameJASTRINGgültiger KanalnameKanalname, es werden vereinfachte Wildcards "*" und "?" unterstützt
messageTypeNeinSTRING"telemetry", "clientAttribute""telemetry"Art der Übertragung an das Dashboard. "telemetry,clientAttribute" ist ebenso möglich
sendOnlyOnChangeNeinBOOLtrue, falsetrueDatenreduktion unveränderter Kanalwerte
refreshIntervalMsNeinINT1 -60000 (60 s)Erneuter Versand gleicher Werte nach Ablauf eines Intervalls, falls ihr zugehöriger vertrauenswürdiger Zeitstempel aktualisiert wurde
minimumSendIntervalMsNeinINT0 -0 (0 s)Kanalbezogenes minimales Übertragungsintervall
useTrueTimestampsNeinBOOLfalse, truefalseÜ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

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
gpsLocationChannelNameJASTRINGgültiger GPS Location KanalnameEingangskanal aus dem smartCORE
gpsLatitudeChannelNameNeinSTRINGsiehe obenKanalname für Übertragung der geo. Breite an das Dashboard
gpsLongitudeChannelNameNeinSTRINGsiehe obenKanalname für Übertragung der geo. Länge an das Dashboard
gpsAltitudeChannelNameNeinSTRINGsiehe obenKanalname 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.

ParameternameErforderlichDatentypsinnvoller WertebereichDefaultBeschreibung
nameJASTRINGgültiger KanalnameKanalname
typeJASTRINGgültiger Datentyp"bool", "double", "float", "string", "[u]int8"
persistentNeinBOOLfalse, truetruesoll der letzte Wert des Kanals über einen smartCORE Neustart hinweg beständig sein
requestInitialValueNeinBOOLfalse, truetruezusätzlicher Bezug des sharedAttributes direkt nach Start des Messbetriebs
bufferSizeNeinINT1 -1024Puffergröße des angelegten Kanals
physicalDimensionNeinSTRINGPhysikalische Größe
physicalUnitNeinSTRINGPhysikalische Einheit

Modul-Informationen

InformationWert
AutorenoptiMEAS Measurement and Automation Systems GmbH
seit smartCORE0
ModultypConsumer, (optional) Producer
AbhängigkeitenoptiCLOUD Dashboard