Anwendung
Mit virtuellen HTTP Eingängen können Werte (Zahlen) direkt von einer Website oder einem XML-File ausgelesen werden. 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.
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
Es wird bei HTTP Eingängen nur das Basic Authentication Scheme benutzt.
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.
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.
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:
Dies ist nun für die Befehlserkennung wichtig.
Hier tragen wir ein: value=“\v
Das bedeutet nimm den Wertetext (\v), der nach value=“ steht.
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.
ERWEITERTE BEFEHLSERKENNUNG
Die Befehlserkennung bietet noch viele weitere Möglichkeiten:
\v | Wertetext: Aus einer ASCII Zeichenfolge wird der Wert übernommen. Die Kommastellen müssen durch einen Beistrich oder durch einen Punkt getrennt sein. |
\1 | Der Nummerische Wert des empfangenen Bytes wird als niederwertigstes Byte (LSB) am Ausgang übernommen (Bits 0 – 7). |
\2 | Der Nummerische Wert des empfangenen Bytes wird in die Bits 8 – 15 am Ausgang übernommen. |
\3 | Der Nummerische Wert des empfangenen Bytes wird in die Bits 16 – 23 am Ausgang übernommen. |
\4 | Der Nummerische Wert des empfangenen Bytes wird als höchstwertiges Byte (MSB) am Ausgang übernommen (Bits 24 – 31). |
\h | Wertetext hex: Aus einer ASCII Zeichenfolge wird der Wert übernommen und Hexadezimal dargestellt. |
\x | Hexadezimal z.B. \x09 für 0x09 |
\\ | \ (Backslash) |
\. | Irgendein Zeichen |
\w | Irgendein Wort |
\# | Irgendeine Zahl |
\t | Tabulator (0x09) |
\b | Tabulator (0x09) oder Leerzeichen (0x20) |
\r | Carriage Return (0x0D) |
\n | Line Feed (0x0A) |
\d | Irgendeine Ziffer (0-9) |
\m | Irgendein Buchstabe (A-Z,a-z) oder irgendeine Ziffer (0-9) |
\a | Irgendein Buchstabe (A-Z,a-z) |
\s12 | 12 Zeichen überspringen (\s17 = 17 Zeichen überspringen) |
\ixxx\i | springe nach Text xxx z.B.: \ivalue\i springt nach value |
Es ist möglich, mehrere Steuerzeichen der Befehlserkennung in einem Befehl zu verwenden.