Geofencing smartCORE Modul
Beschreibung
Das "geofencing" Modul prüft kontinuierlich anhand von GPS-Positionsdaten, ob sich das System in einem in einer Konfiguration enthaltenen Geo-Bereich befindet. Sobald detektiert wird, dass sich das Gerät innerhalb bestimmter zuvo konfigurierten Geo-Koordinaten befindet, werden die Daten dieses Bereichs (ID und Names des Eintrags aus Konfiguration) in die Messdaten erfasst und kann an eine Cloud gesendet werden. So können weiter Aktionen, wie Email oder SMS versenden, ausgelöst werden.
Das Modul erfasst selbst keine GPS-Daten, sondern greift auf Signal-Daten aus dem smartCORE Datenpool zu. In der Modul-Konfiguration müssen daher die Signalnamen eingetragen werden, die GPS-Informationen enthalten (Latitude, longitude). Typische Datenquellen für GPS-Daten sind das GPS-Modul oder externer Quellen, die über CAN Bus oder andere Protokolle bereitgestellt werden.
JSON-Konfiguration
Im folgenden Abschnitt wird die gesamte JSON-Konfiguration eines Geofence-Moduls beschrieben und die einzelnen Bereiche und Parameter erläutert.
Geofence-Typen
Es gibt zwei Typen von Geofence-Bereichen, die in der Konfiguration verwendet werden können.
- Kreis
- Polygon
Beide Typen haben drei gemeinsame Paramter, die angegeben werden müssen:
- "id"
- "name"
- "description"
Wird eine Überschreitung einer geolokalisierten Begrenzung erkannt, werden diese Daten in den Messdaten gespeichert. Das Modul erkennt anhand der Anzahl an Koordinaten, ob es ein Kreis oder ein Polygone ist. Ein Kreis hat immer nur eine Koordinate, ein Polygone dagegen immer mindestens drei oder mehr. Getestet wurden Poylgone mit bis zu 20 Koordinaten. Hat ein Eintrag nur zwei Koordinaten, dann wird er ignoriert und nicht berücksichtigt.
Kreis
Für die Definition eines Kreises muss nur die GPS-Koordinate eintragen werden, die als Mittelpunkt des Kreises dient. Als weitere Parameter kann der Radius (in km) eingetragen werden. Wenn der Radius nicht angegeben wird, dann wird als Default-Wert 0.5 km (500 Meter) verwendet.
Nachfolgend wird ein Geofence-Bereich als Kreis mit einem Radius von 900 Metern definiert.
{
"id": 1,
"name": "AA",
"description": "Hmb-Altona",
"radius":0.9,
"choords": [
{
"latitude": 53.552695,
"longitude": 9.935175
}
]
}
Polygon
Durch das Eintragen von mehreren Koordinaten (mindestens drei!), kann ein Polygon definiert werden. Die Reihenfolge in der Konfig ist sehr wichtig, da immer Koordinate mit der nächsten verbunden wird Die erste und letzte Koordinate dürfen nicht identisch sein, die Software verbindet diese beiden Punkte automatisch bei der Berechnung.
{
"id": 111103,
"name": "Bhbf",
"description": "Berlin",
"choords": [
{
"latitude": 53.552695,
"longitude": 9.935175
},
{
"latitude": 53.552691,
"longitude": 9.935172
},
{
"latitude": 53.552690,
"longitude": 9.935178
}
]
}
Komplette Beispielkonfiguration (minimal)
Die folgende Konfiguration benutzt die minimal Einstellungen und im Bereich "stations" sind zwei Geofences definiert.
{
"module": "Geofencing",
"factory": "geofencing",
"config": {
"timeoutMs": 2000,
"gpsSatCountName": [
"GPS.SatelliteCount",
"Colibri.SatelliteCount"
],
"minimalAvailableSatCount": 6,
"gpsLocationName": "GPS.Location",
"longitudeName": "DBC.longitude",
"latitudeName": "DBC.latitude",
"stations": [
{
"id": 1,
"name": "AA",
"description": "Hmb-Altona BP",
"radius":0.9,
"choords": [
{
"latitude": 53.552695,
"longitude": 9.935175
}
]
},
{
"id": 2,
"extNr": 8000011201,
"name": "AAG",
"description": "Ascheberg/Holst BP",
"choords": [
{
"latitude": 54.148462,
"longitude": 10.339481
}
]
}
]
}
}
Komplette Beispielkonfiguration mit externer Geofence-Datei
Es ist auch möglich die Geofence-Stationen in einer externen Datei zu hinterlegen. Der Dateipfad muss dann in der Konfig im Feld "stationsFile" eingetragen werden.
{
"module": "Geofencing",
"factory": "geofencing",
"config": {
"timeoutMs": 2000,
"minimalAvailableSatCount": 6,
"gpsSatCountName": [
"GPS.SatelliteCount",
"Colibri.SatelliteCount"
],
"gpsLocationName": "GPS.Location",
"longitudeName": "DBC.longitude",
"latitudeName": "DBC.latitude",
"stationsFile":"/sdi/config/geofence_stations.json",
"stations": [
]
}
}
Struktur der externen Datei
Nachfolgend wird die Struktur der externen Datei, die im Konfig-Feld "stationsFile" eingetragen wird, beschrieben. Im Feld "file_version" kann eine Versionsbezeichnung eingetragen werden, die dann auch bei Bedarf an die Cloud gesendet werden kann. Im Bereich "geofence_stations" werden die Geoefence-Bereiche eingetregen, wie im Feld "stations" in der smartCORE-Konfig Datei.
{
"file_version":"Dateiversion 1.0",
"geofence_stations": [
{
"id": 111101,
"name": "AA",
"description": "Hmb-Altona",
"choords": [
{
"latitude": 53.552695,
"longitude": 9.935175
}
]
},
{
"id": 111103,
"name": "Bhbf",
"description": "Berlin",
"choords": [
{
"latitude": 53.552695,
"longitude": 9.935175
},
{
"latitude": 53.552691,
"longitude": 9.935172
},
{
"latitude": 53.552690,
"longitude": 9.935178
}
]
},
{
"id": 111104,
"name": "AEC",
"description": "Eckernfoerde Bstg",
"choords": [
{
"latitude": 54.4676,
"longitude": 9.835115
},
{
"latitude": 54.4675,
"longitude": 9.835114
},
{
"latitude": 54.4677,
"longitude": 9.835125
},
{
"latitude": 54.46761,
"longitude": 9.835112
},
{
"latitude": 54.4675,
"longitude": 9.835113
},
{
"latitude": 54.4678,
"longitude": 9.835112
}
]
}
]
}
Parameter-Liste
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
timeoutMs | Nein | INT | 1000 - 10000 | 2000 | AAusführungsintervall der Prüfung ob sich die aktuellen GPS-Koordinaten in einem Geofecne-Bereich befinden. |
stations | Nein | Array | - | - | Enthält die Definitionen der Geofence-Bereiche. |
stationsFile | Nein | String | "" | "" | Pfad zur externen Json-Datei mit den Geofence-Bereichen. Ermöglicht die Geofence-Bereiche in eine externen Datei auszulagern, um die smartCORE-Konfiguration klein und überschaubar zu halte. |
channelNameLocationID | Nein | String | "" | [Modulname].LocationID | Mit diesem Parameter kann der Name des Signals mit der ID des Geofence-Bereichs geändert werden. Dieser Signalname erscheint dann so in den Messdaten. Es wird empfohlen die Default-Einstellungen zu verwenden. |
channelNameLocationName | Nein | String | "" | [Modulname].LocationName | Dieser Parameter gibt den des Signals mit der Beschreibung ("description"-Feld) des Geofence-Bereichs an. Dieser Signalname erscheint dann so in den Messdaten. Es wird empfohlen die Default-Einstellungen zu verwenden. |
gpsSatCountName | Ja | Array | - | - | Enthält ein oder mehrere Signalnamen aus dem Datenpool, die die aktuelle Anzahl von Satelliten des GPS-Signals enthalten. Sind mehrere Namen angegeben, wird das Signal verwendet, dass verfügabr ist und Daten liefert. Es wird also automatisch bestimmt welches Signal verwendet wird. |
minimalAvailableSatCount | Nein | INT | 3-15 | 5 | Wird für die Plausibilisierung des GPS-Signals benötigt. Minimale Anzahl an Satelliten, die in einem Signal aus "gpsSatCountName" vorhanden sein müssen, damit die GPS-Daten valide sind. |
Parameter-Station
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
id | Ja | INT | 1 - 10000 | - | Muss innerhalb der Konfig eindeutig sein. Diese Nummer wird in die Messdaten geschrieben bzw. an eine Cloud gesendet. |
name | Ja | String | "" | "" | Abkürzung/Kurzform des Geofence-Bereichnamens. |
description | Ja | String | "" | "" | Lang-Name des Geofence-Bereichnamens. Wird in den Messdaten gespeichert und an die Cloud übertragen. |
radius | Ja | Double | 0.1 - 10 | 0.5 | Wird nur bei Bereichen, die als Kreis definiert sind, berücksichtigt. Der Radius wird in km angegeben. |
choords | Ja | Array | - | - | Bereich mit der Koordinate (Kreis) oder den Koordinaten (Polygon). |
Erzeugte Signale (Producer)
Folgende Signale werden vom Geofence-Modul erzeugt und im Datenpool des smartCOREs gespeichert. Diese Signale können dann in den Messdaten gespeichert und an die Cloud gesendet werden. Die Signalnamen können in der Konfiguration (die Felder "channelNameLocationID" und "channelNameLocationName") angepasst werden. Auf der Cloud-Seite können diese Signale dann in Überwachung- und Alarmierungsaufgaben verwendet werden.
Signalname | Datentyp | Beschreibung |
---|---|---|
[Modulname].LocationName | String | In diesem Signal wird die Beschreibung ("description"-Feld) des Geofence-Bereichs gespeichert, sobald die aktuellen GPS-Koordinaten sich in einem der Geofence-Bereiche befinden. Befinden sich die aktuellen GPS-Koordinaten nicht in einem Bereich, dann ist der Wert ein Leer-String. |
[Modulname].LocationID | INT | In diesem Signal wird die ID ("id"-Feld) des Geofence-Bereichs gespeichert, in dem sich die aktuellen GPS-Koordinaten befinden. Befinden sich die aktuellen GPS-Koordinaten nicht in einem Bereich, dann ist der Wert -1. |
[Modulname].Valid | Bool | Gibt an, ob die aktuellen GPS-Koordinaten valide sind oder nicht. |
[Modulname].Fileversion | String | Diese Signal enthält den Inhalt des Eintrags "file_version" in der externen Datei. |
Modul-Informationen
Information | Wert |
---|---|
Autor | optiMEAS Measurement and Automation Systems GmbH |
seit smartCORE | 2.2 |
Modultyp | Producer und Consumer |
Abhängigkeiten | KEINE |