TCP und UDP bei Komponenten mit Provider Netzwerk
Einleitung
Dieser Artikel liefert technische Detail-Informationen zu den Protokollen TCP und UDP bei Komponenten mit Provider Netzwerk (Network). Mittels Provider Netzwerk (Network) können (fast) beliebige Geräte an NeuroomNet angebunden werden, welche sich über die Netzwerk-Protokolle TCP und UDP (und Telnet) und verschickte Zeichenfolgen steuern lassen (siehe Provider Netzwerk). In diesem Kapitel gibt es technische Hintergrund-Informationen zu TCP und UDP.
Überblick Kommunikation
In diesem Kapitel betrachten wir folgende Aspekte der Kommunikation zwischen Gerät (repräsentiert in NeuroomNet durch eine Komponente) und NeuroomNet (bzw. dem Provider Netzwerk / Komponente), primär aus der Sicht des NeuroomNet-Servers für die Fälle TCP und UDP:
- Senden von Aktionen an das Gerät mittels Textnachrichten (definiert in der jeweiligen PRT-Datei) von NeuroomNet aus (und Empfangen dieser Aktionen von dem Gerät)
- Empfangen von Ereignissen des Geräts mittels Textnachrichten (definiert in der jeweiligen PRT-Datei) in NeuroomNet (und Senden dieser Ereignisse durch das Gerät)
- Kenntnis von NeuroomNet, ob das jeweilige Gerät aktuell eingeschaltet und erreichbar im Netzwerk ist
- Kenntnis von NeuroomNet, ob gesendete Aktionen bei dem jeweiligen Gerät Seite angekommen sind
- Kenntnis von NeuroomNet, ob gesendete Aktionen von dem jeweiligen Gerät (erfolgreich) ausgeführt wurden
Kommunikation mittels TCP
Um ein entsprechendes Gerät mittels TCP an NeuroomNet anzubinden, legt man in NeuroomNet im Modul Setup eine Komponente an mit folgenden Minimal-Einstellungen
- IP:Port (Ziel) 2: IP-Adresse und der zu verwendende Port des jeweiligen Geräts im Netzwerk (Bsp.: 192.168.100.36:5678)
- Geräteprotokoll 3: Name der zu verwendeten PRT-Datei (Bsp.: netIOIn16 (prt))
- [ID 1: Beliebige, aber eindeutige Zeichenfolge zur Verwendung und Anzeige innerhalb NeuroomNet]
Im externen Gerät wird man, gerätespezifisch, i.d.R. folgende Informationen angeben:
- Ggf. Port-Nummer des NeuroomNet-Servers, zumindest wenn das Gerät Ereignisse schicken soll und das Gerät nicht immer nur auf Anfragen (Aktionen) von NeuroomNet antwortet (und diese Antwort automatisch an die Quell-IP-Adresse / -Port der Aktion geschickt wird))
Wenn das Gerät entsprechend über eine Komponente erfolgreich an NeuroomNet angebunden ist über TCP, dann
- Lassen sich von NeuroomNet Aktionen (über das PRT definiert) an das Gerät senden
- Lassen sich von NeuroomNet Ereignisse (über das PRT definiert) vom Gerät empfangen / verarbeiten (bspw. über Skript-Blöcke)
- NeuroomNet weiß jederzeit, ob das Gerät aktuell im Netzwerk verfügbar und eingeschaltet ist (durch das TCP-Protokoll wird eine Verbindung gehalten)
- Das TCP-Protokoll garantiert, dass Aktionen / Ereignisse erfolgreich verschickt und empfangen werden, allerdings gibt es keine Information, ob Aktionen oder Ereignisse wirklich (erfolgreich) durchgeführt wurden (dies müsste ansonsten vom Gerät / PRT / Skript-Blöcken unterstützt werden über Status-Ereignisse / Anfragen oder ähnlich; oft ist das Ergebnis von Aktionen aber indirekt sichtbar, indem ein Gerät seinen Status entsprechend wechselt oder ähnlich, welcher bspw. auf einem Dashboard sichtbar ist)
Kommunikation mittels Telnet
Durch den Schalter "TELNET Protokoll verwenden (nur TCP)" ist auch eine Anbindung über das eher alte Protokoll Telnet möglich.
Für den Benutzer von NeuroomNet verhält sich das Protokoll Telnet im Endeffekt wie das Protokoll TCP, im Hintergrund (transparent für den Benutzer) werden aber noch bestimmte Steuerzeichen für den Verbindungsaufbau verwendet.
Kommunikation mittels UDP
Im Gegensatz zu TCP ist UDP "verbindungslos" und "nicht zuverlässig" (siehe Wikipedia; in der Praxis lassen sich aber auch UDP-Geräte praktisch nahezu äquivalent benutzen). Dies bewirkt kleinere Unterschiede in der Anbindung zu NeuroomNet - jeweils in fett gedruckter Schriftart markiert:
Um ein entsprechendes Gerät mittels UDP an NeuroomNet anzubinden, legt man in NeuroomNet im Modul Setup eine Komponente an mit folgenden Minimal-Einstellungen
- IP:Port (Ziel) 2: IP-Adresse und der zu verwendende Port des jeweiligen Geräts im Netzwerk (Bsp.: 192.168.100.36:5678)
- Geräteprotokoll 3: Name der zu verwendeten PRT-Datei (Bsp.: netIOIn16 (prt))
- UDP Protokoll verwenden (nicht TCP) 4: Diese Checkbox / Schalter muss entsprechend gesetzt sein, damit UDP verwendet wird
- Auf UDP Antworten warten (Millisekunden, nur UDP) 5: Ggf. Angabe von Millisekunden
- Eine Angabe der Millisekunden besagt, wie lange der jeweilige (ggf. temporäre, von Betriebssystem-Einstellungen abhängige) (Quell-)Port, über den eine NeuroomNet-Aktion verschickt wird, offen gehalten wird
- Dies betrifft nur Geräte, welche direkt auf NeuroomNet-Aktionen antworten anstatt Antworten an eine vordefinierte IP-Adresse und Port zu verschicken bzw. bei den meisten Geräten wird hier nichts eingetragen
- Zur Vermeidung der Verschwendung von Ressourcen sollte diese Zeitangabe so klein wie möglich und nur so groß wie nötig gewählt werden - in normalen Szenarien ist eine Sekunde mehr als ausreichend, aber dies hängt natürlich von der angeschlossenen Hardware ab
- [ID 1: Beliebige, aber eindeutige Zeichenfolge zur Verwendung und Anzeige innerhalb NeuroomNet]
Im externen Gerät wird man, gerätespezifisch, i.d.R. folgende Informationen angeben:
- Ggf. IP-Adresse und Port 15403 des NeuroomNet-Servers, zumindest wenn das Gerät Ereignisse bzw. selbstständig Nachrichten schicken soll und das Gerät nicht immer nur auf Anfragen (Aktionen) von NeuroomNet antwortet (an die Quell-IP-Adresse / -Port))
- Im Fall dass das Gerät auf NeuroomNet-Aktionen direkt antwortet (an Quell-IP-Adresse / -Port), muss entsprechend auf NeuroomNet-Seite die Einstellung "Auf UDP Antworten warten (Millisekunden, nur UDP" gesetzt sein (siehe oben)
- [Im Fall TCP entfällt diese Einstellung auf NeuroomNet-Seite, weil bei TCP ohnehin eine Verbindung offen gehalten wird]
Anmerkung 1: Der Port 15403 ist bei älteren Installationen von NeuroomNet ggf. noch nicht verfügbar bzw. nicht von außen erreichbar. In einem solchen Fall, bei Bedarf, wenden Sie sich bitte an die inSynergie.
Anmerkung 2: Im Endeffekt gibt es zwei Arten von den durch UDP-steuerbaren Geräten, welche auch an NeuroomNet Nachrichten senden:
- Geräte, in welchem eine fixe IP-Adresse und Port von NeuroomNet angegeben wird, wohin die Nachrichten gesendet werden
- Geräte, welche auf NeuroomNet-Aktionen direkt antworten
Die meisten Geräte gehören zur ersten Art und hier gibt man entsprechend den Port 15403 (und IP-Adresse des NeuroomNet-Servers) in der Konfiguration des Geräts selbst ein.
Bei Geräten zur zweiten Art muss die Einstellung "Auf UDP Antworten warten (Millisekunden, nur UDP)" verwendet werden.
Achtung: In beiden Fällen muss es auch immer eine Komponente auf NeuroomNet-Seite geben zur IP-Adresse des UDP-Geräts, damit eingehende Ereignisse (an den Port 15403 oder als "Antwort") von NeuroomNet verarbeitet werden bzw. als Ereignis der jeweiligen Komponente interpretiert werden.
Wenn das Gerät entsprechend über eine Komponente erfolgreich an NeuroomNet angebunden ist über UDP, dann
- Lassen sich von NeuroomNet Aktionen (über das PRT definiert) an das Gerät senden
- Lassen sich von NeuroomNet Ereignisse (über das PRT definiert) vom Gerät empfangen / verarbeiten (bspw. über Skript-Blöcke)
- NeuroomNet weiß nie, ob das Gerät aktuell im Netzwerk verfügbar oder eingeschaltet ist (das Gerät wird immer in grün im Modul Setup angezeigt)
- Es ist auch nicht garantiert, dass Aktionen / Ereignisse erfolgreich empfangen werden