HTTP GET v I/O modulech Quido - jak na to?

I/O moduly Quido jsou určené pro vzdálené ovládání a dohled technologií. Mají vstupy pro kontakty a napětí a na výstupech výkonná relé. Přes HTTP GET je možné snadno Quida ovládat. A stav vstupů a výstupů umí Quida HTTP GETem posílat na vzdálený server. V tomto článku se dozvíte, jak je použití HTTP GETů jednoduché.

HTTP GET v Quidech slouží pro dvě základní funkce:

  • Ovládání Quida: GETem lze snadno jednotlivě i hromadně ovládat výstupy a nulovat počítadla na vstupech.
  • Odesílání stavu: Periodicky nebo při jakékoli změně se GETem odešle aktuální stav vstupů (i počítadel), výstupů a teploměru.

Ovládání Quida

Základním použitím příkazu HTTP GET v Quidech je přímé ovládání výstupů a nulování počítadel. Je to prakticky nejjednodužší způsob jak Quido ovládat z Vašeho systému.

Příklad ovládání Quida HTTP GETem.

Následujícími příkazy lze snadno ovládat výstupy a čítače na Quidu. Pro příjem GETů je určený skript set.xml v Quidu. Přístup k tomuto skriptu je zabezpečen jménem a heslem uživatele.

Sepnutí výstupu

Příklad: set.xml?type=s&id=1
Tento příkaz sepne výstup s číslem v parametru id (v tomto příkladu jde o výstup OUT1).
Přidáním parametru time lze nastavit na jak dlouho má být výstup sepnutý. Lze zadat číslo z rozsahu 1 až 255, který odpovídá sepnutí na 0,5 - 127,5 sec.

Rozepnutí výstupu

Příklad: set.xml?type=r&id=5
Přidáním parametru time lze nastavit na jak dlouho má být výstup rozepnutý. Lze zadat číslo z rozsahu 1 až 255, který odpovídá rozepnutí na 0,5 - 127,5 sec.

Invertovat výstup

Příklad: set.xml?type=i&id=12
Tento příkaz invertuje stav výstupu s číslem v parametru id.

Spuštění pulzu na výstupu

Příklad: set.xml?type=p&id=2
(Délka pulzu se nastavuje individuálně pro každý výstup na webovém rozhraní Quida.) 

Odečet od čítače

Příklad: set.xml?type=c&id=3&cnt=274
Pomocí tohoto příkazu lze odečíst od aktuálního stavu čítače zadané číslo. Číslo čítače je v parametru id. Odečítaná hodnota je v parametru cnt. (Nelze odečíst číslo větší než je napočítané.)
(Tento příkaz není implementován v Quido ETH 3/0, 3/0B a 0/2. Odečet lze realizovat pomocí XML odpovědi popsané v dokumentaci Quido ETH na straně 40 a 41.)

Nulování všech čítačů

Příklad: set.xml?type=C
Tímto lze odečíst aktuální hodnotu od všech čítačů najednou. (Tento příkaz není implementován v Quido ETH 3/0, 3/0B a 0/2. Odečet lze realizovat pomocí XML odpovědi popsané v dokumentaci Quido ETH na straně 40 a 41.)

Sepnutí všech výstupů

Příklad: set.xml?type=S
Takto lze sepnout najednou všechny výstupy (pokud jsou v manuálním režimu).

Rozepnutí všech výstupů

Příklad: set.xml?type=R
Takto lze rozepnout najednou všechny výstupy (pokud jsou v manuálním režimu).

Hromadné nastavení více výstupů najednou

Příklad: set.xml?type=A&sts=00110x01
Takto lze nastavit stav více výstupů současně. (Výše uvedený příklad je pro Quido ETH 8/8, takže počet znaků je 8.) První znak v pořadí představuje výstup OUT1. Je očekávaný některý z těchto tří znaků: 0 (rozepnout výstup), 1 (sepnout výstup) nebo x (nechat výstup beze zmeny)

Odpověď na ovládací HTTP GET

Odpověď na nastavení je ve formátu XML. Příklad odpovědi je zde:

<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
   <result status="1" outs="6" val="0" pic="7"/>
</root>

Význam jednotlivých parametrů v XML je následující:

  • Tag result je vždy jen jeden.
  • Atribut status obsahuje číslo 1 (příkaz byl proveden) nebo 0 (příkaz nebyl proveden).
  • Atribut outs obsahuje číslo, které představuje stav všech výstupů. Číslo je dekadické, po převedení na binární vyjádření lze zjistit stav jednotlivých výstupů. Příklad: Číslo 6 u Quida ETH 8/8 znamená, že je sepnutý výstup 2 a 3. (Číslo 6 dekadicky se rovná 00000110 binárně a jedničky představují sepnuté výstupy.)
  • Atribut val obsahuje číslo 0 (výstup je rozepnutý) nebo 1 (výstup je sepnutý). (Tento atribut je platný jen pokud šlo o příkaz pro jeden konkrétní výstup.)

Odesílání aktuálního stavu

Druhou možností využití příkazu HTTP GET v Quidech je odesílání aktuálního stavu I/O modulu. Quido pošle GET na server a v odpovědi může být ve formátu XML příkaz pro změnu stavů.

Příklad odesílání aktuálního stavu z Quida. Quido pošle GET na server a v odpovědi může být příkaz pro změnu stavů.

Kdy se informace odesílá?

Quido odesílá HTTP GET v těchto případech:

  • Okamžitě při zaznamenané změně na vstupu.
  • Okamžitě při zaznamenané změně na výstupu.
  • Pokud teplota z připojeného teploměru opustí stanovené meze.
  • Periodicky. (Je možné nastavit periodu v řádu vteřin až jedné hodiny.)

Co se posílá?

V GETu se odesílají vždy všechny tyto informace:

  • Aktuální stav vstupů (pro každý vstup reprezentovaný jako číslo 0 nebo 1).
  • Aktuální stav výstupů (pro každý výstup reprezentovaný jako číslo 0 nebo 1).
  • Aktuální stav počítadel změn na vstupech.
  • Právě naměřená teplota z teploměru (pokud je připojen).
  • Jedinečný identifikátor Quida (MAC adresa).
  • Název Quida nastavený uživatelem.

Jak HTTP GET vypadá?

Příklad HTTP GETu odeslaného Quidem ETH 8/8 (tento I/O modul má 8 vstupů, 8 výstupů a jeden teploměr):

script.php?mac=00-20-4A-B4-8D-F7&name=Office&ins=01101010&outs=00100010&tempS=0&tempV=21.8&cnt2=235&cnt6=126

Význam jednotlivých parametrů HTTP GETu je následující:

  • mac: MAC adresa Quida.
  • name: Jméno Quida nastavené uživatelem
  • ins: Aktuální stav vstupů. 0 nebo 1 podle aktuálního stavu. První znak v pořadí je první vstup.
  • outs: Aktuální stav výstupů.
  • tempS: Popisuje status naměřené teploty. Může nabývat následujících hodnot: 0-hodnota je platná a představuje aktuálně naměřenou hodnotu; 1-čeká se na první odměr; 2-naměřená hodnota překročila uživatelsky nastavenou horní mez; 3-naměřená hodnota poklesla pod uživatelsky nastavenou dolní mez; 4-hodnota není platná – chyba měření nebo chyba senzoru (znamená poškozený senzor nebo kabel
  • tempV: Naměřená teplota jako desetinné číslo bez jednotek.
  • cntX: Počet impulzů zaznamenaný počítadlem na vstupu X.

Ovládání Quida odpovědí na HTTP GET

Proč? Když je Quido ve vnitřní síti a Váš server někde v Internetu, nemusí být zas tak snadné dopravit příkazy pro ovládání Quida z Internetu do vnitřní sítě. Musí se za tím účelem nastavit tunel (tzv. roura) z Internetu do vnitřní sítě, což může být bezpečnostní problém. Řešením je možnost ovládat Quido pomocí odpovědí na HTTP GET.

Quido stačí nastavit tak, aby informace o svém aktuálním stavu odesílalo HTTP GETem periodicky (například po 15ti sec). Váš server pak může na přijatou informaci odpovědět jednoduchým textem ve formátu XML a nastavit tak stav výstupů nebo nulovat počítadla na vstupech.

Konkrétní příklad? Tady je: Quido odeslalo výše uvedený HTTP GET na Váš server. Ten zprávu okamžitě vyhodnotil a jako odpověď poslal tento stručný text ve standarním formátu XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
	<set outs="0x10x010" cnt2="235" cnt6="12" />
</root>

V nodu set jsou jednotlivé parametry, kterými lze nastavit stav výstupů, případně změnit stav čítačů. (Kompletní informace jsou uvedeny v manuálu ke Quidu.)

  • outs:Řetězec s požadovaným stavem jednotlivých výstupů. V parametru musí být řetězec délky přesně odpovídající počtu výstupů. Každému výstupu odpovídá jeden znak. První zleva je první výstup. Na jednotlivých pozicích můžou být tyto znaky:
    • 0: Rozepnout výstup.
    • 1: Sepnout výstup.
    • x: Ponechat výstup beze změny (x je jediná platná hodnota pro výstupy ovládané teplotou).
  • cntX: Těmito parametry (místo X samozřejmě uveďte číslo výstupu) lze odečíst od aktuálního stavu počítadla v Quidu. Zadané číslo se v Quidu odečte od aktuálního stavu počítadla. (cntX musí být stejné nebo menší číslo než aktuální stav počítadla.)

Příklad odeslání odpovědi ve formátu XML pomocí PHP

Níže uvedený příklad je prčený pro skriptování PHP. Provede odeslání odpovědi uvedené v předchozích odstavcích:

<?php

	header('content-type: text/xml');
  
	$xw = new xmlWriter();
	$xw->openMemory();
	$xw->startDocument('1.0','UTF-8');
	$xw->startElement('root');					// <root>
	$xw->startElement('set');					// <set>

	$xw->writeAttribute('outs', '0x10x010');	// 0=Rozepnout; 1=Sepnout; x=Ponechat výstup beze změny
	$xw->writeAttribute('cnt2', '235');			// Nastavit čítač 2 na 235
	$xw->writeAttribute('cnt6', '12');			// Nastavit čítač 6 na 12
	
	$xw->endElement();							// </set>
	$xw->endElement();							// </root>
	print $xw->outputMemory(true);
	exit;
  
?>

 

Víte, že kompletní informace o aktuálním stavu Quida lze také číst v oblíbeném formátu XML?
Podívejte se na článek XML v Quidech...

Obrázky


Mutace obrazků;
Vytvořeno29. 12. 2011
HTTP GET v I/O modulech Quido - jak na to?
HTTP GET v I/O modulech Quido - jak na to?