Virtueller http Eingang

Anwendung

Mit virtuellen HTTP Eingängen könne Sie Werte direkt von einer Website oder einem XML-File auslesen. So wird die Datenabfrage von einem Gerät mit Weboberfläche wesentlich erleichtert, da kein PicoC mehr notwendig ist.

Mögliche Anwendungsgebiete: Heizungssteuerung, PV-Anlage, Multimedia Anwendungen, …

Grundprogrammierung

VIRTUELLEN HTTP EINGANG EINFÜGEN

Um einen HTTP Eingang einzufügen, markieren Sie zunächst im Peripherie Fenster die Zeile „Virtuelle Eingänge“. Anschließend erscheint rechts oben die Schaltfläche „Virtueller HTTP Eingang“. Durch einen Klick darauf wird ein Virtueller HTTP Eingang eingefügt.

virtueller_http

In den Eigenschaften des virtuellen HTTP Einganges werden Protokoll, Adresse und Port des zu steuernden Gerätes sowie das Abfrageintervall eingetragen.

In unserem Beispiel wird ein Wert von einer Website zyklisch abgefragt. Der Einfachheit halber verwenden wir einen Miniserver, es funktioniert allerdings bei jedem Gerät nach dem gleichen Schema.

Wenn eine Benutzerauthentifizierung notwendig ist, können Benutzername und Passwort wie folgt mitgegeben werden:

http://BENUTZER:ADMIN@IP-Adresse

In diesem Beispiel verbinden wir uns mit der IP Adresse 192.168.0.17 mit dem Benutzernamen „benutzer“ und dem Passwort „passwort“.

./dev/sps/io/Test/state ist der Webservice-Befehl für die Statusabfrage eines Einganges am Miniserver.

vitueller_eigens

 

VIRTUELLER HTTP BEFEHL

Bis jetzt wird die Webseite alle 10 Sekunden neu geladen. Um jedoch einen Wert auslesen zu können, müssen Sie nun einen Virtuellen HTTP Befehl einfügen.

Markieren Sie dazu im Peripherie Fenster den zuvor erstellten HTTP Eingang. Anschließend erscheint rechts oben die Schaltfläche „Virtueller HTTP Befehl“. Durch einen Klick darauf wird ein neuer HTTP Befehl eingefügt.

virtuell_befehl

Bevor wir nun den HTTP Befehl sowie die Befehlserkennung konfigurieren können, müssen wir wissen, wie die Webseite, von der wir die Daten abfragen wollen, aufgebaut ist.

Dazu rufen wir die Seite einfach in einem Browser auf.

Wie im Screenshot zu sehen steht auf der Seite value=“ und dann der Wert, den wir abfragen wollen:

browser_response

Dies ist nun für die Befehlserkennung wichtig.

Hier tragen wir ein: value=“\v

Das bedeutet nimm den Wertetext (\v), der nach value=“ steht.

virtuell_befehlserkennung

Ein häufiger Fehler ist die Verwendung von \1 statt \v. Auf Webseiten werden Zahlen oft als einzelne ASCII-Zeichen dargestellt. Der ASCII-Wert ist allerdings um 38 höher als der eigentliche Zahlenwert. So würde zum Beispiel die Zahl 3 als 41 interpretiert werden.

Hier nun das Ergebnis von unserem Beispiel:

Alle 10 Sekunden wird vom Miniserver mit der IP-Adresse 192.168.0.17 der Wert vom Eingang Test abgefragt.

wertabfrage

 

ERWEITERTE BEFEHLSERKENNUNG

Die Befehlserkennung bietet noch viele weitere Möglichkeiten:

\vWertetext: Aus einer ASCII Zeichenfolge wird der Wert übernommen. Die Kommastellen müssen durch einen Beistrich oder durch einen Punkt getrennt sein.
\1Der Nummerische Wert des empfangenen Bytes wird als niederwertigstes Byte (LSB) am Ausgang übernommen (Bits 0 – 7).
\2Der Nummerische Wert des empfangenen Bytes wird in die Bits 8 – 15 am Ausgang übernommen.
\3Der Nummerische Wert des empfangenen Bytes wird in die Bits 16 – 23 am Ausgang übernommen.
\4Der Nummerische Wert des empfangenen Bytes wird als höchstwertiges Byte (MSB) am Ausgang übernommen (Bits 24 – 31).
\hWertetext hex: Aus einer ASCII Zeichenfolge wird der Wert übernommen und Hexadezimal dargestellt.
\xHexadezimal z.B. \x09 für 0x09
\\\ (Backslash)
\.Irgendein Zeichen
\wIrgendein Wort
\#Irgendeine Zahl
\tTabulator (0x09)
\bTabulator (0x09) oder Leerzeichen (0x20)
\rCarriage Return (0x0D)
\nLine Feed (0x0A)
\dIrgendeine Ziffer (0-9)
\mIrgendein Buchstabe (A-Z,a-z) oder irgendeine Ziffer (0-9)
\aIrgendein Buchstabe (A-Z,a-z)
\s1212 Zeichen überspringen (\s17 = 17 Zeichen überspringen)
\ixxx\ispringe nach Text xxx z.B.: \ivalue\i springt nach value

 

Es ist möglich, mehrere Steuerzeichen der Befehlserkennung in einem Befehl zu verwenden.