Toepassing
Met virtuele HTTP-ingangen kunt u waarden direct van een website of een XML-bestand uitlezen. Op die manier wordt het veel eenvoudiger om gegevens op te vragen van een apparaat met webinterface, want er is geen PicoC meer nodig.
Mogelijke toepassingsgebieden: Verwarmingssturing, PV-installatie, multimediatoepassingen, …
Basisprogrammering
VIRTUELE HTTP-INGANG INVOEGEN
Om een HTTP-ingang in te voegen, selecteert u in het periferievenster eerst de regel “Virtuele ingangen”. Vervolgens verschijnt rechtsboven de knop “Virtuele HTTP-ingang”. Door hierop te klikken wordt een virtuele HTTP-ingang ingevoegd.
Bij de eigenschappen van de virtuele HTTP-ingang voert u het protocol, het adres en de poort in van het sturend apparaat alsook het opvraaginterval.
In ons voorbeeld wordt een waarde van een website cyclisch opgevraagd. Eenvoudigheidshalve gebruiken we een Miniserver, maar dit werkt bij elk apparaat volgens hetzelfde schema.
Wanneer gebruikerverificatie noodzakelijk is, kunt u de gebruikersnaam en het wachtwoord als volgt opgeven:
http://BENUTZER:[email protected]
Bij HTTP-ingangen wordt alleen het Basic Authentication Scheme gebruikt.
In dit voorbeeld maken we verbinding met het IP-adres 192.168.0.17 met de gebruikersnaam “benutzer” en het wachtwoord “passwort”.
./dev/sps/io/Test/state is het webservice-commando om de status van een ingang op te vragen op de Miniserver.
Als een webservice direct op de Miniserver zelf moet worden opgevraagd, kan men in de plaats van “benutzer:[email protected]” ook gewoon “localhost“ ingeven.
VIRTUEEL HTTP-COMMANDO
Tot nu toe werd de website om de 10 seconden opnieuw geladen. Om echter een waarde te kunnen uitlezen, dient u nu een virtueel HTTP-commando in te voegen.
Selecteer daartoe in het periferievenster de voordien aangemaakte HTTP-ingang. Vervolgens verschijnt rechtsboven de knop “Virtueel HTTP-commando”. Door hierop te klikken wordt een nieuw HTTP-commando ingevoegd.
Voor we nu het HTTP-commando en de commandoherkenning kunnen configureren, moeten we weten hoe de website waarvan we de gegevens willen opvragen, opgebouwd is.
Daartoe roepen we de pagina gewoon op in een browser.
Zoals aangegeven in de schermopname staat op de pagina value=” en vervolgens de waarde die we willen opvragen:
Dit is belangrijk voor de commandoherkenning.
Hier geven we in: value=“\v
Dit betekent: neem de waardetekst (\v) die na value=” staat.
Een vaak voorkomende fout is dat \1 wordt gebruikt in plaats van \v. Op websites worden getallen vaak als individuele ASCII-tekens weergegeven. De ASCII-waarde is echter 38 hoger dan de eigenlijke getalwaarde. Het getal 3 wordt bijvoorbeeld geïnterpreteerd als 41.
Hier het resultaat van ons voorbeeld:
Om de 10 seconden vraagt de Miniserver via het IP-adres 192.168.0.17 de waarde op van de ingang Test.
GEAVANCEERDE COMMANDOHERKENNING
De commandoherkenning biedt nog talrijke andere mogelijkheden:
\v | Waardetekst: De waarde wordt overgenomen uit de ASCII-tekenreeks. De posities achter de komma moeten worden gescheiden door een komma of een punt. |
\1 | De numerieke waarde van de ontvangen byte wordt als minst significante byte (LSB) op de uitgang overgenomen (bits 0-7). |
\2 | De numerieke waarde van de ontvangen byte wordt in bits 8-15 op de uitgang overgenomen. |
\3 | De numerieke waarde van de ontvangen byte wordt in bits 16-23 op de uitgang overgenomen. |
\4 | De numerieke waarde van de ontvangen byte wordt als meest significante byte (MSB) op de uitgang overgenomen (bits 24-31). |
\h | Waardetekst hex: Op basis van een ASCII-tekenreeks wordt de waarde overgenomen en hexadecimaal weergegeven. |
\x | Hexadecimaal bijv. \x09 voor 0x09 |
\\ | \ (Backslash) |
\. | Willekeurig teken |
\w | Willekeurig woord |
\# | Willekeurig getal |
\t | Tabulatie (0x09) |
\b | Tabulatie (0x09) of spatie (0x20) |
\r | Carriage return (0x0D) |
\n | Line feed (0x0A) |
\d | Willekeurig cijfer (0-9) |
\m | Willekeurige letter (A-Z,a-z) of willekeurig cijfer (0-9) |
\a | Willekeurige letter (A-Z,a-z) |
\s12 | 12 tekens overslaan (\s17 = 17 tekens overslaan) |
\ixxx\i | ga naar tekst xxx bijv.: \ivalue\i springt naar value |
Het is mogelijk meerdere stuurtekens van de commandoherkenning in een commando te gebruiken.