Field Network - Philosophie
-
Subpages
-
Applikationen (+1 subpage)
-
Das Field-Network ist ein Protokoll/ eine Definition, das Quelloffen aufgebaut ist und für alle Geräte auf dem Wettkampffeld verwendet werden kann. Als Grundlage der Übertragung dient ein TCP/IP Netz auf dem Informationen via HTTP übermittelt werden. Einzelne Anwendungen haben innerhalb des Field-Netzwork unterschiedliche URL Endpunkte welche Anwenderabhängig definiert werden. Durch die Quelloffenheit und die definierten Schnittstellen können somit verschiedene Projekte gemischt und Anwendungen verwendet werden. Als Beispiel kann durch die Definierte Schnittstelle und Übertragungstechnik jede Auswertesoftware, die sich an die Definitionen innerhalb des Field-Networks hält, jede Art von Anzeigesoftware oder Eingabehardware (Terminals) beliefern und Informationen abholen. Durch TCP/IP und den HTTP Standard ist es möglich mit “Massenware”, die oft Erprobt und in jedem IT Laden erworben werden kann, schnell und kostengünstig das Field-Network aufzubauen.
Durch die Offenheit der Definition können auch Konverter gebaut werden. Somit kann z.B. das Signal einer Ampelsteuerung in die Definition einer Ampel für das Field-Network gewandelt werden und dann an sämtlichen, an den Standard haltenden, Anzeigen ausgegeben werden. Natürlich müssen sich die Anzeigen nicht zwingend an den Standard halte. Auch hier kann wieder konvertiert werden.
# URL Endpunkte im Field-Network definiert
Jedes Gerät im Field-Network, welches angesprochen werden kann/muss hört auf den Endpunkt /discover. Dieser Endpunkt dient zur automatischen suche nach geräten für die Geräte, welche Daten an andere Verteilen. z.B. sollte eine Ampelanzeige sich bei /discover melden, da die Ampel Steuerung das Netz via /discover absucht um Geräte im Field-Network zu suchen welche Informationen von der Steuerung erhalten soll.\
Auf den Endpunkt /discover kann verzichtet werden, wenn das Gerät/die Anwendung im Netzwerk nicht gefunden werden muss/soll.
Als Antwort unterhalb dieses Endpunktes wird ein JSON Note zurückgegeben, welches wie folgt aufgebaut ist:
### JSON Beispiel:
```
{
'app': 'amp',
'type': 'cont',
'vers': 2,
'extra': {
'url_left_amp': 'http://ip.des.controllers/amp_left',
'url_right_amp': 'http://ip.des.controllers/amp_right',
'url_double_amp': 'http://ip.des.controllers/amp_doubl',
}
}
```
### Schema:
```
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"app": {
"type": "string"
},
"type": {
"type": "string"
},
"vers": {
"type": "integer"
},
"extra": {
"type": "object",
"properties": {
"url_left_amp": {
"type": "string"
},
"url_right_amp": {
"type": "string"
},
"url_double_amp": {
"type": "string"
}
},
"required": [
"url_left_amp",
"url_right_amp",
"url_double_amp"
]
}
},
"required": [
"app",
"type",
"vers",
"extra"
]
}
```
| Key | Beschreibung |
| ------------------- | ------------ |
| app | App gibt an, zu welcher Anwendung das Gerät gehört. Ampel, Trefferanzeige, Treffereingabe, Auswertung, etc. |
| type | Gibt die Unterkategorie innerhalb der Anwendung an. Dies dient dazu, dass auch innerhalb einer Anwendung verschiedene Geräte aufgeführt werden können. Zum Beispiel gibt es bei einer Ampel verschiedene Geräte mit unterschiedlichen Funktionen. Eine Steuerung benötigt keine Daten muss ihre Daten aber an die Anzeigeelemente versenden können |
| vers | Mit der Versionsnummer kann angegeben werden, welche Funktionen das Gerät akzeptieren kann. Jede Anwendung und jedes Protokoll entwickelt sich weiter und es kommen neue Funktionen hinzu. **Es ist dringlich darauf zu achten, dass die Versionen abwärtskompatibel sind!** |
| extra | In extra können via Unterknotenpunkte anwendungsabhängig weitere Informationen bereitgestellt werden. So kann z.B. auf eine URL Verwiesen werden die Einen Status bereitstellt. |
## Anwendungen
[Liste von Applikationen](http://projekte.bsapp.de/content/perma?id=112)