Voltcraft CO-20 USB-Luftqualitätssensor

Begonnen von C64Emulator, 04 Juni 2013, 10:50:06

Vorheriges Thema - Nächstes Thema

C64Emulator

Hallo,
würde gerne den Mieffaktor mit dem CO-20 messen...
Vor fast genau einem Jahr gab es in der alten Mailingliste einen Thread
Link
zum CO-20. Würde mich interessieren, was daraus geworden ist...
Da der RasPi ein paar USB-Ports hat, wäre eine Einbindung in FHEM vielleicht gar nicht mal so kompliziert.
Freue mich über Info.
Danke!
Helmut

C64Emulator

Hallo,
ich antworte mir jetzt mal selbst...

Im weiteren nenne ich den Sensor iAM (indoor-Air-Monitor).

Um die Eigenheiten des iAM besser zu verstehen, zunächst etwas zum Messprinzip:
Der Sensor ist ein chemischer Gassensor, auch MOS-Sensor (MetalOxidSensor) oder MEMS (Micro-Electromechanical System) genannt, der auf einem ultradünnen, beheizten (ca. 300°C) SiO2 Substrat zwei interdigitale Strukturen besitzt, auf denen eine Zinndioxidpaste aufgetragen ist.
Durch Beaufschlagung mit den oben genannten Gasen kommt es zur Sauerstoffreduktion auf der Oxidoberfläche und in Folge zu Elektroneneinlagerungen, welche den Widerstand reduzieren bzw. den Leitwert erhöhen, was wir als Sensorantwort bekommen.

Der im iAM eingebaute Sensor ist sehr breitbandig und misst im Gegensatz zu reinen CO2-Sensoren grob gesagt alles, das nicht zu guter Luft gehört. Es sind dies im Wesentlichen:
* Kohlenmonoxid,
* VOCs (Volatile Organische Compounds) auch Mischgase genannt. Dazu gehören ca. 6000-10000 verschiedene Verbindungen.
Hier ein Auszug:
* Allgemein Kohlenwasserstoffe
* Aromate
* Aliphate
* Alkohole
* Ketone
* Amine
Dinge die er physikalisch nicht oder nur sehr wenig misst sind z.B. (Auszug):
* Edelgase
* Stickstoff
* Sauerstoff
* CO2
Anmerkung: CO2 misst der Sensor prinzipbedingt nicht direkt (physikalisch), sondern bestimmt dies über den eingebauten Algorithmus, basierend auf der Konzentration der VOCs.

Info gibt es auch auf der Webseite des Herstellers: https://www.appliedsensor.com/products/indoor-air-monitor-iam/ und hier: http://www.mikrocontroller.net/articles/IAQ-2000
Den iAM gibt es bei verschiedenen Elektronik-Shops für ca. 25 EUR.

Zum Umgang mit dem Sensor:
- Der iAM sollte bei der Erstinbetriebnahme einem 'Burn-In' (!) von mehreren Stunden unterworfen werden. Erst dann sind sinnvolle Werte zu erwarten
- Der iAM benötigt nach dem Einstecken ca. 15min. bis er den ersten Wert liefern kann.
- Die Messung dauert sehr lange. Das kleine C-Programm muss ca. 15sec. warten, bis der iAM Werte zurückliefert. Im ersten Moment dachte ich, dass das Programm ins Nirvana abgetaucht ist, bis der Wert dann angezeigt wurde.
Fazit: Der iAM braucht etwas GEDULD!!!

So, nun zur Umsetzung am RasPi-USB:
Der iAM wird erkannt, wenn es nach dem Einstecken folgende Meldung gibt (dmesg):
Jun  7 16:29:36 RPi-FHEM kernel: [71352.247324] usb 1-1.3: new full-speed USB device number 4 using dwc_otg
Jun  7 16:29:36 RPi-FHEM kernel: [71352.357708] usb 1-1.3: New USB device found, idVendor=03eb, idProduct=2013
Jun  7 16:29:36 RPi-FHEM kernel: [71352.357739] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jun  7 16:29:36 RPi-FHEM kernel: [71352.357756] usb 1-1.3: Product: iAQ Stick
Jun  7 16:29:36 RPi-FHEM kernel: [71352.357769] usb 1-1.3: Manufacturer: AppliedSensor
Jun  7 16:29:37 RPi-FHEM kernel: [71352.370562] hid-generic 0003:03EB:2013.0001: hiddev0,hidraw0: USB HID v1.11 Device [AppliedSensor iAQ Stick] on usb-bcm2708_usb-1.3/input0

Info zur Vorbereitung des Systems (Berechtigungen) und den Sourcecode für das kleine Ausleseprogramm gibt es hier:
http://code.google.com/p/usb-sensors-linux/wiki/Install_AirSensor_Linux
Das Progi hat eine kleine Hilfe:./airsensor -h
AirSensor [options]
Options:
-d = debug printout
-v = Print VOC value only, nothing returns if value out of range (450-2000)
-o = One value and then exit
-h = Help, this printout

Nach dem Start des Progis (erst mal warten...):
pi@RPi-FHEM /opt/fhem $ time ./airsensor -o
2013-06-12 19:57:33, VOC: 581, RESULT: OK

real    0m13.792s
user    0m0.030s
sys     0m0.090s
pi@RPi-FHEM /opt/fhem $

Wie gesagt: ca. 15sec....

Wg. dieser langen Wartezeit habe ich mich entschieden, das Progi nicht aus FHEM zu starten, sondern bin einen anderen Weg gegangen (wird ähnlich auf der obigen Progi-Quelle so gezeigt):
Cronjob liest regelmäßig die iAM-Werte und übergibt die Werte (siehe Anhang) mit /opt/fhem/fhem.pl localhost:7072 "set $VARNAME $VARVALUE"
In fhem.cfg steht folgendes:
#   airquality sensor VOLTCRAFT CO-20
define airquality.livingroom dummy
attr airquality.livingroom loglevel 1
attr airquality.livingroom room Wohnzimmer
define FileLog_airquality.livingroom FileLog ./log/airquality.livingroom-%Y.log airquality.livingroom
attr FileLog_airquality.livingroom logtype airquality:airquality,text
define weblink_airquality.livingroom weblink fileplot FileLog_airquality.livingroom:airquality:CURRENT
attr weblink_airquality.livingroom label "airquality.livingroom Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_airquality.livingroom room Plots

Mit einem simplen gplot-File gibt es dann schon Werte (siehe Anhang).
Interessant, wie schlecht die Luft wird, wenn die Tochter wieder mal das Popcorn für die GNTM-Session hat anbrennen lassen, weil sie ganz dringend ihren Beziehungsstatus in Facebook aktualisieren musste, oder der "süße" Hund völlig unsüße Blähungen hat. Aber das wusste ich eigentlich auch so...Das ist auch der Grund, warum ich einen reinen CO2-Sensor nicht für sinnvoll halte: der kann solche Sachen nicht messen. Jetzt könnte ich zukünftig automatisch die Lüftungsanlage in den Partymodus schalten. Aber das ist ein anderes Projekt...Apropos: hat schon jemand mit FHEM den LONBUS angesteuert?

Viel Spaß beim Nachmachen!
Helmut.

Edit: Preis ergänzt, diverse Hervorhebungen zum besseren Querlesen.

C64Emulator

Hallo Moderator,
wäre vielleicht sinnvoll, den Thread in "Codeschnipsel" zu verschieben?
Gruß
Helmut.

justme1968

#3
ich habe seit gestern auch einen co20 in betrieb.

mir hat aber die version mit cron job und externem programm nicht so gut gefallen also habe ich mal versucht ein 'echtes' fhem modul draus zu machen. zuerst dachte ich das man das ganze mit blockigCall angehen muss...

nach genauem hinschauen ist mir dann aufgefallen das die hauptsächliche wartezeit in dem externen programm durch ein unnötiges sleep verursacht wird. die zweite bremse war bei jedem starten das usb device neu zu suchen und zu öffnen. genau das lässt sich aber mit einem fhem modul vermeiden. und siehe da... das auslesen der werte ist praktisch 'sofort' möglich.

nach dem anlegen mitdefine co20 CO20wird das device alle 5 minuten ausgelesen. das intervall lässt sich mit dem attribut Intervall ändern.

sonstige hinweise:

  • das modul ist noch fast ungetestet :)
  • abziehen und wieder anstecken geht noch nicht
  • es ist Device::USB (z.b. per cpan install) zu installieren. das ist ein wrapper um die libusb. das ganze geht also nur auf systemen die libusb unterstützen. primär ist das linux und unix. auf einem mac geht es leider nicht. das ist ein bekanntes problem. theoretisch müsste es sogar unter windows gehen.
  • die 15 minuten warm laufen nach power on werden im modul (noch?) nicht berücksichtigt
  • robin (fh168) hat schon eine plotdefinition die die werte in drei farben plottet. ich vermute mal er hängt sie bald hier an :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

volschin

Klingt interessant. Ich liebäugle schon länger mit dem Teil. Hab ich mir jetzt gleich bestellt.
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

volschin

Hallo Andre,
postest Du bitte auch mal Deine Plot-Datei. das mit den eingefärbten Zonen sieht schick aus. Mein CO-20 wird hoffentlich zum nächsten Wochenende da sein, da werde ich dann testen.

Was mich wundert ist, dass bei Deinem Plot bei 1000 anscheinend abgeriegelt wird. Sieht sehr ungewöhnlich aus. Vielleicht gibt es da noch einen Bug?

Gruß
Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

fh168

Hallo,

ich habe den unteren Wert auf 450 und den oberen Wert auf 2000 gesetzt, steht alles in meinem Blog-Beitrag über den Voltcraft CO-20 Sensor.

http://blog.moneybag.de/luftqualitaets-sensor-voltcraft-co-20-ein-erfahrungsbericht/#more-9919

Den Plot reiche ich nach, da soll André noch mal drüberschauen, der ist ziemlich gefrickelt (aber funktioniert).

/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

volschin

Der Voltcraft ist da. Ich habe ihn erstmal an meinem PC warmlaufen lassen.

Jetzt habe ich versucht ihn in FHEM auf der Fritzbox einzurichten. Leider ein Fehlschlag:
Can't locate Device/USB.pm in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2 /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2 /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at ./FHEM/38_CO20.pm line 11.
BEGIN failed--compilation aborted at ./FHEM/38_CO20.pm line 11.


Da fehlen leider der Fritzbox die notwendigen Voraussetzungen.

Gruß,
Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

in dem fall ist es mit cpan alleine vermutlich nicht getan. das perl modul nutz per native interface die libusb. ohne libusb ist der sensor leider nicht nutzbar weil er sehr low level angesprochen wird.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

volschin

Hallo Andre,
danke für den Hinweis mit der libusb. Dann werde ich mal die Hoffnung noch nicht aufgeben, da ich hier eine fertige Fritzbox libusb aus einem anderen Thread liegen habe.

Mal schauen, ob ich das doch noch ans Laufen bekomme.

Gruß,
Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Joachim

Moin Veit,

zumindest in meinem Lieblingsimage von Zebradem ist die libusb drinnen.

Gruß Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

volschin

Zitat von: Joachim am 02 November 2013, 10:31:57
siehe Wiki
http://www.fhemwiki.de/wiki/Cpan_auf_Fritzbox
Hallo Joachim,
danke, aber das meine Fritzbox kein Freetz hat und auch keins bekommen soll, kommt der weg nicht in Frage.

Gruß,
Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Joachim

Dann kann ich Dir nicht weiterhelfen.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

volschin

Zitat von: justme1968 am 02 November 2013, 10:43:11
in dem fall ist es mit cpan alleine vermutlich nicht getan. das perl modul nutz per native interface die libusb. ohne libusb ist der sensor leider nicht nutzbar weil er sehr low level angesprochen wird.
Ich habe die libusb am laufen. Leider scheitert es daran, dass Device/USB.pm Inline.pm braucht. Und Inline.pm steuert einen transparenten Compile von C-Code. Dazu müsste natürlich ein C-Compiler auf der Box vorhanden sein.  :(

War also nichts.

Gruß, Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge