Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Projekt: CO2 Monitor TFA Dostmann

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Projekt: CO2 Monitor TFA Dostmann

    This topic has been deleted. Only users with topic management privileges can see it.
    • ruhr70
      ruhr70 last edited by

      ## Flot Diagramm

      http://172.16.130.35:8082/flot/index.html?l%5B0%5D%5Bid%5D=javascript.0.co2sensor.co2&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Baggregate%5D=minmax&l%5B0%5D%5Bcolor%5D=%230000ff&l%5B0%5D%5Bmin%5D=300&l%5B0%5D%5Bmax%5D=1600&l%5B0%5D%5Bthickness%5D=3&l%5B0%5D%5Bshadowsize%5D=3&l%5B0%5D%5Bunit%5D=ppm&l%5B0%5D%5BignoreNull%5D=false&l%5B0%5D%5BafterComma%5D=2&timeType=relative&relativeEnd=now&range=1440&live=30&aggregateType=count&aggregateSpan=300&hoverDetail=true&useComma=false&zoom=false&noedit=false&animation=0&m%5B0%5D%5Bl%5D=0&m%5B0%5D%5Bv%5D=800&m%5B0%5D%5Bf%5D=0&m%5B0%5D%5Bc%5D=%23ccffcc&m%5B0%5D%5Bt%5D=3&m%5B0%5D%5Bs%5D=3&m%5B0%5D%5Bd%5D=&m%5B0%5D%5Bp%5D=l&m%5B0%5D%5Bpy%5D=0&m%5B0%5D%5Bfc%5D=%23FF0000&m%5B0%5D%5Bfs%5D=&m%5B0%5D%5Bvl%5D=0&m%5B1%5D%5Bl%5D=0&m%5B1%5D%5Bv%5D=1200&m%5B1%5D%5Bf%5D=0&m%5B1%5D%5Bc%5D=%23ffffaa&m%5B1%5D%5Bt%5D=3&m%5B1%5D%5Bs%5D=3&m%5B1%5D%5Bd%5D=&m%5B1%5D%5Bp%5D=l&m%5B1%5D%5Bpy%5D=0&m%5B1%5D%5Bfc%5D=%2300FF00&m%5B1%5D%5Bfs%5D=&m%5B1%5D%5Bvl%5D=800&m%5B2%5D%5Bl%5D=0&m%5B2%5D%5Bv%5D=1600&m%5B2%5D%5Bf%5D=0&m%5B2%5D%5Bc%5D=%23ffcccc&m%5B2%5D%5Bt%5D=3&m%5B2%5D%5Bs%5D=3&m%5B2%5D%5Bd%5D=&m%5B2%5D%5Bp%5D=l&m%5B2%5D%5Bpy%5D=0&m%5B2%5D%5Bfc%5D=%230000FF&m%5B2%5D%5Bfs%5D=&m%5B2%5D%5Bvl%5D=1200
      

      Die IP-Adresse, hier 172.16.130.35 und der Datenpunkt javascript.0.co2sensor.co2

      Beispiel Flot Diagramm:
      327_2017-11-19co2_flot.png

      Die Farbbereiche entsprechen den voreingestellten LED-Signalisierungen des CO2 Monitors (diese sind über die Tasten am Gerät anpassbar).

      ## Einsatzbereich bei mir:

      Meine Hauptinstanz von ioBroker läuft unter Ubuntu VM auf einem ESX Server (auf einem Intel NUC).

      Die CO2 Monitoren sind daher auf anderen ioBroker Instanzen per USB angeschlossen und übertragen per MQTT die Messwerte zur Haupt-ioBroker-Installation.

      • Am Windows 10 Intel NUC im Arbeitszimmer. Direkter Blick auf die Lufqualität am PC (über die LED Ampel)

      • Am Raspberry Pi 3 im Schlafzimmer, mit direktem Blick auf die Lufqualität.

      • geplant: im Kinderzimmer am Pi 3

      • geplant: im Auto am Pi 3 über das Board-WLAN

      • geplant: am Arbeitsplatz im Büro

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        Zur Ergänzung, wie der Sensor bei mir in VIS genutzt wird.

        Ich nutze das Material Design CSS und lasse nur die Karten einblenden, die "etwas zu sagen haben". Aktuell ist der CO2 Wert im Arbeitszimmer überschritten:

        327_2018-02-04_co2_md_vis.png

        Die Anzeige erfolgt auf zwei Tablets und bei Bedarf auf iPad, PC oder Mac.

        1 Reply Last reply Reply Quote 0
        • S
          sidamos last edited by

          @ruhr70:

          Meine Hauptinstanz von ioBroker läuft unter Ubuntu VM auf einem ESX Server (auf einem Intel NUC).

          Die CO2 Monitoren sind daher auf anderen ioBroker Instanzen per USB angeschlossen und übertragen per MQTT die Messwerte zur Haupt-ioBroker-Installation. `

          Ich würde auch gerne diesen CO2 monitor mit ioBroker und RPI verwenden und Daten per MQTT veröffentlichen. openHAB soll die Werte dann über MQTT lesen (Mosquito läuft).

          Habe mir gerade das RPI Image von ioBroker installiert (es gab Probleme mit den Berechtigungen in /opt/iobroker, aber jetzt scheint es zu laufen).

          Ich bin kein Neuling bei Linux und Hausautomation, aber bei ioBroker.

          Das Modul co2-monitor habe ich hinzugefügt und das Script unter common angelegt. Das Gerät ist am RPI angeschlossen.

          Jetzt bekomme ich beim Start:

          17:47:57.373	[info]	javascript.0 script.js.common.Skript1: -------- -------- -------- CO2 Monitor: Skript gestartet -------- -------- --------
          17:47:57.373	[error]	javascript.0 script.js.common.Skript1: /opt/iobroker/node_modules/iobroker.javascript/node_modules/co2-monitor/co2-monitor.js:88
          17:47:57.378	[error]	javascript.0 at startCo2Monitor (script.js.common.Skript1:88:16)
          17:47:57.380	[error]	javascript.0 at script.js.common.Skript1:132:1
          17:49:46.261	[info]	javascript.0 Stop script script.js.common.Skript1
          17:49:46.262	[info]	javascript.0 script.js.common.Skript1: TypeError: Cannot read property 'stopPoll' of null
          17:49:46.263	[info]	javascript.0 script.js.common.Skript1: CO2 Monitor: Fehler beim Beenden des Skripts
          
          

          17:49 habe ich das Script wieder pausiert.

          Eine Idee? Danke!

          1 Reply Last reply Reply Quote 0
          • R
            RockDude last edited by

            Hallo zusammen,

            Mein erster Post hier im Forum und gleich eine Lösung: stolz 😂

            Ich habe auch ewig versucht, das Co2 Messgerät von TFA zum Laufen zu bringen. Es liegt wohl an den USB-Rechten. Als normaler user darf man unter Linux anscheinend nicht einfach so auf usb-devices zugreifen.

            Ich habe also eine neue Regel erstellt, welche das Co2 Messgerät für alle verwendbar macht:

            • mit lsusb -vvv
              die VendorID(VID) und ProductID(PID) des Co2Meters auslesen

            • dann folgende Zeile
              SUBSYSTEM=="usb", ATTRS{idVendor}=="VID", ATTRS{idProduct}=="PID" , GROUP="iobroker" , MODE="0666"
              bei mir war das:
              SUBSYSTEM=="usb", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="a052" , GROUP="iobroker" , MODE="0666"
              in diese beiden neuen Dateien einfügen (als root)
              /lib/udev/rules.d/50-myusb.rules
              /etc/udev/rules.d/50-myusb.rules
              (wahrscheinlich genügt auch eine von beiden...)

            • jetzt die Rechte neu einlesen:
              udevadm control --reload-rules
              oder am besten neu starten.

            Nun sollte alles funktionieren!

            Grüße,
            Stefan

            1 Reply Last reply Reply Quote 1
            • M
              mavier last edited by

              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?

              1 Reply Last reply Reply Quote 0
              • realwax
                realwax last edited by

                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.

                544194c2-5711-4860-b6b8-77928661d90f-image.png

                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*/);
                
                Christian Schulze 1 Reply Last reply Reply Quote 0
                • Christian Schulze
                  Christian Schulze @realwax last edited by

                  @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 a
                  
                  

                  Leider bekomme ich in den Objekten nur die Temperatur angezeigt.

                  5bc6dc90-a35f-49fb-b679-638a010d3081-image.png

                  Hast du ne Idee woran das liegen könnte? Habe dein Script 1 zu 1 übernommen.

                  Grüße Christian

                  realwax 1 Reply Last reply Reply Quote 0
                  • realwax
                    realwax @Christian Schulze last edited by realwax

                    @Christian-Schulze

                    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!

                    1 Reply Last reply Reply Quote 0
                    • bowao
                      bowao Developer last edited by

                      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

                      T R 2 Replies Last reply Reply Quote 2
                      • T
                        Tiggr @bowao last edited by

                        @bowao Habs gerade eingerichtet und es funktionierte auf Anhieb, vielen Dank! 👍

                        1 Reply Last reply Reply Quote 0
                        • R
                          RockDude @bowao last edited by

                          @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:
                          74e9b2f7-9594-4e58-ae2d-e5cec097c973-grafik.png

                          09c0dff6-77fc-4b7c-b712-0150c84ad209-grafik.png

                          Dann den Adapter noch unter "Apater" hinzufügen.

                          Grüße, Stefan

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @RockDude last edited by Homoran

                            @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?

                            1 Reply Last reply Reply Quote 0
                            • D
                              Dragon @ruhr70 last edited by

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

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @Dragon last edited by Homoran

                                @David-Froebus du weisst schon dass der Beitrag von

                                ruhr70 19. Nov. 2017, 11:42

                                3 Jahre alt ist?

                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  Dragon @Homoran last edited by

                                  @Homoran Super Tip, habe ich nicht gesehen, Danke!

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tristan last edited by

                                    Hallo Zusammen,

                                    gibts zum Thema CO2-Melder und MQTT auch aktuellere Topics? Ich finde nur selbstbau-Lösungen mit EPS+Sensor. Finde aber die Erweiterung eines vollständigen Gehäuses ganz attraktiv.

                                    VG Tristan

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    447
                                    Online

                                    31.9k
                                    Users

                                    80.2k
                                    Topics

                                    1.3m
                                    Posts

                                    11
                                    18
                                    5354
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo