Dieses Modul verbindet sich mit einem über HTTP erreichbaren Air-Q und liest dessen Daten aus.
- Funktionsumfang
- Voraussetzungen
- Software-Installation
- Einrichten der Instanzen in IP-Symcon
- Statusvariablen und Profile
- WebFront
- PHP-Befehlsreferenz
- Zyklisches auslesen aller Messwerte des Air-Q.
- Bildung von gleitenden Mittelwerten für verschiedene Zeiträume wie für Auswertung der Warnschwellen nach WHO oder EU Richtlinien notwendig.
- Lesen und schreiben der Air-Q Konfiguration (Science Version).
- AirQ WebHook.
- IP-Symcon ab Version 5.5
- Air-Q von https://www.air-q.com/ und direktem Zugriff auf die Weboberfläche. (Getestet mit der Science-Version)
- Über den Module Store das 'Air Q'-Modul installieren.
- Alternativ über das Module Control folgende URL hinzufügen: https://github.com/styletronix/SymconAirQ
Unter 'Instanz hinzufügen' kann das 'Air Q'-Modul mithilfe des Schnellfilters gefunden werden.
- Weitere Informationen zum Hinzufügen von Instanzen in der Dokumentation der Instanzen
-
URL
Link zum Air-Q. z.B. http://192.168.0.5 -
Kennwort
Gerätekennwort -
Aktualisierungsinterval
Aktualisierung der Daten aus Air-Q alle X Sekunden.
Der schnellste aktualisierungszeitraum der Sensoren von Air-Q liegt bei etwa 2 Sekunden. Falls ein so geringer Wert gewählt wird, sollte bei Archivierung der Variblen unbedingt die Reduzierung der Daten aktiviert werden.
Aktualisierungsinterval für gleitenden Durchschnitt
Aktualisiert alle x Sekunden alle gleitenden Durchschnittswerte. Zusätzlich werden auch die aktuellen Daten vom Air-Q abgeholt.
Die berechnung des gleitenden Durschnitts wird in den Einstellungen der Sensoren vorgenommen. Für die entsprechenden Variablen der Sensorwerte muss die Archivierung manuell aktiviert werden damit der Durchschnitt berechnet werden kann.
Da die Berechnung resourcenintensiv sein kann und die intrne Auflösung auf 1 Minute eingestellt ist, wird empfohlen diesen Wert nicht unter 60 Sekunden einzustellen.
- Sensoren
Liste mit allen verfügbaren Sensoren.
Zum füllen der Liste können Sie die Schaltfläche
Erstelle Variablen für alle empfangenen Datenfelder
verwenden, nachdem die Grundkonfiguration abgeschlossen wurde.
-
Aktiviert
Aktiviert die Variablen für den Sensor. -
Sensor
Interne Sensorbezeichnung.
Es wird Groß- / Kleinschreibung unterschieden
-
Anzeigename
Der Anzeigename wird für die Variable des Sensors verwendet. -
Multiplikator
Faktor, mit dem der gemessene Wert multipliziert wird, bevor er in die Variable geschrieben wird. (Standard: 1) -
Versatz
Versatz, der zum Messwert hinzugefügt werden soll. (Standard: 0) -
Grenzwerte
Liste mit Grenzwerten und gleitenden Durchschnittsberechnungen.
-
Bezeichnung
Interne Bezeichnung. Wird nicht weiter verwendet. -
Zeitspanne für gleitenden Durchschnitt
Die Zeitspanne über die der gleitende Durchschnitt für den Messwert gebildet werden soll.
1 Stunde = 60 Minuten / 1 Tag = 1.440 Minuten / 1 Monat = 43.200* Minuten / 1 Jahr = 534.600* Minuten *) Annäherungswert der intern zur Kalkulation verwendet wird.
Bei einem Wert von
0
wird der Eintrag lediglich als Grenzwert vrewendet. Bei über- oder unterschreiten wird die Variable[Sensorname] Status
auf den WertDringlichkeit
gesetzt.Sie können mehrere Grenzwerte mit verschiedenen Dringlichkeitsstufen sowohl für reine Grenzwerte als auch für gleitende Durchschnitte konfigurieren.
Bei überschreitung der Grenzwerte wird der Status auf den Wert der höchsten Dringlichkeit gestellt.
Um zu vermeiden dass gleitende Durchschnitte mehrfach berechnet werden, sollten sie darauf achten, dass bei gleichen Zeiträumen auch exakt die gleiche Anzahl an Minuten eingetragen wurde. Andernfalls wird für jeden Eintrag eine neue Variable erstellt, selbst wenn z.b. im Zeitraum von einem Jahr der eingegebene Wert nur um 1 Minute abweicht.
-
Oberer Grenzwert
Oberer Wert, bei dessen überschreitung der Status auf den WertDringlichkeit
gesetzt wird. -
Unterer Grenzwert
Unterer Wert, bei dessen überschreitung der Status auf den WertDringlichkeit
gesetzt wird. -
Dringlichkeit
Wert der bei über- oder Unterschreiten des Grenzwerts gesetzt wird.
- 0: OK
- 1: Information
- 2: Warnung
- 3: Gefahr
Wenn mehrere Grenzwerte überschritten werden, wird die Statusvariable für den Grenzwert aif den hier angegebenen Wert gesetzt. Die Statusvariable für den Sensor wird auf die höchste Dringlichkeitsstufe der überschrittenen Messwerte gesetzt.
Die Standard Statusvariablen werden automatisch angelegt. Das Löschen einzelner Variablen führt nicht zur fehlfunktion. Diese werden aber beim nächsten start des Moduls erneut angelegt.
unbekannte Variablen und Sensoren können in der Konfiguration anhand der gelieferten Daten des Air-Q automatisch erstellt werden.
Siehe Air-Q Dokumentation.
Alle notwendigen Profile werden automatisch erstellt und beginnen mit SXAIRQ. Für jeden Sensor wird ein eigenes Profil generiert um Grenzwerte getrennt einstellenzu können.
Das Modul besitzt keine spezielle WebFront funktion.
Prüft, ob der Air-Q erreichbar ist und die Daten korrekt ausgelesen werden können. Der Air-Q muss vor der Verwendung dieser Funktion vollständig konfiguriert und erreichbar sein.
Liefert 'true' bei erfolg und 'false' bei Fehler. Zusätzlich sind Informationen im DEBUG Fenster zu finden.
$success = SXAIRQ_TestConnection(12345);
Aktualisiert die Daten des Air-Q sofort. Der Air-Q muss vor der Verwendung dieser Funktion vollständig konfiguriert und erreichbar sein. Bei $includeAggregated = true werden zusätzlich die gleitenden Durchschnittswerte berechnet. Wenn false, dann werden die zuletzt berechneten Werte als Referenz genommen.
SXAIRQ_Update(12345, true);
Liest die aktuellen Daten aus Air-Q und gibt diese als unbearbeitetes Array mit Key, Value daten aus. Liefert Null bei Fehler.
$data = SXAIRQ_GetDataDecoded(12345);
foreach ($data as $key => $val){
if (is_array($val)) {
$value = $val[0];
$errorRate = $val[1];
} else {
$value = $val;
$errorRate = null;
}
print ('Sensor ' . $key . ' - Value: ' . $value . "\n");
}
Setzt eine oder mehrere Einstellungen im Air-Q. Siehe hierzu das JSOn Format für die Geräteeisntellung unter https://docs.air-q.com/.
Liefert ein Array mit 'id' und 'content' zurück, falls der Aufruf erfolgreich war. Sonst ist der Rückgabewert null.
// Air-Q neu starten:
$result = SXAIRQ_SetDeviceConfig(12345, ['reset' => true]);
print_r ($result);
}
// Zusätzliches WLAN eintragen.:
$result = SXAIRQ_SetDeviceConfig(12345,
[
'WiFissid' => 'Ihre WLAN-SSID',
'WiFipass' => 'Ihr WLAN-Key',
'reset' => true
]);
print_r ($result);
Ruft die Konfiguration des Air-Q ab und liefert diese als Array. Zusätzlich wird die aktuelle Konfiguration in dem Attribut 'DeviceConfig' gespeichert.
$result = SXAIRQ_GetDeviceConfig(12345);
print_r ($result);
Liefert die gleichen Daten wie SXAIRQ_GetDeviceConfig(int $InstanceID)
, jedoch aus dem Zwischenspeicher, sofern verfügbar. Liefert null
wenn keine Daten vorhanden sind.
Der Zwischenspeicher wird automatisch mit aufrufen von SXAIRQ_GetDeviceConfig(int $InstanceID)
aktualisiert.
Ruft die Konfiguration des Air-Q ab und aktualisiert die Einheiten und Anzahl an Dezimalstellen der Variablenprofile.
SXAIRQ_UpdateSensorProfiles(12345);
Wertet die Daten, welche direkt vom Air-Q per Webhook geliefert wurden aus. Diese Funktion wird üblicherweise intern vom AirQ WebHook aufgerufen.
Bei verwendung des WebHooks sollten beide Aktualisierungsintervalle auf 0 (deaktiviert) gesetzt werden. Die Berechnung des Durchschnitts erfolgt automatisch beim Empfang von Daten über den WebHook, es sei denn $aggregate
wurde explizit auf false
gesetzt.
Die DeviceID in der AirQ Instanz und der gelieferten Daten müssen übereinstimmen. Der Befehl bricht sonst mit einer Fehlermeldung ab um das vermischen von Daten von verschiedenen Geräten zu verhindern.
-
AirQ WebHook Instanz unter Kerninstanzen hinzufügen.
-
Im Air-Q mit folgendem Code die Konfiguration zum automatischen senden der Daten aktivieren:
$InstanceID = 1234; // Die ID der Air-Q Instanz eintragen !!
$ExternalURL = 'http://meineDomain.de:3377'; // Hier die Adresse und Port des IP-Symcon Connect Dienstes eintragen.
$config = [
'httpPOST' => [
'URL' => $ExternalURL . '/hook/sxairq',
'Headers' => ['Content-Type' => 'application/json'],
'averages' => true,
'delay' => 120
]
];
print_r(SXAIRQ_SetDeviceConfig($InstanceID, $config));
Als Ergebnis wird der Air-Q alle 120 Sekunden die Durchschnittswerte an IP-Symcon senden. Im Webhook wird automatisch nach einer Air-Q Instanz mit der richtigen DeviceID gesucht und dort die Daten aktualisiert.
Hierdurch kann ein WebHook für mehrere Air-Qs verwendet werden. Es muss jedoch zwingend die Seriennummer in der Variable DeviceID
der einzelnen AirQ instanzen hinterlegt sein.
Die Übertragung von Air-Q kann mit folgendem Skript wieder deaktiviert werden:
$InstanceID = 1234; // Die ID der Air-Q Instanz eintragen !!
$config = [
'httpPOST' => [
'URL' => null
]
];
SXAIRQ_SetDeviceConfig($InstanceID, $config);