Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] (vorübergehend) Luftgütesensor BME 680

    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

    [gelöst] (vorübergehend) Luftgütesensor BME 680

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

      Jetzt stellt sich eigentlich die Frage wie ich aus der Formel das Ergebnis in den Datenpunkt bekomme.

      Irgendwas übersehe ich da. Mir wird aktuell nur "true" reingeschrieben.

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

        Für heute reichts erstmal. Mir raucht der Kopf.

        Ich habe jetzt einen Wert der wie ein IAQ aussieht. Allerdings mit 8 Dezimalstellen. Das will ich noch ändern.

        Dazu habe ich noch eine Ausertung erstellt mit der ich dann ein Farbfeld steuern möchte.

        Allerdings habe ich das noch nicht getestet. Ich denke aber das das so nicht funktionieren wird.

        Wenn jemand Vorschläge hat oder das Ganze vereinfachen kann dann bitte her damit.
        5779_luftgueteauswertung.jpg
        5779_luftgueteb.jpg
        5779_luftguetea.jpg

        1 Reply Last reply Reply Quote 0
        • G
          Garf last edited by

          @Chaot:

          Ich habe über Aliexpress einen kleinen Luftgütesensor bezogen. Das Ding nennt sich BM680. `
          Mit deinem Beitrag hast Du mich wieder irgendwie angefixt und nun denke ich gerade darüber nach mir auch so ein Teil zu bestellen. Welchen hast Du bei Aliexpress bestellt?

          Der Fühler soll an die I2C Schnittstelle angeschlossen werden.

          Für mich kämen folgende Fühler in Frage:

          https://www.amazon.de/BlueDot-BME680-Se … I2C+BME680

          https://www.watterott.com/de/BME680-Breakout

          Wobei dieser mein Favorit wäre:

          https://de.aliexpress.com/item/DFRobot- … autifyAB=0

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

            Ich wollte recht klein:

            https://de.aliexpress.com/item/BME680-D … 4c4djehDSC

            Allerdings habe ich das Script immer noch nicht so richtig am laufen.

            Irgendwie scheint auch die Formel in der Form nicht zu stimmen.

            Wenn ich die Luft "verunreinige" (Taschentuch mit Alkohol) sinkt bei mir der gelesene Widerstandswert. Also genau umgekehrt zur Formel.

            Da werde ich mir das am Wochenende mal genauer anschauen müssen.

            1 Reply Last reply Reply Quote 0
            • G
              Garf last edited by

              @Chaot:

              Ich wollte recht klein: ` Und wie eingebunden, I²C- oder SPI-Bus?

              > Da werde ich mir das am Wochenende mal genauer anschauen müssen.
              Immer gut wenn sich schon jemand in das Thema reinhängt. :mrgreen:

              Ich werde dann mal meinen Favoriten bestellen.

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

                Das hängt an einem Sonoff SV mit Tasmota Firmware und ist dort über I²C Bus eingebunden.

                Die Daten werden per MQTT an den ioBroker gesendet und dort dann per Script (hoffentlich irgendwann einmal) weiterverarbeitet um dann in VIS als mehrfarbige Fläche (Ampel) dargestellt zu werden.

                Das Projekt ist jetzt gerade eine Woche alt, aber ich bin mit Scripten nicht so 100% fit das ich wirklich lange grübeln muss wie ich was umsetzen kann.

                Auch für Blockly (obwohl im Grunde einfach) bin ich wohl etwas alt.

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

                  Nach ein paar Tagen herumexperimentieren habe ich den Eindruck gewonnen das mit der Tasmota Firmware irgendwas nicht stimmen kann.

                  1. Mein Sensor verhält sich genau umgekehrt zur Beschreibung. Lege ich einen Lappen mit Spiritus neben den Sensor geht der Wert auf 9 kOhm RUNTER! Laut Bosch sollte der Wert nach oben gehen.

                  2. Im Datenblatt wird eine Heiz- und Ausleseperiode beschrieben. Das kann ich an den gelieferten Werten nicht erkennen. Ich sehe einen ständig schwankenden Widerstandswert der offensichtlich einfach nur ausgelesen wird ohne einen Messrhythmus zu befolgen.

                  3. Wenn ich die Weboberfläche des Sensors offen lasse steigt der Widerstandswert ständig an ohne das sich an der Luft etwas verändern würde.

                  Von daher habe ich meine Experimente mit dem Script zunächst zurückgestellt bis ich herausgefunden habe was hier falsch läuft.

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

                    Jetz wird es schräg.

                    Da mir derzeit keine bessere Lösung einfällt und Bosch offensichtlich die Formeln geheim hält werde ich langfristig vermutlich nicht beim BME680 bleiben.

                    Übergangsweise habe ich mir eine Lösung gebastelt die Meine Zwecke erfüllen müsste:

                    Aus dem angehängten Tabellenblatt (von adafruit) habe ich mir folgende Formel konstruiert:

                    Basistemperatur: 21°C
                    Basisluftfeuchte: 40%
                    Basiswert: 5 kOhm
                    
                    Wichtung:
                    Temperatur: 4,7%
                    Luftfeuchte: 8%
                    Luftgüte: 70%
                    
                    A= Temperatur
                    B= Luftfeuchte
                    C= Widerstandswert in kOhm
                    
                    ((100-21-A)/(100-21)*(0,047*100))+((100-40-B)/(100-40)*(0,08*100))+((C/5)*(0,7*10))
                    

                    Da hier aber die Werte jetzt noch auf IAQ angepasst werden sollten habe ich die Werte etwas verschoben damit ich bei ca. 500 ende:

                    ((79-A)/(79*3,3))+((60-B)/(60*5,6))+((C/5)*4,9)
                    oder
                    ((79-A)/260,7)+((60-B)/336)+((C/5)*4,9)
                    

                    Da jetzt die Werte offensichtlich nicht der gängigen IAQ Tabelle entsprechen habe ich meine Grenzwerte entsprechend angepasst.

                    Da ich hier mit recht wenig Umweltverschmutzung lebe habe ich den Grenzwert "offenes Fenster neben Sensor" als Übergangswert zur "normalen" Luftqualität angelegt.

                    Somit habe ich dann für AIQ folgende Grenzwerte:

                    500 - 301 Sehr gut

                    300 - 251 Normal

                    200 - 151 etwas Schlecht

                    150 - 101 Schlecht

                    100 - 51 sehr schlecht

                    50 - 0 Extrem schlecht

                    Ich denke mit dem Kompromiss kann ich aktuell arbeiten und suche jetzt einen Sensor der nicht "Top Secret" ist.

                    Falls mir jemand noch bei der Umsetzung in VIS helfen könnte wäre ich recht dankbar.

                    Ich dachte an ein farbig hinterlegtes Feld das den Wert anzeigt und entsprechend die Farbe ändert. Leider habe ich keine Ahnung welches Widget oder welche Kombination dazu geeignet wäre.
                    5779_slide1.jpg

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

                      So, dank tatkräftiger Hilfe von Paul53 habe ich es geschafft eine Anzeigefläche in VIS zu basteln.

                      Das Script für die Auswertung:

                      const Luftguete = "javascript.1.Luftguete"/*Luftguete*/;
                      
                      function setQualitaet(x) { 
                        var y = 0;
                        if(x > 50) y = 1;
                        if(x > 100) y = 2;
                        if(x > 150) y = 3;
                        if(x > 200) y = 4;
                        if(x > 300) y = 5;
                        setState("javascript.1.Luftqualität"/*Luftqualität*/, y, true);
                      }
                      
                      setQualitaet(getState(Luftguete).val); // Skriptstart
                      
                      on(Luftguete, function(dp) { // triggert bei Wertänderung
                        setQualitaet(dp.state.val);
                      });
                      

                      Schreibt einen Datenpunkt "Luftqualität" in das Objekt Javasript.1.

                      In VIS nehme ich nun ein "Image 8" und frage dort den Wert des Datenpunkts ab.

                      Als Bilder verwende ich einfach 100x100 Bilder mit entsprechender Hintergrundfarbe. Optional wären auch Smilies denkbar.

                      Ich danke erst mal allen die sich auch Gedanken zu dem Thema gemacht haben und hoffe das meine vorübergehende Lösung für die ersten Schritte mit dem BME680 taugt.

                      Wenn das jemand nachbauen möchte darf er sich das gerne mitnehmen.

                      Das Erfassungssscript

                      on({id: 'sonoff.0.Umweltsensor.BME680_Gas', change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        setState("javascript.1.Luftguete"/*Luftguete*/, ((79 - getState("sonoff.0.Umweltsensor.BME680_Temperature").val) / 260.7 + (60 - getState("sonoff.0.Umweltsensor.BME680_Humidity").val) / 336 + (getState("sonoff.0.Umweltsensor.BME680_Gas").val / 5) * 4.9), true);
                      });
                      
                      

                      Noch ein Hinweis: Alle beiden scripte laufen in der Instanz javascript.1. Bei einer Übernahme muss das eventuell an die eigene Situation angepasst werden.

                      G 1 Reply Last reply Reply Quote 0
                      • G
                        gutgut30 @Chaot last edited by

                        @Chaot
                        Besten Dank für das Teilen deines Scriptes.

                        Als Tipp für Newbies die evtl. genau so fragend vor dem PC sitzen und sich wundern warum immer nur 100 als Wert erscheint:
                        Ihr müsst den Zahlenbereich des angelegten Datenpunktes "Luftguete" entsprechend anpassen 😉

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        874
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        6447
                        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