|
<< Click to Display Table of Contents >> Navigation: Komponenten > Kommunikation > Multi-IO-IP > Wie stelle ich mit Multi-IO eine Geräteverbindung her? > Beispielverbindung über HTTP |
In dem folgenden Beispiel soll ein Web Request abgesetzt werden und keine auszuwertende Antwort empfangen werden. Im zweiten Beispiel soll eine Antwort in Form eines XML Dokuments empfangen werden, ein bestimmter Wert extrahiert und an das interne Netz weitergeleitet werden.
Beispiel 1
Ein Gerät zum Abspielen von MP3 Dateien, das eine HTTP Schnittstelle besitzt, soll dazu bewegt werden eine Playlist abzuspielen. Außerdem soll mit einem weiteren Befehl die laufende Playlist wieder gestoppt werden. Das Gerät hat die IP Adresse 192.168.1.100 und der interne Webserver lauscht auf Port 80. Laut Dokumentation soll die Request URL für die beiden beispielhaften Kommandos folgendermaßen aussehen:
Befehl:
Kommando Play: GET /commandscript?cmd=play
Kommando Stop: GET /commandscript?cmd=stop
URL:
http://192.168.1.100:80
Es gibt nun mehrere Ansätze dieses Kommando mit der Multi-IO Komponente erzeugen und versenden zu lassen.
Ein Ansatz ist, OHNE ausgewählten Prefix/Postfix Eintrag und OHNE ausgewählten Datenfilter Eintrag (denn in diesem Beispiel 1 wollen wir keine Antwort erhalten und auswerten) einen Request nur mit den Einstellungen dieses Dialogs abzusetzen. Legen Sie einen Eintrag an und geben Sie einen eindeutigen Namen ein. Anschließend geben Sie unter "Befehl" die eigentliche Request URL ein.
Übertragungsart: HTTP
kein Prefix/Postfix
kein Datenfilter
keine Einstellungen
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Url |
Http Method |
Antwort umleiten |
|---|---|---|---|---|---|---|
EingangBeispiel1 |
kein |
kein |
/commandscript?cmd=play |
http://192.168.1.100:80 |
Get |
Nein |
Da der Befehls-Eintrag lediglich der URL angehängt wird, kann der eigentliche Befehl ebenso vollständig in dem Feld „Url“ eingetragen werden. Ein möglicher Wert im Feld „Befehl“ wird nur dann an die URL angehängt, wenn dieser Datenpunkt mit einem EisBär Ausgang vom Datentyp Ein/Aus oder einem DataPopintValue vom Typ Boolean verbunden und ausgelöst wird.
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Url |
Http Method |
Antwort umleiten |
|---|---|---|---|---|---|---|
EingangBeispiel1 |
kein |
kein |
|
http://192.168.1.100:80/commandscript?cmd=play |
Get |
Nein |
Ein weiterer dynamischerer Ansatz ist für mehrere verschiedenartige Befehle, die sich vom Aufbau her ähneln, lediglich EINEN Eintrag in der Eingangsliste bereitzustellen. Die an die Request URL des abzusetzenden Befehls anzuhängenden Daten werden über den mit diesem Eingang verbundenen Ausgang vom Datentyp Zeichenketten oder über einen DataPointValue vom Typ String an diesen Eingang der Multi-IO Komponente übertragen. Dann wird der Eintrag in dem Feld „Befehl“ dieses Dialogs ignoriert und der übertragene Wert wird stattdessen genommen.
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Url |
Http Method |
Antwort umleiten |
|---|---|---|---|---|---|---|
EingangBeispiel1 |
kein |
kein |
|
http://192.168.1.100:80/commandscript?cmd= |
Get |
Nein |
Ein solcher dynamischer Datenpunkt wird mit mehreren Ausgängen anderer Komponenten verbunden werden, die ihrerseits die anzuhängenden Teilebefehle übermitteln. So wird als Beispiel ein Buttonschalter, der mit seinem „KNX-Wert An“ Ausgang mit diesem Eingang der Multi-IO Komponente verbunden ist, lediglich die Zeichenkette „play“ senden und beispielsweise für „KNX-Wert Aus“ die Zeichenkette „stop“. Diese wird an die URL angehängt und versendet. Jeder Knopfdruck hat im Wechsel das Abspielen und Stoppen des MP3 Songs zur Folge.
Wählt man einen Eintrag im Feld „Prefix/Postfix“ aus, so werden die Zeichenketten wie folgt
Zusammengesetzt:
Request URL = <INAHLT_FELD_URL>
+ <PREFIX>
+ <REQUEST_ODER_DYNAMISCHERSTRING>
+ <POSTFIX>
Beispiel 2
Im zweiten Beispiel soll aus einem empfangenen XML Dokument ein Wert gezielt extrahiert und an ein EisBär-Netz gesendet werden. Ein Eintrag zum Abfragen eines Web Services ist bereits angelegt (TriggerWeather). Dieser wird z.B. mit einer Schaltfläche angesteuert. Die Antwort wird auf einen zweiten Datenpunkt (InputWeatherTemp) umgeleitet und ein Datenfilter Eintrag ausgewählt (siehe folgende Tabelle).
Einträge:
Name |
Prefix/Postfix |
Datenfilter |
Befehl |
Url |
Http Method |
Antwort umleiten |
|---|---|---|---|---|---|---|
TriggerWeather |
kein |
kein |
|
http://xoap.weather.com/weather/local/69412?cc=*&dayf=1&unit=m |
Get |
InputWeatherTemp |
InputWeatherTemp |
kein |
FilterWeatherCurrentTemp |
|
|
Get |
|
Angenommen das erwartete XML Dokument gibt u.a. die Temperatur an gewünschten Standort an und es soll der Wert des Knotens in der folgenden Abbildung abgefragt werden (Wert fett markiert):
<weather ver="2.0">
<head>
<locale>en_US</locale>
<form>MEDIUM</form>
<ut>C</ut>
<ud>km</ud>
<us>km/h</us>
<up>mb</up>
<ur>mm</ur>
</head>
<loc id="69412">
<dnam>Eberbach, BW, Germany</dnam>
<tm>11:40 AM</tm>
<lat>49.47</lat>
<lon>9.01</lon>
<sunr>6:21 AM</sunr>
<suns>8:25 PM</suns>
<zone>2</zone>
</loc>
<cc>
<lsup>4/21/15 11:25 AM CEST</lsup>
<obst>Michelstadt-Vielbrunn, BW, GM</obst>
<tmp>14</tmp>
<flik>14</flik>
<t>Partly Cloudy</t>
<icon>30</icon>
.
.
.
.
.
.
</weather>
In der Einträge-Liste dieses Beispiels ist im Feld „Datenfilter“ der Eintrag FilterWeatherCurrentTemp ausgewählt ist. Die nächste Abbildung zeigt wie ein Filtereintrag aussieht, um diesen Wert des XML Dokuments zu lokalisieren und anschließend in einen EisBär internen Datentyp zu konvertieren:
Filter:
Name |
Filtertyp |
Filterausdruck |
Datentyp |
Bedingung |
Text Ersetzung |
|---|---|---|---|---|---|
FilterWeatherCurrentTemp |
XML |
/weather/cc/tmp |
DPT 14.* |
|
|
Der markierte Text entspricht dem Pfad des zu suchenden Knotens in dem XML Dokument. Das erste Wort steht für den Wurzelknoten, der zweite für den zu suchenden Knoten unterhalb dieses Wurzelknotens usw.! Für eine detailliertere Beschreibung auch wie Knoten mit bestimmten Attributwerten angesprochen werden ist im Kapitel Multi-IO-IP\Filter\XML_Filter zu entnehmen. Hat die Komponente nach dem Empfang des Dokuments diesen Wert extrahiert wird der Wert in den Datentyp konvertiert, der im Feld „Datentyp“ ausgewählt wird. Die auswählbaren Datentypen entnehmen Sie Kapitel Unterstützte Datentypen.
Kann die Konvertierung nicht stattfinden, wird ein Fehlertext auf den Ausgang „Fehlermeldungen“ der Multi-IO Komponente ausgegeben. Diese kann mit einem Wertabhängigen Text angezeigt werden.
Ist die Konvertierung erfolgreich verlaufen, so wird der Wert an die Komponente geschickt, die mit dem Datenpunkt InputWeatherTemp verbunden ist.