Virtueller HTTP Eingang

Mit dem Virtuellen HTTP Eingang können Werte von einer Webseite ausgelesen werden. Damit wird die Datenabfrage von Geräten mit Weboberfläche erleichtert.

Aus der Loxone Library können passende Vorlagen zur Einbindung von Geräten importiert werden.

Es wird nur das Basic Authentication-Schema unterstützt.

Das automatisierte Abrufen von Daten von Websites (Web Scraping) und die anschließende Nutzung dieser Daten sollten gemäß den Nutzungsbedingungen der Website, den lokalen Vorschriften und geltenden Standards erfolgen.
Loxone übernimmt keine Haftung für etwaige Konsequenzen bei Nichteinhaltung.

Inhaltsverzeichnis


Eigenschaften

Kurzbeschreibung Beschreibung Einheit Wertebereich Standardwert
URL URL für HTTP(S) Abfrage
z.B.: http://192.168.1.7:80/request.php
https://192.168.1.7:443/request.php
- - -
Abfragezyklus Abfragezyklus in Sekunden (Minimum 10s) s 10...604800 -
Timeout Zeit, die der Miniserver nach einem Lese- oder Schreibbefehl auf eine Antwort vom Gerät wartet, bevor der Vorgang als gescheitert gilt.
Bei langsamen Geräten oder schlechter Verbindung erhöhen.
ms 10...8000 -
Anzahl erlaubte Timeouts Anzahl fehlgeschlagene Abfragen bevor eine Systemmeldung angezeigt wird. Wert 0 deaktiviert die Überwachung. - 0...100 -




Beispielprogrammierung

Zuerst wird unter Virtuelle Eingänge ein "Virtueller HTTP Eingang" erstellt:

Im Eigenschaftenfenster werden die Webadresse, ein geeigneter Abfragezyklus, Timeout und die Anzahl der erlaubten Timeouts festgelegt.
In diesem Beispiel wird mittels eines Webservice Befehls der Wert am Eingang "Temperature" vom Miniserver abgerufen.
Wenn eine Benutzerauthentifizierung notwendig ist, können Benutzername und Passwort wie folgt mitgegeben werden: http://Benutzer:Passwort@IP-Adresse

Virtueller HTTP Eingang Befehl

Um nun Werte von dieser Seite auslesen zu können, wird ein "Virtueller HTTP Eingangs Befehl" benötigt.
Dabei können beliebig viele Befehle erstellt werden, um Werte abzufragen.

In den Einstellungen wird das Suchmuster definiert. Dazu kann ein Bearbeitungsfenster geöffnet werden, hier wird der Quellcode der Webseite angezeigt, um das Navigieren zum gewünschten Wert zu erleichtern.

Dieser Eingang kann dann per Drag & Drop auf die Programmierseite gezogen werden.


Befehlserkennung

Mit der Befehlserkennung kann in einem Text bzw. Quelltext navigiert und Werte ausgelesen werden.

Zeichen zum Auslesen eines Wertes:
\v = numerischer Wert
\1 = Byte interpretiert als 1. Byte des Ausgabewertes (\2, \3, ...)
- Wenn die empfangenen Daten als hexadezimal interpretiert werden (z. B. „\x0A“), erhält man das dezimale Äquivalent (10 in diesem Beispiel). Diese Methode funktioniert auch für mehrere hexadezimale Bytes (z. B. „\x0A\x0B“). Wenn diese Bytes kombiniert werden, bilden sie die 32-Bit-Ganzzahl 0x0A0B, und \2\1 gibt 2571 in Dezimalzahlen zurück. Derselbe Wert, wenn er mit \1 extrahiert wird, ergibt 10 in Dezimalzahlen.
- Wenn die empfangenen Daten als Text interpretiert werden, stellt jedes Byte ein ASCII-Zeichen dar. Beispielsweise entspricht „Loxone“ dem Line Feed-Zeichen mit dem ASCII-Code 76.
- Die Daten können als vorzeichenbehaftete Ganzzahl verwendet werden, indem die korrekte Byte-Reihenfolge berücksichtigt und gegebenenfalls eine Vorzeichenerweiterung angewandt wird.
= Wert, der als Hexadezimalzahl interpretiert wird
- Wenn es sich bei den empfangenen Daten um eine als Text dargestellte Hex-Zeichenkette handelt (z. B., „0A"), kann sie in ihr dezimales Äquivalent (10 in diesem Beispiel) umgewandelt werden.
- Diese Methode funktioniert auch für mehrere Hex-Daten (z. B. ‚0A0B‘). Bei der Umwandlung von Hex in Dezimal entspricht „0A0B“ 2571.

Zeichen zur Navigation durch den Text:
\. = beliebiges Zeichen
\w = beliebiges Wort
\# = beliebige Zahl
\d = Ziffern 0-9
\m = Zeichen A-Z/a-z/0-9< br>\a = Zeichen A-Z/a-z
\s12 = 12 Zeichen überspringen
- Zum Beispiel überspringt \s12 12 Zeichen, wenn die empfangenen Daten eine Textzeichenfolge sind.
- Wenn die empfangenen Daten eine Hex-Zeichenkette sind, die mit Escape-Sequenzen dargestellt wird (z. B., \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), dann überspringt \s12 12 Hex-Bytes. In diesem Fall springt es hinter \x16, wodurch insgesamt 48 Textzeichen übersprungen werden (da jedes Hex-Byte durch vier Textzeichen repräsentiert wird).
\iText\i = Sprung hinter „Text“

Sonderzeichen:
\x = Hexadezimalzahl (z. g. 0x09)
\\ = Schrägstrich
\t = Tab (0x09)
\b = Leerzeichen (0x02) oder Tabulator (0x09)
\r = Return (0x0d)
\n = Newline (0x0a)

Im folgenden Beispiel möchten wir immer den aktuellen Erdgaspreis herausfiltern:

Da die Angabe "Natural Gas" immer gleich ist, hüpfen wir an diese Stelle im Text. Um die Zeitangabe zu überspringen um den Preis auslesen zu lassen, gibt es verschiedene Möglichkeiten:

Variante 1 via \d\a
Mit \d können einzelne Ziffern und mit \a einzelne Zeichen übersprungen werden:

Variante 2 via \#\w
Mit \# kann eine Zahl und mit \w kann ein beliebiges Wort übersprungen werden:

Variante 3 via \s8
Da in diesem Beispiel die Zeitangabe immer gleich viele Ziffern und Zeichen haben wird, können diese mit \s8 übersprungen werden: