Lernen Sie von Grund auf mit der smartCORE Alarmzentrale zu arbeiten. Über die Einrichtung in optiCONTROL, bis zur Visualisierung in optiCLOUD helfen wir Ihnen, den Überblick über Ihre Geräte zu erhalten.
Konfiguration in optiCONTROL
Dieser Abschnitt befasst sich mit der Konfiguration der Alarmzentrale (Diagnostics) im smartCORE. Eine erweiterte, technische Dokumentation finden Sie auf docs.optimeas.com
Konzept
Die Konfiguration des Diagnostics Modul kann grob in zwei Bereiche aufgeteilt werden: Den globalen Einstellungen, und die Liste von "messages".
Eine "message" stellt je eine Alarmnachricht dar und beinhaltet sowohl Alarmbedingungen als auch generelle Einstellungen für den jeweiligen Alarm. Die wichtigsten dieser Einstellungen sind:
- "channel", der Name des smartCORE Kanals, der überwacht wird
- "context", eine frei wählbare Kurzbeschreibung des Alarms
- und "messageLevel", der Schweregrad der Alarmmeldung, welcher 7-stufig über "info" bis "fatal" wählbar ist
Einrichtung von Testdaten
Um diese Anleitung anschaulicher zu machen, werden wir Alarme basierend auf dem Functiongenerator Modul erstellen, welches auf jedem optiMEAS smartDEVICE verfügbar ist.
Legen Sie eine Instanz des Functiongenerator Moduls an und fügen Sie die folgende Konfiguration ein:
{
"config": {
"channels": [
{
"dataType": "bool",
"frequency": 0.02,
"function": "rectangle",
"name": "Sim.SDCard.Status",
"onOffRatio": 0.5
},
{
"amplitude": 17.5,
"dataType": "float",
"frequency": 0.05,
"function": "sine",
"name": "Sim.CPU.Temperature",
"offset": 77.5
},
{
"amplitude": 50,
"dataType": "float",
"frequency": 0.075,
"function": "sine",
"name": "Sim.CPU.Load",
"offset": 50
},
{
"amplitude": 50,
"dataType": "float",
"frequency": 0.08,
"function": "sine",
"name": "Sim.CPU.TotalRAMUsage",
"offset": 50
}
]
},
"module": "Functiongenerator",
"factory": "functiongenerator"
}
Mithilfe dieses Moduls simulieren wir ein paar Kanäle aus dem Systeminfos Modul, welches Echtzeitinformationen über den Zustand des Edge Devices bereitstellt. Anhand dieser Informationen wollen wir Alarme einrichten, die uns über außergewöhnliche Gerätezustände benachrichtigen.
Überwachung von Booleschen Kanälen
Um Alarme basierend auf Werten von smartCORE Kanälen zu generieren, setzen wir zuerst den globalen Modulparameter "activationMode"
auf "channelvalues"
. Dann erstellen wir das "messages"
-Array. Ihre Konfiguration sollte jetzt ungefähr so aussehen:
{
"config": {
"activationMode": "channelvalues",
"messages": [
{
...
}
]
},
"module": "Diagnostics_systeminfos",
"factory": "diagnostics"
}
Unsere erste Message wird Sim.SDCard.Status
überwachen - ein boolescher Kanal. Wenn dieser Kanal auf "false" bzw. "low" steht, dann ist die SD-Karte des Geräts nicht mehr funktionstüchtig und sollte schnellstmöglich ausgetauscht werden. Richten wir die Message also dementsprechend ein:
{
"channel": "Sim.SDCard.Status",
"activation": "low",
"boundary": 1,
"context": "SD-Karte nicht verfügbar",
"messageLevel": "ERROR"
}
Mithilfe des Feldes channel
geben wir an, dass wir den SD-Kartenstatus überwachen wollen. "activation": "low"
in Kombination mit "boundary": 1
besagt, dass der Alarm auslösen soll, wenn der Kanal von true
(1) auf false
(0) wechselt. Als context
liefern wir eine prägnante Fehlermeldung. Da das Fehlen der SD-Karte einen signifikanten Mangel in der Funktionsweise unseres optiMEAS EDGE Devices darstellt, setzen wir den Schweregrad der Meldung auf "ERROR"
.
Damit wir unsere Alarme später in optiCLOUD verwenden können, müssen wir sicherstellen, dass die Option "Alarme aktivieren" im optiCLOUD Modul eingeschaltet ist.
Mehr Informationen zur Einrichtung des optiCLOUD Moduls finden Sie auf docs.optimeas.com.
Wenn alles richtig gegangen ist, sollte ihre Konfiguration jetzt so aussehen:
{
"config": {
"activationMode": "channelvalues",
"messages": [
{
"activation": "low",
"channel": "Sim.SDCard.Status",
"context": "SD-Karte nicht verfügbar",
"messageLevel": "ERROR"
}
]
},
"module": "Diagnostics_systeminfos",
"factory": "diagnostics"
}
Überwachung von numerischen Kanälen
Als nächstes werden wir die CPU-Temperatur (Sim.CPU.Temperature
) überwachen. Bei der Überwachung numerischer Kanäle wie diesem, stehen uns deutlich mehr Funktionen zur Verfügung, um Alarmzustände zu diagnostizieren.
Für Temperaturüberwachung unserer CPU setzen wir den Grenzwert bei 85°C fest. Gleichzeitig wollen wir auch aufzeichnen, welche Temperatur maximal erreicht wurde. Mit diesen Anforderungen sieht unsere zweite Message aus, wie folgt:
{
"activation": "maximum",
"boundary": 85,
"channel": "Sim.CPU.Temperature",
"context": "CPU überhitzt",
"messageLevel": "WARNING"
}
Der Parameter boundary
stellt unseren eben definierten Grenzwert dar. Die Aktivierungsart "maximum"
sagt dem Diagnostics Modul, dass auf eine Überschreitung des Grenzwertes überwacht werden soll und nach Abschluss des Alarms der maximale Wert aufgezeichnet werden soll.
Sagen wir nun, dass uns in Testläufen mit diesem Alarm aufgefallen ist, dass die Temperatur oft im Bereich von 84 bis 86°C variiert und dadurch der Alarm sehr oft hintereinander ausgelöst wird. Um diese mehrfachen Meldungen unter einem Alarm zusammenzufassen, können wir eine Hysterese (hysteresis
) mit einem Wert von z.B. 5°C einrichten. Dadurch wird der Alarm erst wieder deaktiviert, wenn die Temperatur 80°C unterschreitet.
Des weiteren finden wir, dass die Kurzbeschreibung in context
uns nicht genug Informationen liefert. Um den Alarm besser einordnen zu können, brauchen wir sowohl den Grenzwert als auch die Maximaltemperatur.
Um diesen neuen Anforderungen nachzukommen, passen wir unsere Message-Konfiguration an:
{
"activation": "maximum",
"boundary": 85,
"channel": "Sim.CPU.Temperature",
"context": "CPU überhitzt",
"messageLevel": "WARNING",
"hysteresis": 5,
"messageEvent": "CPU-Temperatur hat ${boundary}°C überschritten. Maximalwert: ${minmax}°C"
}
Die gewünschte Hysterese haben wir im hysteresis
-Parameter eingetragen. Mithilfe des messageEvent
-Parameters liefern wir weitere Infos zur aktuellen Alarmmeldung. Innerhalb des messageEvent
-Textfeldes können wir Platzhalter verwenden, um dynamisch während der Alarmgenerierung Werte einzufügen. ${boundary}
entspricht dem oben definierten Grenzwert und ${minmax}
gibt den Maximal- bzw. Minimalwert während eines aktiven Alarms aus.
Die Parameter stabilizationSecondsRaise
und stabilizationSecondsRelease
stehen auch zur Verfügung um bei besonders rauschanfälligen Kanälen sicherzustellen, dass ein Alarmzustand besteht.
Mehr über diese Parameter erfahren Sie auf docs.optimeas.com.
Überwachung von anderen Kanaltypen
Mithilfe des Diagnostics können auch weitere Arten von Alarmbedingungen überwacht werden. Diese stellen jedoch fortgeschrittene Anwendungsfälle dar und werden im Rahmen dieser Anleitung nicht behandelt.
Eine fortgeschrittene Anleitung ist in Arbeit und wird hier verlinkt, sobald verfügbar. In der Zwischenzeit können Sie sich auch auf docs.optimeas.com weiter informieren.
Einbindung von Werten aus anderen Kanälen (Snapshots)
Um unsere Alarme noch informativer zu machen, können wir ihnen sog. Snapshots - Momentaufnahmen anderer Kanäle - hinzufügen. Im Falle unseres CPU-Überhitzungs-Alarms wäre eine praktische Information z.B. die aktuelle CPU-Auslastung. Mithilfe dieser könnten wir diagnostizieren, ob die hohe Temperatur einer hohen Auslastung bedingt ist, oder ob das Gerät von außen erwärmt wird.
Hinter dem snapshot
Parameter können wir einfach eine Liste an Kanalnamen angeben, die bei Alarmauslösung ebenfalls aufgenommen werden sollen:
{
"activation": "maximum",
"boundary": 85,
"channel": "System.CPU.Temperature",
"context": "CPU überhitzt",
"hysteresis": 5,
"messageEvent": "CPU-Temperatur hat ${boundary}°C überschritten. Maximalwert: ${minmax}°C",
"messageLevel": "WARNING",
"snapshot": [
"Sim.CPU.Load",
"Sim.CPU.TotalRAMUsage"
]
}
Hier verwenden wir Sim.CPU.Load
und Sim.CPU.TotalRAMUsage
als Indikatoren für die CPU-Auslastung, um die Quelle der Überhitzung besser herleiten zu können.
Snapshots, die wir in jedem Alarm angeben wollen, können wir mit dem globalen Parameter globalSnapshot
einrichten. Nehmen wir an unser optiMEAS Edge Device befindet sich auf einem Fahrzeug, ist die Angabe einer Position bei quasi jedem Alarm sinnvoll. Also richten wir unsere globalen Snapshots folgend ein :
{
"config": {
"activationMode": "channelvalues",
"globalSnapshot": [
"GPS.Location",
"GPS.Speed"
],
"messages": [
...
]
},
"module": "Diagnostics_systeminfos",
"factory": "diagnostics"
}
Aufgrund technischer Einschränkungen können aktuell Snapshots von Kanälen mit einem Punkt im Namen nicht ordnungsgemäß in optiCLOUD verwendet werden.
Damit wir die Positionen von Alarmen später auf einer Karte visualisieren können, muss unser GPS Kanal im optiCLOUD Modul auf Kanäle ohne Punkt im Namen aufgeteilt werden. Zum Beispiel können Sie GPS.Location
in GPSLongitude
, GPSLatitude
und GPSAltitude
aufteilen.
Zusammenfassung
Ihre Konfiguration sollte jetzt so aussehen:
{
"config": {
"activationMode": "channelvalues",
"globalSnapshot": [
"GPS.Location",
"GPS.Speed"
],
"messages": [
{
"activation": "low",
"boundary": 1,
"channel": "Sim.SDCard.Status",
"context": "SD-Karte nicht verfügbar",
"messageLevel": "ERROR"
},
{
"activation": "maximum",
"boundary": 85,
"channel": "Sim.CPU.Temperature",
"context": "CPU überhitzt",
"hysteresis": 5,
"messageEvent": "CPU-Temperatur hat ${boundary}°C überschritten. Maximalwert: ${minmax}°C",
"messageLevel": "WARNING",
"snapshot": [
"Sim.CPU.Load",
"Sim.CPU.TotalRAMUsage"
]
}
]
},
"module": "Diagnostics_systeminfos",
"factory": "diagnostics"
}
Verwendung in optiCLOUD
Nun dass wir die Konfiguration des smartCOREs abgeschlossen haben, können wir in optiCLOUD ein Dashboard erstellen, mit welchem wir unser optiMEAS Edge Devices überwachen und diagnostizieren können.
Alarms Table
Zuerst richten wir das Alarms Table Widget ein - eine Tabelle, die sämtliche Informationen über aktive und vergangene Alarme darstellt.
Das Alarms Table Widget finden Sie in der "Alarm Widgets" Kategorie. Die Einrichtung des Widgets erfordert keine speziellen Schritte. Jedoch bieten Alarmwidgets einige Optionen um Alarme zu filtern. Diese befinden sich in den Widgeteinstellungen über der Alarmquelle:
Hier können Sie Alarme nach ihrem Status, Schweregrad und Kontext filtern. Für unsere Zwecke können wir die Filter bei ihren Standardeinstellungen belassen und einfach auf "Speichern" klicken.
Wenn alles richtig gelaufen ist, sollte das Widget unsere Alarme jetzt anzeigen:
Alarms Map
Das Alarm Map Widget kann nicht nur die Positionen von Alarmen anzeigen, sondern auch Alarmdetails visuell darstellen.
Um die Positionsdaten aus den Snapshots unserer Alarme zu verwenden, müssen wir deren Kanalnamen in den erweiterten Einstellungen des Widgets angeben. Die Kanäle sind immer nach folgendem Schema benannt: snapshot.
gefolgt von den im optiCLOUD Modul eingerichteten Namen. In unserem Fall also snapshot.GPSLatitude
und snapshot.GPSLongitude
.
Einrichtung von Benachrichtigungen
Falls Sie stets über den Zustand Ihres optiMEAS Edge Devices informiert bleiben wollen, haben Sie auch die Möglichkeit SMS-Benachrichtigungen für Alarme einzurichten.SMS-Benachrichtigungen via smartCORE
Wenn ihr optiMEAS Edge Device über eine SIM-Karte verfügt, können mithilfe des Smsalarms Modul Meldungen direkt an eine konfigurierte Telefonnummer gesendet werden.
Damit nur die wichtigsten Alarme eine SMS erzeugen, bietet das Smsalarms Modul ein ausgeklügeltes Filtersystem. So können sowohl Alarmkontext als auch -Nachricht gegen einen regulären Ausdruck evaluiert werden.
Wollen wir eine SMS beim Ausfall der SD-Karte unseres Geräts können wir das Modul konfigurieren wie folgt:
{
"config": {
"contextContains": "SD-Karte",
"message": "Die SD-Karte ist ausgefallen. Aktuelle Position: ${GPS.Location}{google}",
"phoneNumber": "012345678901"
},
"module": "Smsalarms",
"factory": "smsalarms"
}
contextContains
: Überprüft den Context von Alarmen auf "SD-Karte"message
: Eine frei wählbare Nachricht. Mit${Kanalname}
können beliebige Werte referenziert werden.${GPS.Location}{google}
gibt die aktuelle Position als einen Google Maps Link aus
phoneNumber
: Ziel-Telefonnummer