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 te navigeren in een tekst of brontekst en om waarden op te halen.
Tekens gebruikt om een waarde te extraheren:
\v = numerieke waarde
\1 = waarde van byte geïnterpreteerd als 1e byte van de uitgang (\2, \3, ...)
- Als de ontvangen gegevens als hexadecimaal worden geïnterpreteerd (bijv, "\x0A"), dan 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 die met \1 wordt geëxtraheerd, resulteert in 10 in decimaal.
- Als de ontvangen gegevens als tekst worden geïnterpreteerd, vertegenwoordigt elke byte een ASCII-teken. Bijvoorbeeld: "Loxone" komt overeen met het teken Line Feed met een ASCII-code van 76.
- De gegevens kunnen worden gebruikt als een gesigneerd geheel getal door de juiste bytevolgorde in acht te nemen en indien nodig tekenuitbreiding toe te passen.
\h = waarde geïnterpreteerd als hexadecimaal getal
- Als de ontvangen gegevens een hexadecimale tekenreeks zijn die wordt weergegeven als tekst (bijv, "0A"), kan deze worden geconverteerd naar het decimale equivalent (10 in dit voorbeeld).
- Deze methode werkt ook voor meervoudige hexdata (bijvoorbeeld "0A0B"). Bij omzetting van hex naar decimaal komt "0A0B" overeen met 2571.
Tekens 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 = 12 tekens overslaan
- Bijvoorbeeld, \s12 slaat 12 tekens over als de ontvangen gegevens een tekststring is.
- Als de ontvangen gegevens een hex-tekenreeks is die wordt weergegeven met escape-reeksen (bijv, \b>\s12 worden 12 hexabytes overgeslagen. In dit geval springt het achter \x16, waardoor in totaal 48 tekstkarakters worden overgeslagen (omdat elke hexabyte wordt vertegenwoordigd door vier tekstkarakters).
\iText\i = springen achter "Text"
Speciale tekens:
\x = hexadecimaal getal (bijv.g. 0x09)
\t = Slash
\t = Tab (0x09)
\b = Spatie (0x02) of Tab (0x09)
\r = Return (0x0d)
\n = Newline (0x0a)
In het volgende voorbeeld willen we steeds de huidige aardgasprijs ophalen:
Aangezien de aanduiding "Aardgas" steeds dezelfde is, springen we naar deze positie in de tekst. Om de tijdsaanduiding over te slaan en de prijs te laten ophalen, zijn er verschillende mogelijkheden:
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: