USB-Raumluftfühler anbinden

HI Leute,
hat schon mal jemand einen Raumluftfühler eingebunden?

So kleine USB-Sticks von appliedsensor.com zur Messung und Anzeige von VOC.
(https://www.appliedsensor.com/products/indoor-air-monitor-iam/)

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.

Die Teile gab es bei Conrad und Voelkner für um die 30,- Euro. Aktuell finde ich das leider nicht mehr.
ABER - Velux bietet die Dinger für 19,550 Euro an - incl. Versand!
http://www.velux.de/privatkunden/produkte/integra_system/produkte/produktempfehlung/raumluftfuehler?cache=0
Das ist mir der Spass schon mal wert :smiley:

Bin gespannt über die Mief-Werte im Büro - hier stehen mehrere Drucker mit hohem VOC-Ausstoß (Eco-Solvent bzw. UV-Drucker).

Hat schon jemand so ein Teil in IP-Symcon eingebunden?

Edit:
der Link zu Conrad - allerdings ausverkauft:

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.

oder mal so:

<?

# 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.

LG Tom

Da muss der Stick aber direkt am Server stecken und ich messe die Luftqualität meiner Abstellkammer. :smiley:

Wenn der IP-Symcon Server auf Windows läuft, geht vielleicht auch so ein USB-to-LAN/WLAN Gerät.
Für Linux scheint es da nichts zu geben.

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

Hi again,

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.

LG Tom

Läuft auch mit Velux. Habe das gerade aufgrund der Frage auch installiert. :wink:

@Belo
Das N/A hat keine Bedeutung, steht bei mir auch und läuft trotzdem. Mach mal bitte einen Screenshot von den Sensor-Einstellungen (Edit knobs).

Gruß
Bruno

bueddeschoen + Extra :wink:

VOC-Script.PNG

VOC-ClientSocket.PNG

VOC-RegisterVariable.PNG

Danke, kann aber leider nix feststellen … vielleicht mal die IP-Adresse des PC statt der 127.0.0.1 probieren.

Bei der Register Variable steht schon der Client Socket als übergeordnete Instanz drin (sieht man auf dem Bild nicht)? Nur dass ich gefragt habe. :o

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

…noch nicht zufriedenstellend…

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.

Hallo,

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?

z.B winserv.exe, autostart, commandozeilen batch, usw…

Gruß Konny

was versteckt sich hinter den weiteren Werten (hier zwei Sticks)

hier mal das script mit zwei Sensoren:

<?

# 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']; //REGISTERVARIABLE ZERLEGEN
    $Pos1  = stripos($VALUE,'|')+1;
    $Pos2  = stripos($VALUE,'|',$Pos1);
    $PPM1   = substr($VALUE,$Pos1,$Pos2-$Pos1);
    setvalueinteger(10555 /*[Energie\CO2\CO2 PPM1]*/,intval($PPM1)); # ANPASSEN
    //zweiter Sensor
    $Pos3  = strpos($VALUE,'|',130)+1;
    $Pos4  = strpos($VALUE,'|',$Pos3); //suche in String Zeichen ab Position-Offset....
	 $PPM2   = substr($VALUE,$Pos3,$Pos4-$Pos3);
    setvalueinteger(35590 /*[Energie\CO2\CO2 PPM2]*/,intval($PPM2)); # ANPASSEN
}
elseif($SOURCE=="TimerEvent")   //AUFFORDERUNG SCHICKEN
    CSCK_SendText(53767 /*[ClientCO2-SENSOR]*/,"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
# PS Konny : aktuelle iAQ von Velux 1.Quartal1 2015

?>

Gruß Konny

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.

z.B. wie es aussehen kann

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IdocRcv\Parameters]
"AppParameters"=""
"Application"="c:\\VOC_Sensor\\vocsensor.cmd"
"AppDirectory"="c:\\VOC_Sensor\"

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 :slight_smile:

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…

Anstatt „instsrv C:…“

Powershell als Admin starten:

new-service VOC_Sensor „C:\Windows\system32\srvany.exe“