NEWS
Projekt: CO2 Monitor TFA Dostmann
-
da ich auch den co2-monitor besitze würde das gerne auch so nutzen.
das js-modul co2-monitor kann nicht installiert werden, gibt ne menge fehler im log. und der js code, den ich per copy/paste als js script im iobroker gespeichert habe markiert einiges im editor rot.
bekomme es also nicht zum laufen. kann mir da jemand helfen? -
UPDATE zum DFA Dostmann und IOBROKER mit NPM 10.x
Ich habe festgestellt dieser Lösungsweg ginge nur bis NPM 8.x ab Version 10.x gab es bei mir Problem mit einigen NPM lib und deprecated libs. Deswegen musst ich co-2monitor gegen node-co2-monitor tauschen und das script anpassen.
Alles UDEV vorbereitungen von oben sind komplett richtig. lediglich im Javaapter - Instanz am richtigen gerät, muss man "node-co2-monitor" hinzufügen, ggf. den alten löschen/entfernen, oder mit npm direkt installieren. Achtung auf die Pfade.

Hier ist das neue script:
'use strict'; const CO2Monitor = require('node-co2-monitor'); const monitor = new CO2Monitor(); var logOn = false; var pfad = "co2sensor" + "."; var idCo2 = pfad + "co2"; var idTemp = pfad + "temperatur"; // Datenpunkte anlegen // ----------------------------------------------------------------------------- createState(idCo2, { name: 'CO2', desc: 'CO2', type: 'number', unit: 'ppm', role: 'value' }); createState(idTemp, { name: 'Temperatur', desc: 'Temperatur', type: 'number', unit: '°C', role: 'value' }); // Connect device. monitor.connect((err) => { if (err) { return console.error(err.stack); } log('CO2 Monitor connected.'); // Read data from CO2 monitor. monitor.transfer(); }); // Get results. monitor.on('temp', (temperature) => { // log(`temp: ${ temperature }`); setState(idTemp,parseFloat(temperature)); }); monitor.on('co2', (co2) => { // log(`co2: ${ co2 }`); setState(idCo2,parseInt(co2)); }); // Error handler monitor.on('error', (err) => { console.error(err.stack); // Disconnect device monitor.disconnect(() => { log('CO2 Monitor disconnected.'); process.exit(0); }); }); function stopCo2Monitor() { try{ monitor._endpoint.stopPoll(function(){ log("CO2 Monitor: Polling gestoppt"); monitor._interface.release(true, (error) => { if(error) { monitor.emit('CO2 Monitor error', error); } else { log("CO2 Monitor: Interface released"); monitor._device.close(); log("CO2 Monitor: Device geschlossen"); cb(true); } }); }); } catch (e) { log(e); // hat nicht geklappt log("CO2 Monitor: Fehler beim Beenden des Skripts"); } log("CO2 Monitor: Skript wurde gestoppt"); } // Wird ausgeführt, wenn das Skript gestoppt wird: // close connection if script stopped onStop(function skriptStop () { stopCo2Monitor(); // Kommunikation zum CO2 Monitor beenden }, 100 /*ms*/); -
UPDATE zum DFA Dostmann und IOBROKER mit NPM 10.x
Ich habe festgestellt dieser Lösungsweg ginge nur bis NPM 8.x ab Version 10.x gab es bei mir Problem mit einigen NPM lib und deprecated libs. Deswegen musst ich co-2monitor gegen node-co2-monitor tauschen und das script anpassen.
Alles UDEV vorbereitungen von oben sind komplett richtig. lediglich im Javaapter - Instanz am richtigen gerät, muss man "node-co2-monitor" hinzufügen, ggf. den alten löschen/entfernen, oder mit npm direkt installieren. Achtung auf die Pfade.

Hier ist das neue script:
'use strict'; const CO2Monitor = require('node-co2-monitor'); const monitor = new CO2Monitor(); var logOn = false; var pfad = "co2sensor" + "."; var idCo2 = pfad + "co2"; var idTemp = pfad + "temperatur"; // Datenpunkte anlegen // ----------------------------------------------------------------------------- createState(idCo2, { name: 'CO2', desc: 'CO2', type: 'number', unit: 'ppm', role: 'value' }); createState(idTemp, { name: 'Temperatur', desc: 'Temperatur', type: 'number', unit: '°C', role: 'value' }); // Connect device. monitor.connect((err) => { if (err) { return console.error(err.stack); } log('CO2 Monitor connected.'); // Read data from CO2 monitor. monitor.transfer(); }); // Get results. monitor.on('temp', (temperature) => { // log(`temp: ${ temperature }`); setState(idTemp,parseFloat(temperature)); }); monitor.on('co2', (co2) => { // log(`co2: ${ co2 }`); setState(idCo2,parseInt(co2)); }); // Error handler monitor.on('error', (err) => { console.error(err.stack); // Disconnect device monitor.disconnect(() => { log('CO2 Monitor disconnected.'); process.exit(0); }); }); function stopCo2Monitor() { try{ monitor._endpoint.stopPoll(function(){ log("CO2 Monitor: Polling gestoppt"); monitor._interface.release(true, (error) => { if(error) { monitor.emit('CO2 Monitor error', error); } else { log("CO2 Monitor: Interface released"); monitor._device.close(); log("CO2 Monitor: Device geschlossen"); cb(true); } }); }); } catch (e) { log(e); // hat nicht geklappt log("CO2 Monitor: Fehler beim Beenden des Skripts"); } log("CO2 Monitor: Skript wurde gestoppt"); } // Wird ausgeführt, wenn das Skript gestoppt wird: // close connection if script stopped onStop(function skriptStop () { stopCo2Monitor(); // Kommunikation zum CO2 Monitor beenden }, 100 /*ms*/);@realwax Vielen Dank für deine tolle Anleitung. Ich habe es damit nach vielen Rückschlägen zum ersten Mal geschafft überhaupt Daten aus dem co2Monitor zu bekommen.
Bekomme allerdings im Log eine Warnung angezeigt.
javascript.0 2020-02-23 14:26:11.144 warn (7569) at Transfer.transferDone (/opt/iobroker/node_modules/iobroker.javascript/node_modules/usb/usb.js:441:9) javascript.0 2020-02-23 14:26:11.143 warn (7569) at InEndpoint.emit (events.js:198:13) javascript.0 2020-02-23 14:26:11.143 warn (7569) at InEndpoint._endpoint.on (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-co2-monitor/co2_monitor.js:137:30) javascript.0 2020-02-23 14:26:11.143 warn (7569) at CO2Monitor.emit (events.js:198:13) javascript.0 2020-02-23 14:26:11.142 warn (7569) at CO2Monitor.monitor.on (script.js.test1:53:5) javascript.0 2020-02-23 14:26:11.142 warn (7569) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1404:20) javascript.0 2020-02-23 14:26:11.141 warn (7569) You are assigning a number to the state "javascript.0.co2sensor.co2" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become aLeider bekomme ich in den Objekten nur die Temperatur angezeigt.

Hast du ne Idee woran das liegen könnte? Habe dein Script 1 zu 1 übernommen.
Grüße Christian
-
@realwax Vielen Dank für deine tolle Anleitung. Ich habe es damit nach vielen Rückschlägen zum ersten Mal geschafft überhaupt Daten aus dem co2Monitor zu bekommen.
Bekomme allerdings im Log eine Warnung angezeigt.
javascript.0 2020-02-23 14:26:11.144 warn (7569) at Transfer.transferDone (/opt/iobroker/node_modules/iobroker.javascript/node_modules/usb/usb.js:441:9) javascript.0 2020-02-23 14:26:11.143 warn (7569) at InEndpoint.emit (events.js:198:13) javascript.0 2020-02-23 14:26:11.143 warn (7569) at InEndpoint._endpoint.on (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-co2-monitor/co2_monitor.js:137:30) javascript.0 2020-02-23 14:26:11.143 warn (7569) at CO2Monitor.emit (events.js:198:13) javascript.0 2020-02-23 14:26:11.142 warn (7569) at CO2Monitor.monitor.on (script.js.test1:53:5) javascript.0 2020-02-23 14:26:11.142 warn (7569) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1404:20) javascript.0 2020-02-23 14:26:11.141 warn (7569) You are assigning a number to the state "javascript.0.co2sensor.co2" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become aLeider bekomme ich in den Objekten nur die Temperatur angezeigt.

Hast du ne Idee woran das liegen könnte? Habe dein Script 1 zu 1 übernommen.
Grüße Christian
Du bekommst einige Warnungen aus dem Skript und anderen Modulen, da sind meine Skills zu schwach um wirklich zu helfen, ABER die letzte Zeile und die sagt, dein co2 Objekt ist vom Typ "String" also Text, anstelle von "number" Bitte ändere das Objekt von string zu number (deutsch Zeichenkette zu Zahl - drück mal auf den Bleistift neben dem Mistkübel). Vielleicht klappt es dann.
Die restlichen Warnungen hmmm.... die Frage ist vermutlich hier welche Version von javascript, admin, npm/nodejs ist installiert. Aber wie gesagt, kein Profi um hier gut weiterzuhelfen. Kann dir meine sagen... 6.13 und 10.0.17 und die js engine 4.4.2. - die usb lib wird mitinstalliert, da depencies.... wichtig ist auch, dass die Rechte auf das usb device passen, siehe weiter oben in den Posts, aber da du Temperatur Werte bekommst, ist das gegeben.
Versuch mal das Umstellen auf Zahl und schick einfach nochmal dein debug - wenn ich helfen kann tue ich das gerne!
Viel Erfolg!
-
Hi,
bin zufällig über diesen alten thread gestolpert.
Ich habe vor geraumer Zeit einen ioBroker-Adapter für den CO2 Monitor zusammengebastelt und seither bei mir im Einsatz.Falls interesse besteht, schaut mal unter: https://github.com/bowao/ioBroker.co2mini
-
Hi,
bin zufällig über diesen alten thread gestolpert.
Ich habe vor geraumer Zeit einen ioBroker-Adapter für den CO2 Monitor zusammengebastelt und seither bei mir im Einsatz.Falls interesse besteht, schaut mal unter: https://github.com/bowao/ioBroker.co2mini
-
Hi,
bin zufällig über diesen alten thread gestolpert.
Ich habe vor geraumer Zeit einen ioBroker-Adapter für den CO2 Monitor zusammengebastelt und seither bei mir im Einsatz.Falls interesse besteht, schaut mal unter: https://github.com/bowao/ioBroker.co2mini
@bowao: Super! Vielen Dank. Das erleichtert einiges!
Für alle, die (wie ich) kurz überlegen müssten, wie man einen Adapter aus GitHub direkt installiert:
Im Admin-Panel unter Adapter:


Dann den Adapter noch unter "Apater" hinzufügen.
Grüße, Stefan
-
@bowao: Super! Vielen Dank. Das erleichtert einiges!
Für alle, die (wie ich) kurz überlegen müssten, wie man einen Adapter aus GitHub direkt installiert:
Im Admin-Panel unter Adapter:


Dann den Adapter noch unter "Apater" hinzufügen.
Grüße, Stefan
@RockDude sagte in Projekt: CO2 Monitor TFA Dostmann:
Dann den Adapter noch unter "Apater" hinzufügen.
du meinst sicherlich "über die Seite Adapter noch eine Instanz erstellen", oder?
-
CO2 Monitor von TFA Dostmann
Getestet unter:
-
Windows 10 am Intel NUC
-
Rasbian am Raspberry Pi3
CO2 Moonitor bei Amazon: http://amzn.to/2jCGGfQ
ca.: 65,00 EUR
Am Gerät interessant:
-
kleines schickes Gehäuse
-
mit LCD für Anzeige CO2 und Temperatur
-
LED Ampel für CO2 (rot/gelb/grün). Direkte Visualisierung an der Messstelle
-
Messergebnisse einigermaßen schlüssig
-
der verwendete Sensor soll für 15 Jahre ausgelegt sein
-
schnell realisierbar, keine Anfertigung von Hardware nötig
Bild vom CO2 Monitor:

Den CO2 Monitor gibt es auch von anderen Herstellern. Über zwei Schalter sind diverse Einstellungen möglich. Bei der Version von TFA Dosmann sind diese Schalter im Gehäuse und man muss die Rückwand abnehmen um diese zu erreichen. Ich habe die Schalter nicht benötigt.
Webseite eines anderen Herstellers(Anbieters:
https://www.co2meter.com/products/co2mi … ty-monitor
Dokumentation der beiden Tasten:
http://co2meters.com/Documentation/Manu … D-0301.pdf
Beschreibung des USB-Protokolls:
http://www.co2meters.com/Documentation/ … otocol.pdf
Dort gibt es auch eine ältere Windowssoftware (läuft unter Windows 10), die die Messwerte lokal in einer Tabelle speichert, sie grafisch anzeigt und die beim Erreichen von Schwellwerten eine Alarminfo anzeigen kann.
http://co2meters.com/co2mini/co2mini-install.zip
Das Gerät kalibriert sich automatisch, in dem es den niedrigsten Wert einer Woche als Basis nimmt.
Bisher hatte ich das Gerät nicht produktiv eingesetzt, da ich das Beenden der Kommunikation zum Gerät beim Skript-Stop nicht hinbekommen habe.
Die Lösung stand dann im Forum, die ich leider erst später gesehen habe (danke an den User redoced)
http://forum.iobroker.net/viewtopic.php … =20#p69382
Andere CO2 Projekte im ioBroker Forum
CO2 Monitor auf Basis eines Wemos und einem ZH-19 Sensor
http://forum.iobroker.net/viewtopic.php … 009#p96012
Von: spaceduck
-
sehr günstig
-
klein und Kompakt (Steckernetzgerätgehäuse)
Sobald der ZH-19 aus China eingetroffen ist, werde ich das Projekt auf jeden Fall nachbauen und mit dem Dostmann vergleichen.
Wäre eine schöne Ergänzung in Räumen, in denen ich eine direkte optische Signalisierung nicht benötige.
iAQ Core-C von ams
-
-
@ruhr70 Ich habe zwei exemplare der ZH-19 laufen. einen 5000er und einen 2000er. Die Geräte liegen direkt nebeneinander und haben ca 350 ppm Differenz und ich weiß nicht warum...
@David-Froebus du weisst schon dass der Beitrag von
ruhr70 19. Nov. 2017, 11:42
3 Jahre alt ist?
-
@David-Froebus du weisst schon dass der Beitrag von
ruhr70 19. Nov. 2017, 11:42
3 Jahre alt ist?