Applikation zur pure.box:
Web-IOs logisch miteinander verknüpfen
Das hier vorgestellte Beispiel beleuchtet folgende Funktionsmerkmale der pure.box:
- Zeitgesteuerte Ausführung eines PHP-Skriptes
- Netzwerkkommunikation via PHP
Die von mehreren Web-IOs (digital, analog, Thermopragh etc.) aufgenommenen Zustände und Messwerte sollen als Entscheidungsgrundlage für das Schalten digitaler Ausgänge genutzt werden.
Anwendungsbeispiel
In dem Serverraum eines Unternehmens ist zur Überwachung der Temperatur ein Web-Thermo-Hygrobarograph PoE installiert. Der Betriebszustand der dortigen Klimaanlage kann über einen Relaiskontakt abgegriffen werden. Dieser Kontakt ist auf ein Web-IO 2x Digital Input, 2x Digital Output PoE geführt. Die Klimaanlage verfügt zusätzlich über eine eigene Raumtemperaturüberwachung und schaltet sich bei Bedarf selbständig ein.
Bleibt die Aktivierung der Klimaanlage trotz überschrittener Temperaturgrenze aus, soll auf einer Anzeigetafel beim Pförtner eine Warnlampe eingeschaltet werden. Die Warnlampe ist ebenfalls mit einem Web-IO 2x Digital Input, 2x Digital Output PoE verbunden und kann somit über das Netzwerk ein- und ausgeschaltet werden.
Umsetzung
Für die Umsetzung dieser einfachen Überwachungsaufgabe muss die Temperatur im Serverraum und der Betriebsszustand der Klimaanlage abgefragt werden. Aufgrund des verknüpften Ergebnisses wird der Signalzustand der Warnleuchte gesetzt.
Als zentrale Intelligenz wird eine W&T pure.box eingesetzt. Die PHP-Unterstützung und die Funktion PHP-Skripte per CRON auszuführen genügen den Anforderungen. Alternativ kann auch jeder PC mit den voran genannten Eigenschaften statt der pure.box eingesetzt werden. Die Beispielskripte für diese Anwendung können Sie hier herunterladen.
Die Datei webio_raw.php beinhaltet Standardfunktionen, die Sie aus Ihrem PHP-Skript heraus aufrufen können. Über diese Funktionen können Sie Zustände und Messwerte von Web-IOs abrufen und individuell weiterverarbeiten. Im Folgenden sind die verfügbaren Funktionen inkl. der erforderlichen Aufrufparamter und Rückgabewerte erläutert:
- getDigitalIn(IP, Port, Kanal, Passwort): Ruft den aktuellen Zustand eines Kanals von einem digitalen Web-IO ab. Beim Aufruf muss die IP-Adresse, der HTTP-Port, die abzufragende Kanalnummer und das Passwort übergeben werden. Der Rückgabewert ist 0 oder 1 und entspricht dem aktuellen Zustand des Inputs. Beispiel (kein Passwort vergeben):
getDigitalIn('10.4.27.10', 80, 2, '');
- getDigitalOut(IP, Port, Kanal, Passwort): Wie
getDigitalIn()
, liefert jedoch die Statusinformation über den angefragten Ausgang des Web-IOs. - getCounter(IP, Port, Kanal, Passwort): Ruft den aktuellen Zählerstand von einem Kanal eines digitalen Web-IOs oder Web-Counters ab. Aufrufparameter sind IP-Adresse, Nummer des HTTP-Ports, Kanalnummer und Passwort. Zurückgegeben wird der Zählerstand. Beispiel:
getCounter('10.40.27.10', 80, 4, 'mein_passwort');
- setDigitalOut(IP, Port, Kanal, Passwort, Zustand): Setzt den Zustand eines einzelnen Outputs an einem digitalen Web-IO. Neben der IP-Adresse, dem HTTP-Port, der Kanalnummer und dem Passwort muss auch der Zielzustand des Outputs übergeben werden. Dieser ist mit 0 (= Output aus) oder 1 (= Output an) anzugeben. Rückgabewert ist der neue Schaltzustand. Folgendes Beispiel aktiviert den Output Nr. 6 am Web-IO mit der IP-Adresse 10.40.27.10:
setDigitalOut('10.40.27.10', 80, 6, 'mein_passwort', 1);
- getAnalogIO(IP, Port, Kanal): Abfrage von Ein- und Ausgängen analoger Web-IOs und Web-Thermographen. Liefert einen Float-Wert zurück. Beispiel:
getAnalogIO('10.40.27.11', 80, 1);
- setAnalogOut(IP, Port, Kanal, Passwort, Zustand): Setzt den Zustand eines einzelnen Outputs an einem analogen Web-IO. Neben der IP-Adresse, dem HTTP-Port, der Kanalnummer und dem Passwort muss auch der Zielzustand des Outputs übergeben werden. Dieser ist numerisch (z.B. 2.54 oder 7.23) anzugeben. Rückgabewert ist der alte Analogwert während des Regelprozesses auf den Zielwert. Folgendes Beispiel setzt den Output Nr. 1 am Web-IO mit der IP-Adresse 10.40.27.11 auf 3,5:
setDigitalOut('10.40.27.10', 80, 1, 'mein_passwort', 3.5);
Ausgehend von beispielhafter Gerätekonstellation:
- Web-Thermograph im Serverraum mit IP: 10.40.27.11, HTTP-Port: 80, misst die Temperatur auf Kanal 1
- Web-IO im Serverraum mit IP: 10.40.27.10, HTTP-Port: 80, Meldekontakt der Klimaanlage auf Input 0, kein Passwort vergeben
- Web-IO beim Pförtner mit IP: 10.40.27.12, HTTP-Port: 80, Warnleuchte an Output 1, Passwort: 'mein_passwort'
Die Warnleuchte soll geschaltet werden, wenn die Temperatur 30°C überschreitet und der Meldekontakt der Klimaanlage inaktiv ist. Das zugehörige PHP-Skript sieht folgendermaßen aus:
<?php
include '../webio_raw.php';
$state = getDigitalIn('10.40.27.10', 80, 0, '');
$temperature = getAnalogIO('10.40.27.11', 80, 0);
$output = $state == 0 && $temperature > 30 ? 1 : 0;
setDigitalOut('10.40.27.12', 80, 1, 'mein_passwort', $output);
?>
Zuerst wird über den include-Befehl die Funktionsbibliothek mit den Standardfunktionen aus dem Wurzelverzeichnis eingebunden. Erst nach dem Einbinden können die oben beschriebenen Funktionen genutzt werden. In den Variablen $state und $temperature wird der Meldekontakt der Klimaanlage und die aktuelle Temperatur im Serverraum eingelesen. Ist der Zustand OFF und die Tempertur größer 30°C, wird $output auf 1 gesetzt, sonst auf 0. Anschließend wird der digitale Ausgang, an dem die Warnleuchte beim Pförtner angeschlossen ist, auf den ermittelten Zustand gesetzt.
Mit Hilfe der CRON-gesteuerten Ausführung dieses PHP-Skriptes kann diese Überwachung im Minutentakt durchgeführt werden.
Konfiguration der pure.box
Speichern Sie die Datei webio_raw.php per FTP oder über die SMB-Freigabe direkt im Wurzelverzeichnis userfiles der pure.box, die Datei webio_network.php, nach dem Anpassen an Ihre Situation, im Ordner programs. Anschließend sind folgende Konfigurationsschritte notwendig, um das Skript minütlich vom System ausführen zu lassen:
-
Rufen Sie die Startseite der pure.box durch Eingabe der IP-Adresse in der Adresszeile Ihres Browsers auf.
-
Wählen Sie Anmelden im Menübaum und loggen Sie sich über den aufgerufenen Dialog mit Administratorrechten (Benutzername: admin und Ihr Passwort) an.
-
Navigieren Sie auf die Seite Home >> Konfiguration >> Eigene Dateien. Klicken Sie in der Dateiübersicht auf den Ordner programs. Die Datei webio_network.php wird sichtbar.
-
Ein Klick auf das Icon Dateieigenschaften bearbeiten (links neben webio_network.php) öffnet den Bearbeiten-Dialog.
-
Aktivieren Sie Zeitgesteuert und stellen Sie sicher, dass in jedem der folgenden Textfelder ein * notiert ist. Dieser CRON-Definition zufolge wird das Skript im Minutentakt aufgerufen.
Übernehmen Sie die neuen Einstellungen mit Speichern... Fertig!
Fazit
Einfache Überwachungsaufgaben können auf diesem Wege realisiert werden, wenn der minimale Überwachungszyklus von einer Minute den Anforderungen gerecht wird. Von Vorteil ist, dass die einzelnen Signale über das Netzwerk verteilt werden können, wodurch die örtliche Bindung aufgehoben wird.