Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] (vorübergehend) Luftgütesensor BME 680

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
12 Beiträge 3 Kommentatoren 6.7k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ChaotC Offline
    ChaotC Offline
    Chaot
    schrieb am zuletzt editiert von
    #3

    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.

    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

    1 Antwort Letzte Antwort
    0
    • ChaotC Offline
      ChaotC Offline
      Chaot
      schrieb am zuletzt editiert von
      #4

      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

      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

      1 Antwort Letzte Antwort
      0
      • G Offline
        G Offline
        Garf
        schrieb am zuletzt editiert von
        #5

        @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 Antwort Letzte Antwort
        0
        • ChaotC Offline
          ChaotC Offline
          Chaot
          schrieb am zuletzt editiert von
          #6

          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.

          ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

          1 Antwort Letzte Antwort
          0
          • G Offline
            G Offline
            Garf
            schrieb am zuletzt editiert von
            #7

            @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 Antwort Letzte Antwort
            0
            • ChaotC Offline
              ChaotC Offline
              Chaot
              schrieb am zuletzt editiert von
              #8

              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.

              ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

              1 Antwort Letzte Antwort
              0
              • ChaotC Offline
                ChaotC Offline
                Chaot
                schrieb am zuletzt editiert von
                #9

                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.

                ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                1 Antwort Letzte Antwort
                0
                • ChaotC Offline
                  ChaotC Offline
                  Chaot
                  schrieb am zuletzt editiert von
                  #10

                  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

                  ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                  1 Antwort Letzte Antwort
                  0
                  • ChaotC Offline
                    ChaotC Offline
                    Chaot
                    schrieb am zuletzt editiert von
                    #11

                    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.

                    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                    G 1 Antwort Letzte Antwort
                    0
                    • ChaotC Chaot

                      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 Offline
                      G Offline
                      gutgut30
                      schrieb am zuletzt editiert von
                      #12

                      @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 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      840

                      Online

                      32.7k

                      Benutzer

                      82.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe