Beispielverbindung über HTTP

<< 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.