Das FieldNet

Das FieldNet, konzeption und Gedanken dahinter

FieldNet - Philosophie

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 FieldNet 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 FieldNet 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 FieldNet 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 FieldNet, welches angesprochen werden kann/muss hört auf den Endpunkt /discover. Dieser Endpunkt dient zur automatischen suche nach geräten für andere Geräte, welche Daten an andere Verteilen. z.B. sollte eine Ampelsteuerung sich bei /discover melden, da eine Fernbedienung das Netz via /discover absucht um die Steuerung zu finden und hierüber dann Befehle abzuschicken.
Auf den Endpunkt /discover kann verzichtet werden, wenn das Gerät/die Anwendung im Netzwerk nicht gefunden werden muss/soll. Eine Fernbedienung muss z.B. nicht gefunden werden, da diese nur Informationen zur Steuerung übergibt.

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.

Bekannte Apps:

Key

Applikation

Beschreibung/Definition

Details

amp

Ampel

Daten zum Steuern von Ampelelementen auf einem Wettkampffeld

Ampel - Details

Anwendungen

Details zu den Anwendungen des FielNet's

Anwendungen

Ampel

Diese Applikation dient zur Steuerung von Ampel Anlagen. Der Fluß der Daten geht vom Steuergerät an die Ampelelemente (AB/CD, Zeit, Ampel, Hupe).

Auf Grund der Echtzeit und Synchronisation wird zur Übertragung nicht Http sondern UDP Multicast verwendet. Die Daten werden dennoch via JSON String übermittelt.

Multicast Adresse: 224.1.2.3
Port: 10101

Discover JSON: 

{ 
  'app': 'amp', 
  'type': 'cont', 
  'vers': 1, 
  'extra': { 
  } 
}

Wert

Mögliche Werte

Beschreibung

app

amp

Applikation Ampel

type

cont

cont = Controller

extra


- Aktuell keine Werte -

JSON Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "amp1": {
      "type": "object",
      "properties": {
        "col": {
          "type": "string"
        },
        "tim": {
          "type": "integer"
        }
      },
      "required": [
        "col",
        "tim"
      ]
    },
    "amp2": {
      "type": "object",
      "properties": {
        "col": {
          "type": "string"
        },
        "tim": {
          "type": "integer"
        }
      },
      "required": [
        "col",
        "tim"
      ]
    },
    "hor": {
      "type": "integer"
    },
    "ab": {
      "type": "integer"
    },
    "bri": {
      "type": "integer"
    },
    "vol": {
      "type": "integer"
    }
  },
  "required": [
    "amp1",
    "amp2",
    "hor",
    "ab",
    "bri",
    "vol"
  ]
}

Beispiel JSON:

{
  "amp1":{
    "col": 'r',
    "tim": 120,
  },
  "amp2":{
    "col": 'g',
    "tim": 90,
  },
  "hor": 0,
  "ab" : 0,
  "bri": 255,
  "vol": 255,
}

Felddefinitionen:

Wert

übergeordnete Node

Mögliche Werte

Beschreibung

amp1

-

-

Alternierend: Objekt der linken Ampel
Nicht alternierend, werden beide Ampel Objekte gleich befüllt

col

amp1

r
g
y
b

Rot (r), Grün (g), Gelb (y) oder aus (b) der linken Ampel

tim

amp1

0-999

Zeit der linken Ampel

amp2

-

-

Alternierend: Objekt der rechten Ampel
Nicht alternierend, werden beide Ampel Objekte gleich befüllt

col

amp2

r
g
y
b

Rot (r), Grün (g), Gelb (y) oder aus (b)der rechten Ampel

tim

amp2

0-999

Zeit der rechten Ampel

hor

-

0-9

Gibt an, wie oft die Hupe ertönen soll. Diese Zahl wird für 1 Zyklus (1 Sekunde) angezeigt

ab

-

0
1
2

0 = AB/CD abgeschaltet
1 = AB Aktiv und wird angezeigt
2 = CD Aktiv und wird angezeigt

bri

-

0-100

Gibt die Hellgkeit der Anzeigen an

vol

-

0-100

Gibt die Lautstärke der Hupe an