Zugriff über TCP
Zugriff über TCP
Ähnlich einem Telefongespräch muss bei TCP zunächst eine Verbindung aufgebaut werden, bevor Informationen ausgetauscht werden können. Dabei baut der Client die Verbindung auf, die vom Server entgegengenommen wird. Bei Anwendungen für Web-IO mit ASCII-Sockets übernimmt die Anwendung immer den Part des Clients und das Web-IO ist der Server.
Das Web-IO hat dazu einen TCP-Port für die Verbindungsannahme geöffnet (wenn nicht anders konfiguriert Port 42280). Der Client, also die Anwendung, baut eine Verbindung zur IP-Adresse des Servers zu diesem Port auf. Dabei öffnet auch der Client einen TCP-Port (dynamisch wechselnd), auf dem er Datensendungen vom Server entgegennehmen kann.
Sobald die Verbindung besteht, kann die Anwendung Kommandos zum Web-IO senden (Request), die dann vom Web-IO beantwortet bzw. ausgeführt werden (Reply). Bei entsprechender Konfiguration kann das Web-IO ohne Anfrage durch die Anwendung den Status der Input übermitteln (Event Message).
Das Schließen der TCP-Verbindung übernimmt im Regelfall die Anwendung. Das Web-IO schließt die Verbindung nur im Fehlerfall, z.B. wenn die Syntax eines Kommandos nicht stimmt.
Im TCP-ASCII-Socket-Modus kann das Web-IO zeitgleich maximal vier Verbindungen entgegennehmen. Der Verbindungsversuch eines fünften Clients würde abgewiesen (ähnlich besetzt beim Telefon).
Web-IO für TCP-Zugriff konfigurieren
Wählen Sie im Menübaum der Web-Oberfläche Kommunikationswege >> Socket-API und aktivieren Sie TCP-ASCII-Sockets.
Der TCP-Port kann bei Bedarf an die eigene Anwendung angepasst werden.
Wenn das Web-IO bei Änderung an den Inputs den Zustand automatisch an die Anwendung senden soll, setzen Sie die entsprechenden Häkchen unter Input-Trigger.
Außerdem müssen Outputs, die über die Anwendung geschaltet werden sollen, freigegeben werden.
Auf den Punkt IP-Adresse und Systemnamen voranstellen wird später noch eingegangen.
Zugriff über UDP
Zugriff über UDP
Anders als bei einem Telefongespräch gibt es bei UDP keine Verbindung. Ähnlich wie beim Sprechfunk werden die Informationen einfach gesendet. Client und Server gibt es also bei UDP nicht, sondern man spricht von UDP-Peers, die gleichberechtigt ihre Datagramme versenden.
Die Anwendung sendet Kommandos zum Web-IO (Request), die dann vom Web-IO beantwortet bzw. ausgeführt werden (Reply).
Web-IO für UDP-Zugriff konfigurieren
Wählen Sie im Menübaum der Web-Oberfläche Kommunikationswege >> Socket-API und aktivieren Sie UDP-Sockets.
Der TCP-Port kann bei Bedarf an die eigene Anwendung angepasst werden.
Outputs die über die Anwendung geschaltet werden sollen, müssen entsprechend freigegeben werden.
Auf den Punkt IP-Adresse und Systemnamen voranstellen wird später noch eingegangen.
ASCII-Kommandos
Aufbau und Struktur der ASCII-Kommandos
Unabhängig davon, ob per TCP oder UDP zugegriffen wird - die Kommandos und die Antworten darauf sind die gleichen.
Der Aufbau der Kommandos ist angelehnt an das ursprünliche HTTP-Protokoll. Jedes Kommando beginnt mit
der einleitenden Sequenz GET /
gefolgt von dem eigentlichen Kommando. Die hier gezeigte Groß-/Kleinschreibung ist genau so umzusetzen.
Mit ?
abgetrennt können Parameter folgen. Beim Web-IO Digital auf jeden Fall immer das Passwort mit der Syntax PW=password&
.
Jeder Parametersatz wird mit &
abgeschlossen, sodass zwei Parametersätze auch durch &
getrennt werden.
WICHTIG: Kommandos inklusive Parametersätzen dürfen nicht mit CR (Carriage Return) oder LF (Line Feed)
oder beidem abgeschlossen werden. In vielen Programmiersprachen gibt es die Methoden write
und writeln
.
Verwnden Sie nicht die Methode writeln
, da hierbei automatisch CR und LF angehangen werden.
Beispiel: Input-Abfrage
Als Beispiel hier das Kommando zum Abruf der Input-Schaltzustände. Das Web-IO ist mit dem Passwort blau geschützt.
GET /input?PW=blau&
Die Antwort des Web-IO sieht je nach Modell zum Beispiel so aus:
input;1
(Web-IO Digital 2xIn, 2xOut)
input;0001
(Web-IO Digital 12xIn, 12xOut bzw 12xIn, 6xRelais)
Der Aufbau besteht aus dem Schlüsselwort der Anfrage, mit Semikolon getrennt gefolgt von einem oder mehreren Werten. Als Abschluss hängt das Web-IO ein Null-Byte an.
Hier beginnt die Antwort also mit dem Schlüsselwort input
und es folgt der Wert
1
bzw. 0001
, der in hexadezimaler Schreibweiseen den Schaltzustand aller Inputs wiedergibt.
Hier konkret Input 0 = ON, alle anderen Inputs = OFF.
Zum besseren Verständnis der hexadezimalen Input-Codierung hier nochmal ein Beispiel für ein Web-IO mit 12 Inputs:
Im Zustand ON sind die Inputs 0,1,5,7,10,11. Die anderen Inputs sind im Zustand OFF. Aus diesem Bit-Muster ergibt sich eine Dualzahl, bei der ON-Bits = 1 sind und OFF-Bits = 0.
Hier also 1100 1010 0011
.
In hexadezimaler Schreibweise entspricht das CA3
bzw. in vierstelliger Darstellung 0CA3
.
Mehr zu hexadezimalen Zahlen finden Sie hier.
Beispiel: Setzen der Outputs
Das Kommando zum Setzen von Outputs hat einen ähnlichen Aufbau wie das input
-Kommando, hat aber mehr Parameter:
GET /outputaccess0?PW=blau&State=ON&
Die Ziffer hinter dem Schlüsselwort outputaccess
gibt an, welcher Output geschaltet werden soll - hier Output 0.
Mit State
wird übergeben, in welchen Zustand geschaltet wird. Möglich sind die Werte ON
,OFF
und TOGGLE
(Zustandswechsel).
Die Antwort des Web-IO sieht je nach Modell zum Beispiel so aus:
output;1
(Web-IO Digital 2xIn, 2xOut)
output;0001
(Web-IO Digital 12xIn, 12xOut bzw 12xIn, 6xRelais)
Genau wie bei der Input-Abfrage wird als Antwort das entsprechende Schlüsselwort gefolgt vom Bit-Muster der Output-Zustände plus Null-Byte gesendet. Unabhängig davon, welcher Output gesetzt wird - das Bit-Muster gibt immer den Zustand aller Outputs wieder.
Eine detaillierte Übersicht aller Kommandos finden Sie in der Kommandoübersicht oder im Programmierhandbuch zum Web-IO.