Virtuele HTTP Ingang

Met de Virtual HTTP Input kunnen waarden van een webpagina worden gelezen. Dit vergemakkelijkt het ophalen van gegevens van apparaten met een webinterface.

Uit de Loxone Library kunnen geschikte templates voor de integratie van apparaten worden geïmporteerd.

Alleen het Basic Authentication Schema wordt ondersteund.

Het geautomatiseerd extraheren van gegevens van websites (Web scraping) en elk daaropvolgend gebruik van de geëxtraheerde gegevens moet worden uitgevoerd in overeenstemming met de servicevoorwaarden van de website, lokale regelgeving en toepasselijke normen.
Loxone aanvaardt geen aansprakelijkheid voor eventuele gevolgen die voortvloeien uit het niet naleven van de voorwaarden.

Inhoudsopgave


Eigenschappen↑

Korte beschrijving Beschrijving Eenheid Waardebereik Standaardwaarde
URL URL voor HTTP(S) query
Bv.: http://192.168.1.7:80/request.php
https://192.168.1.7:443/request.php
- - -
Opvraagcyclus Scan cyclus in seconden (Minimum 10s) s 10...604800 -
Time-out Time-out voor berichtontvangst
Verhogen op langzame apparaten of een slechte verbinding
ms 10...8000 -
Aantal toegestane time-outs Aantal mislukte aanvragen voordat een systeemmelding wordt weergegeven. Waarde 0 deactiveert de bewaking. - 0...100 -




Voorbeeld programmering↑

Eerst wordt een "Virtuele HTTP-ingang" gemaakt onder Virtuele ingangen:

Het webadres, een geschikte pollingcyclus, time-out en het aantal toegestane time-outs worden gedefinieerd in het eigenschappenvenster.
In dit voorbeeld wordt de waarde van de invoer "Temperatuur" opgehaald bij de Miniserver met behulp van een webserviceopdracht.
Als gebruikersauthenticatie vereist is, kunnen de gebruikersnaam en het wachtwoord als volgt worden ingevoerd: http://User:Password@IP-adres

Virtueel HTTP-invoercommando

Om waarden van deze pagina te halen, is een "Virtueel HTTP Invoercommando" nodig.
Er kan een willekeurig aantal commando's worden gemaakt om waarden op te halen.

Het zoekpatroon wordt gedefinieerd in de instellingen. Daarom kan een bewerkingsvenster worden geopend, waarin de broncode van de website wordt weergegeven om het navigeren naar de gewenste waarde te vergemakkelijken.

Deze invoer kan naar de programmeerpagina worden verplaatst met drag & drop.


Commando-herkenning↑

Commandoherkenning kan worden gebruikt om in een tekst of brontekst te navigeren en om waarden op te halen.

Tekens die worden gebruikt om een waarde te extraheren:

\v = numerieke waarde

\1 = waarde van byte geïnterpreteerd als eerste byte van de uitgang (\2, \3, ...)

- Als de ontvangen gegevens als hexadecimaal worden geïnterpreteerd (bijvoorbeeld "\x0A"), wordt het decimale equivalent (10 in dit voorbeeld) verkregen. Deze methode werkt ook voor meerdere hexadecimale bytes (bijvoorbeeld "\x0A\x0B"). Wanneer deze bytes gecombineerd worden, vormen ze het 32-bits gehele getal 0x0A0B, en \2\1 geeft 2571 in decimaal. Dezelfde waarde, geëxtraheerd met \1, resulteert in 10 in decimaal.

- Als de ontvangen gegevens als tekst worden geïnterpreteerd, vertegenwoordigt elke byte een ASCII-karakter. Bijvoorbeeld, "Loxone" begint bijvoorbeeld met een teken met de ASCII-code 76.

- De gegevens kunnen worden gebruikt als een signed integer door rekening te houden met de juiste bytevolgorde en indien nodig sign-extensie toe te passen.

\h = waarde geïnterpreteerd als hexadecimaal getal

- Als de ontvangen gegevens een hexadecimale tekenreeks zijn die als tekst wordt weergegeven (bijvoorbeeld "0A"), kan deze worden omgezet naar het decimale equivalent (10 in dit voorbeeld).

- Deze methode werkt ook voor meerdere hexadecimale gegevens (bijv. "0A0B"). Wanneer omgezet van hex naar decimaal, komt "0A0B" overeen met 2571.

Karakters om door de tekst te navigeren:

\. = elk teken

\w = elk woord

# = een willekeurig getal

\d = cijfers 0-9

\m = teken A-Z/a-z/0-9

\a = teken A-Z/a-z

\s12 = sla 12 tekens over
- Bijvoorbeeld, \s12 slaat 12 tekens over wanneer de ontvangen gegevens een tekstreeks zijn.

- Als de ontvangen gegevens een hex-string is die wordt weergegeven met escape-reeksen (bijvoorbeeld \xFExFFx00x12xA0xB0xC1xD2xE3xF4x11x16x17), dan zal \s12 12 hexabytes overslaan. In dit geval springt het achter \x16, waardoor in totaal 48 tekstkarakters worden overgeslagen (omdat elke hexabyte wordt weergegeven door vier tekstkarakters).

\iTekst\i = spring achter "Tekst"

Speciale tekens:

\x = Hexadecimaal getal (bijv. 0x09)

/ = Schuine streep

\t = Tab (0x09)

\b = Spatie (0x02) of Tab (0x09)

â§µr = Return (0x0d)

â§µn = Newline (0x0a)

In het volgende voorbeeld willen we de huidige prijs van aardgas opvragen:

Aangezien de tekst "Aardgas" constant is, kunnen we naar deze positie in de tekst springen. Om de huidige prijs te extraheren, moeten we de tijdsaanduiding overslaan. Er zijn verschillende opties om dit te doen:

Variant 1 via \d\a
Met \d enkele cijfers en met \a enkele tekens kunnen worden overgeslagen:

Variant 2 via \w
Met \een getal en met \w kan elk woord worden overgeslagen:

Variant 3 via \s8
Omdat in dit voorbeeld de tijd altijd hetzelfde aantal cijfers en tekens heeft, kunnen deze met \s8 worden overgeslagen: