So hier mal das Script von http://cms.remote-it.de/ :
Voltcraft CO-20
CO-20 von Voltcraft (ca. 25€)
Es gibt zwei unterschiedliche Möglichkeiten diesen Sensor in IPS einzubinden:
a) Auswertung des generierten Logfiles
b) via ClientSocket & Registervariable
Welchen Version Ihr nun bevorzugt ist letztendlich Geschmackssache. Die u.g. Software wird in beiden Fällen benötigt und sollte / muss via AUTOSTART eingebunden werden !
Produktdetails
PDF
Software
Implementierung Version a):
hierfür wird folgendes benötigt:
1 x Variable Typ INTEGER - enthält den letzten PPM CO2 Wert
1 x Script - welches die von der SW erzeugte Logdatei ausliest
1 x Event für das o.g. Script
Das Script:
$LogFile = "c:\\programme\\AirMonitor\\CO2-log.txt"; # Pfad anpassen !!!
$handle = fopen($LogFile,"r");
while ($line = fgets($handle, 1000))
$parameter = explode(chr(9), $line);
fclose($handle);
$DATA = intval(trim($parameter[1])); # letzte Zeile im Logfile
setvalueinteger(43884 /*[DEVICES\CO2\CO2 Log]*/,$DATA); # ID anpassen !!!
Einstellungen in der Software:
unter File den Menüpunkt Logging to file CO2-log.txt aktivieren - sonst gibt es nichts auszuwerten !
Hinweis:
unbedingt lesenswert sind die Dateien: engineering.txt und auch die airmonitor.chm im Programmverzeichnis. Wer dies bisher noch nicht „geschafft“ hat …
STRG Taste (drücken & halten) und ein Doppelklick auf das Voltcraft Logo rechts oben im Graphen !!! ergänzt das normale Menü um den Menüpunkt „Edit knobs …“ unter dem Menü Support Tools
Implementierung Version b):
hierfür wird folgendes benötigt:
1 x Variable Typ INTEGER - enthält den letzten PPM CO2 Wert
1 x Client Socket (lokale IP, Port 5800, siehe Bild „Settings“)
1 x Register Variable welche das u.g. Script startet / triggert und den o.g. Client Socket als übergeordnete Instanz hat
1 x Script A - welches die Daten aufbereitet
1 x Script B - welches an den Client Socket sendet
1 x Event für das o.g. Script
Script A: Auslösung über Register Variable
$REGVAR = 36563 /*[DEVICES\CO2\Register Variable CO2]*/; # ID anpassen
Switch ($IPS_SENDER)
{
Case "RegisterVariable":
$buf = $IPS_VALUE;
$dir = substr (strrchr ($buf, "AQ"), 2); #Zeilenende abwarten bzw. testen
if ($dir==">")
$buf =substr($buf,0);
$pos1=stripos($buf,"|",0)+1;
$pos2=stripos($buf,"|",$pos1);
$LEN =$pos2-$pos1;
$PPM =intval(substr($buf,$pos1,$LEN));
SetValueInteger(49108 /*[DEVICES\CO2\CO2 NW]*/,$PPM); #ID anpassen
break;
}
Script B: Auslösung über Event Timer (1 x pro Minute)
CSCK_SendText(34798 /*[Client Socket CO2]*/, 'trg'.chr(10));
ScreenShots:
Serversoftware Settings:

Webfront:

Hier sieht man schön:
05:30 aufgestanden, 05:55 das Haus verlassen
17:40 wieder zuhause angekommen