Virtuální HTTP vstup

Pomocí virtuálního HTTP vstupu lze načítat hodnoty z webové stránky. To usnadňuje načítání dat ze zařízení s webovým rozhraním.

Z Loxone Library lze importovat vhodné šablony pro integraci zařízení.

Podporováno je pouze Basic Authentication Scheme.

Automatizované získávání dat z webových stránek (web scraping) a jakékoli následné použití získaných dat by mělo být prováděno v souladu s podmínkami služby webových stránek, místními předpisy a platnými normami.
Loxone nenese odpovědnost za jakékoli důsledky vyplývající z nedodržení podmínek.

Obsah


Vlastnosti

Krátký popis Popis Jednotky Rozsah hodnot Výchozí hodnota
URL URL pro HTTP(S) dotazovací cyklus
např. http://192.168.1.7:80/request.php
https://192.168.1.7:443/request.php
- - -
Interval dotazování Dotazovací cyklus v sekundách (minimum 10s) s 10...604800 -
Timeout Timeout pro příchozí zprávy
Při pomalejších zařízeních nebo při špatném spojení nastavte vysokou hodnotu
ms 10...8000 -
Počet povolených timeoutů Počet neúspěšných dotazů před zobrazením systémové zprávy. Hodnota 0 deaktivuje monitorování. - 0...100 -




Příklad programování

Nejprve se v části Virtuální vstupy vytvoří "Virtuální HTTP vstup":

Webová adresa, vhodný cyklus dotazování, časový limit a počet povolených časových limitů jsou definovány v okně vlastností.
V tomto příkladu je hodnota vstupu "Teplota" načtena z Miniserveru pomocí příkazu webové služby.
Pokud je vyžadováno ověření uživatele, lze zadat uživatelské jméno a heslo takto: http://Uživatel:Heslo@IP-adresa

Virtuální vstup HTTP příkazu

Pro získání hodnot z této stránky je vyžadován "virtuální vstupní příkaz HTTP".
Pro získání hodnot lze vytvořit libovolný počet příkazů.

Vzor vyhledávání je definován v nastavení. Proto lze otevřít editační okno, kde se zobrazí zdrojový kód webové stránky, aby bylo možné snadněji přejít na požadovanou hodnotu.

Tento vstup lze přesunout na programovací stránku pomocí drag & drop.


Rozpoznání příkazu

Rozpoznání příkazu lze použít k navigaci v textu nebo zdrojovém textu a k získání hodnot.

Znaky použité k extrakci hodnoty:

\v = číselná hodnota

\1 = hodnota bytu interpretovaná jako první byte výstupu (\2, \3, ...)

- Pokud jsou přijatá data interpretována jako hexadecimální (např. "\x0A"), získá se jejich desítkový ekvivalent (v tomto příkladu 10). Tato metoda funguje také pro více hexadecimálních bajtů (např. "\x0A\x0B"). Po spojení těchto bajtů vznikne 32bitové celé číslo 0x0A0B a \2\1 vrátí 2571 v desítkové soustavě. Stejná hodnota, extrahovaná pomocí \1, dává v desítkové soustavě hodnotu 10.

- Pokud jsou přijatá data interpretována jako text, každý bajt reprezentuje znak ASCII. Například "Loxone" odpovídá znaku nového řádku s ASCII kódem 76.

- Data lze použít jako znaménkové celé číslo, pokud se zohlední správné pořadí bytů a v případě potřeby se provede rozšíření znaménka.

\h = hodnota interpretovaná jako hexadecimální číslo

- Pokud přijatá data jsou hexadecimální řetězec reprezentovaný jako text (např. "0A"), lze jej převést na jeho desítkový ekvivalent (v tomto příkladu 10).

- Tato metoda funguje také pro více hexadecimálních dat (např. "0A0B"). Při převodu z hexadecimálního na desítkový systém odpovídá "0A0B" číslu 2571.

Znaky pro navigaci v textu:

\. = jakýkoli znak

\w = jakékoli slovo

\# = jakékoli číslo

\d = číslice 0-9

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

\a = znak A-Z/a-z

\s12 = přeskočit 12 znaků
- Například \s12 přeskočí 12 znaků, když přijatá data jsou textový řetězec.

- Pokud přijatá data jsou hexadecimální řetězec reprezentovaný escape sekvencemi (např. \xFE\xFF\x00\x12\xA0\xB0\xC1\xD2\xE3\xF4\x11\x16\x17), pak \s12 přeskočí 12 hexadecimálních bajtů. V tomto případě to skočí za \x16, čímž efektivně přeskočí celkem 48 textových znaků (protože každý hexadecimální bajt je reprezentován čtyřmi textovými znaky).

\iText\i = přeskočit za "Text"

Speciální znaky:

\x = Hexadecimální číslo (např. 0x09)

\\ = Lomeno

\t = Tabulátor (0x09)

\b = Mezera (0x02) nebo Tabulátor (0x09)

⧵r = Return (0x0d)

⧵n = Nový řádek (0x0a)

V následujícím příkladu chceme získat aktuální cenu zemního plynu:

Protože text "Natural Gas" je konstantní, můžeme přeskočit na tuto pozici v textu. Abychom získali aktuální cenu, musíme přeskočit údaj o čase. Existuje několik možností, jak to udělat:

Varianta 1 přes \d\a
S \d jednotlivými číslicemi a s \a jednotlivými znaky lze přeskočit:

Variant 2 přes \#\w
S \# jako číslem a s \w jako libovolným slovem lze přeskočit:

Variant 3 přes \s8
Vzhledem k tomu, že v tomto příkladu bude čas vždy mít stejný počet číslic a znaků, mohou být přeskočeny pomocí \s8: