Im Prinzip recht einfach - hintendran eine LED-Ampel Grün/Gelb/Rot und dazu eine Software für den PC.
Das Teil hat auch einen Speicher als Datenlogger.
Heute auf dem Linux Tag Homeautomation Track wurde das gute Stück auch erwähnt, und ich hab mal ein bisschen dazu gegoogelt. Sollte mit Raspberry PI, USB Hub und https://code.google.com/p/usb-sensors-linux/wiki/Install_AirSensor_Linux funktionieren. Den Wert dann z.B. per Webserver auslesen oder ein File irgendwo hinschreiben und in IP-Symcon einlesen.
<?
# 1x die dem Stick beiliegende Software AirMonitor
# 1x Integer Variable
# 1x Register Variable
# 1x Client Socket (Port 5800)
# 1x Timer Event
$SOURCE = $_IPS['SENDER'];
if($SOURCE=="RegisterVariable")
{
$VALUE = $_IPS['VALUE'];
$Pos1 = stripos($VALUE,'|')+1;
$Pos2 = stripos($VALUE,'|',$Pos1);
$PPM = substr($VALUE,$Pos1,$Pos2-$Pos1);
setvalueinteger(39783 /*[CO2\CO2 PPM]*/,intval($PPM)); # ANPASSEN
}
elseif($SOURCE=="TimerEvent")
CSCK_SendText(30919 /*[Client Socket - CO2]*/,"trg".chr(13).chr(10)); # ANPASSEN
# Hinweis:
# unbedingt lesenswert sind die Dateien: engineering.txt und auch die airmonitor.chm im Programmverzeichnis.
# Für die erweiterten Optionen (AirMonitor):
# 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.
# Dort den Port ggf. anpassen und "Act as server" anwählen.
# PS: mein Sensor ist ein Voltcraft CO-20
?>
oder via Auswertung des generierten Logfiles … ist aber nicht ganz so hübsch.
Erstmal vielen dank, dein Script und die Infos da drin waren sehr hilfreich.
nur leider bekomme ich keine Werte in meine Variable.
Bestellt habe ich den Velux-USBStick. (sehr unkomplizierter Bestellvorgang)
Software ist der AirMonitor, funktioniert auch alles… die Erweiterten Einstellungen habe ich, dank deiner Infos, auch schnell freischalten koennen.
In IPS angelegt:
IntegerVariable
Register Variable
ClientSocket
Timer Event
ClientSocket auf den Port vom AirMonitor (wenn ich den Socket im IPS aktiviere, meldet der Airmonitor eine Connection)
Die RegisterVariable befindet sich unter dem ClientSocket, und die ZielID ist auf dein Script gelegt, richtig?
Dieses Script wird durch einen Event im 10sek. Takt getriggert, richtig?
Im ClientSocket Debug sehe ich die gleiche Zeile, wie auch wenn ich die IP:Port vom AirMonitor im Browser tippe.
Also sollte doch die Verbindung hinhauen.
Problem ist, die IntVariable ist und bleibt 0 und wird auch nicht aktualisiert.
bei
setvalueinteger(48278 /[Luftqualität]/,intval($PPM)); # ANPASSEN
habe ich die ID von der IntVariable eingetragen
und bei
CSCK_SendText(18355 /[Client Socket]/,„trg“.chr(13).chr(10)); # ANPASSEN
die ID vom ClientSocket.
ClientSocket / RegisterVariable wie auch die IntVariable wurden lt. Console nie aktualisiert, da stimmt doch bestimmt auch irgendwas nicht.
Hast du evtl. eine Idee?
Gruß Benny
Edit: nicht wundern, der Port 5900 ist i.O., steht im Script wie auch im AirMonitor
sieht ja laut Beschreibung soweit i.O. aus.
Der Stick reagiert ja erst auf das Senden von „trg“.chr(13).chr(10) mit einer Antwort die Du im Debugmodus des Client Sockets sehen müsstest (wenn es denn funktioniert).
In etwa so:
update [USB:\?\hid#vid_03eb&pid_2013#6&1ccc99a0&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Ich weiß nicht wie kompatibel die Sticks so sind - schau mal in der angegebenen Doku nach, daher habe ich mein „Wissen“. Vielleicht ist dort etwas anderes zu lesen …
Du kannst aber alternativ auch vom AirMonitor eine Logdatei generieren lassen und diese auswerten. So habe ich auch angefangen.
Mehr lässt sich so auf Anhieb aus der Ferne nicht vermuten … vielleicht fällt mir ja noch etwas dazu ein.
Danke das wars… liegt warscheinlich daran, dass ich bis dato nicht wusste was und wofuer eine RegisterVariable ist. Aus der Doku wurde ich auch nicht so richtig schlau. Naja war gestern anscheinend nicht so mein Tag…
Und da hab ich mich schon gewundert, woher die RegisterVariable ihre Daten beziehen soll… :rolleyes:
Habe mir mal eines von den Dingern bestellt und es heute in Betrieb genommen… bin gespannt. Erfreulich ist auf jeden Fall, dass es ein sehr bastlerfreundliches Teil ist. Solche Möglichkeiten zur Anbindung sind ja selten gegeben.
Nun rufe ich mir minütlich den VOC-Anteil ab und logge ihn in IPS. Mal sehen was man daraus am Ende ableiten kann.
Was ich gerne noch hinkriegen würde ist, die Software unsichtbar im Hintergrund laufen zu lassen. Sonst wird sie zu leicht versehentlich beendet. Hat jemand eine Idee wie man das unaufwändig bewerkstelligen kann? Das Programm hat ja ein Tray-Icon, aber ich habe keine Möglichkeit gefunden, dass es nur noch dort zu sehen ist während es läuft. Akzeptabel wäre auch wenn sie komplett unsichtbar ist, die GUI braucht man ja nach Ersteinrichtung nicht mehr.
Hat auch jemand mehrere EInheiten zugleich am selben Rechner im Einsatz? Per USB-over-CAT5-Konverter wäre das für mich auch eine Option, sofern es funktioniert.
Ich hab mal ein wenig probiert, leider keine richtige Loesung gefunden. (WHS 2011)
Die AirMonitor.exe mal als Dienst eingebunden, startet auch unsichtbar im Hintergrund (wird im Taskmanager angezeigt) aber der ClientSocket im IPS meldet einen Fehler.
Scheint so, als wenn zwar das Programm aber nicht der „Webserver“ von AirMonitor gestartet wird.
Im Moment noch eine Zwischenloesung:
Verknuepfung von AirMonitor.exe erstellen -> Eigenschaften Verknuepfung -> Ausfuehren-Minimiert
die Verknuepfung dann in den Autostart packen
zumindest wird das Programm dann minimiert gestartet -> Verbindung mit IPS klappt
Apropos nicht zufriedenstellend… nach Systemneustart leuchtet der Stick bei mir jedes Mal dauerrot (unabhängig von der Luftqualität) und wird von der Software nicht mehr erkannt. Im Geräte-Manager erscheint er dann als „unbekanntes Gerät“ und das System findet keinen passenden Treiber.
Abziehen und wieder anschließen behebt das Problem zeitweilig, halt bis zum nächsten Neustart. :-/
Sonst noch jemand mit diesem Problem? Oder noch besser, mit einer Lösung dafür?
bei mir nicht so…
leuchtet nach einem Neustart gruen, weil er den aktuellen Wert als gute Luft annimmt. Das ist nicht schoen, Loesung dafuer stand aber irgendwo, hatte nur noch keine Zeit.
ich hab mir das auch installiert und funktioniert auch soweit.
Allerdings läuft das Programmm /der Serverdienst nur solange ich als „Benutzer“ angemeldet bin.
Wie bringt ihr das Programm dazu automatisch den Dienst zu starten ohne das Programm als Benutzer zu reaktivieren.
z.B bei Neustart oder Benutzer An- und Abmeldung?
Ich weiss nicht ob das dir evtl. hilft, aber „schwindlige“ Programme packe ich immer in eine Batchroutine, und diese Batchroutine kann man mit Microsoft Mitteln als Dienst einrichten - vorausgesetzt die Software benötigt keine „Interaktion“…
Es gibt von MS (NT Reskit-Tools) die „srvany.exe, kill.exe und sleep.exe, instsrv.exe“ enthalten.
Die Dateien packt man ins Windows\System32 Verzeichnis.
Danach legt man einen Dienst an, z.B. so
„instsrv VOC_Sensor c:\winnt\system32\srvany.exe“
Danach muss man in der Registry zu dem zuvor erstellten Dienst, noch das Applikationsverzeichnis + die CMD angeben, die gestartet werden soll.
Nun erstellt man die hinterlegte Batchroutine (vocsensor.cmd)
zum Beispiel so:
@echo off
C:
cd \VOC_Sensor
REM Hier die .exe eintragen des VOC Sensor Programms
kill VOC_SENSOR.exe
:loop
REM Start der VOC_SENSOR.exe
VOC_SENSOR.exe
goto loop
Hoffe ich habs verständlich erklärt
P.S. Den eingerichten Dienst für ich mit einem bestimmten Benutzer starten lassen. (d.h. ein Adminkonto oder Benutzerkonto hinterlegen) - Desweiteren würde ich den Dienst auf Starttyp „Automatic - Delayed“ setzen.
Könnte das die Lösung sein?
Als Nachtrag, ab Win 2012 / Win 7 / 8 kann man den Dienst auch per Powershell einrichten…