Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [gelöst] BME 680 Werte in ioBroker

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [gelöst] BME 680 Werte in ioBroker

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

      Ich habe mir ein kleines Bastelopbjekt besorgt:

      Einen Sonoff DEV mit Tasmota 6.0.0 Firmware

      Dazu einen BME 680

      Unter Tasmota bzw. der Weboberfläche erhalte ich vom BME 680 einen Widerstandswert für den Gassensor.

      Wie schaffe ich es den Widerstandswert in den ioBroker zu bekommen?

      Laut Konsole wird der scheinbar mit MQTT versendet, aber in den Objekten erscheinen nur Temperatur, Luftfeuchte und Luftdruck.

      22:02:23 MQT: tele/sonoff/STATE = {"Time":"2018-06-07T22:02:23","Uptime":"0T00:20:54","Vcc":3.190,"Wifi":{"AP":1,"SSId":"xxxx","RSSI":92,"APMac":"08:8A:20:D4:C7:3E"}}
      22:02:23 MQT: tele/sonoff/SENSOR = {"Time":"2018-06-07T22:02:23","BME680":{"Temperature":28.9,"Humidity":52.1,"Pressure":985.7,"Gas":165.32},"TempUnit":"C"}
      

      Zweite Frage:

      Hat den schon jemand im Einsatz und eventuell schon ein Projekt gestartet?

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

        Ich wollte auch mal einen GPIO Pin am Sonoff nutzen - ich habe das dann nur geschafft indem ich den MQTT Adapter installiert habe - dort waren die Werte dann … wäre aber schöner wenn das im Sonoff Adapter auch ankommen würde.

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

          lies mal hier => https://github.com/ioBroker/ioBroker.sonoff/issues/43

          autogenerate objects test version

          FabianHM created this issue in ioBroker/ioBroker.sonoff

          closed [Add Support] Analog Input A0 #43

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

            P_E_R_F_E_K_T!

            Herzlichen Dank. Genau was ich gesucht habe.

            Jetzt noch die Werte umrechnen und es sollte einen guten Umweltsensor abgeben. Das wird zwar noch eine Nuss, aber ich habe ja Zeit.

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

              Hallo Chaot,

              Stehe vor dem gleichen Problem mit dem BME680. Bis auf Gas werden mir die Werte im Sonoff Adapter angezeigt.

              Den o.g. link habe ich gelesen finde dort allerdings keine Antwort mit der ich was anfangen kann.

              Wie hast Du das gelöst? @Chaot:

              P_E_R_F_E_K_T!

              Herzlichen Dank. Genau was ich gesucht habe.

              Jetzt noch die Werte umrechnen und es sollte einen guten Umweltsensor abgeben. Das wird zwar noch eine Nuss, aber ich habe ja Zeit. `

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

                Ok

                das wird etwas ausführlicher:

                Das Script für den Sensor:

                Ich werte zunächst die einzelnen Sensorwerte aus und beschreibe damit einen Datenpunkt:

                Luftdruck

                ! ````
                const Druck = "sonoff.0.Umweltsensor.BME680_SeaPressure"/Umweltsensor BME680 SeaPressure/;
                ! function setLuftdruck(x) {
                var y = 0;
                if(x > 980) y = 1;
                if(x > 1000) y = 2;
                if(x > 1020) y = 3;
                if(x > 1040) y = 4;
                if(x > 1080) y = 5;
                setState("javascript.1.Luftdruck"/Luftdruck/,y, true);
                }
                ! setLuftdruck(getState(Druck).val); // Skriptstart
                ! on(Druck, function(dp) { // triggert bei Wertänderung
                setLuftdruck(dp.state.val);
                });

                Luftfeuchte
                >! ````
                const Feuchte = "sonoff.0.Eingang.SI7021_Humidity"/*Eingang SI7021  Humidity*/;
                >! function setLuftfeuchte(x) { 
                  var y = 0;
                  if(x > 20) y = 1;
                  if(x > 40) y = 2;
                  if(x > 60) y = 3;
                  if(x > 80) y = 4;
                  if(x > 100) y = 5;
                  setState("javascript.1.Luftfeuchte"/*Luftfeuchte*/, y, true);
                }
                >! setLuftfeuchte(getState(Feuchte).val); // Skriptstart
                >! on(Feuchte, function(dp) { // triggert bei Wertänderung
                  setLuftfeuchte(dp.state.val);
                });
                

                Temperatur

                ! ````
                const Lufttemperatur = "sonoff.0.Eingang.SI7021_Temperature"/Eingang SI7021 Temperature/;
                ! function setTemperatur(x) {
                var y = 0;
                if(x > -10) y = 1;
                if(x > 10) y = 2;
                if(x > 18) y = 3;
                if(x > 26) y = 4;
                if(x > 34) y = 5;
                setState("javascript.1.Lufttemperatur"/Lufttemperatur/, y, true);
                }
                ! setTemperatur(getState(Lufttemperatur).val); // Skriptstart
                ! on(Lufttemperatur, function(dp) { // triggert bei Wertänderung
                setTemperatur(dp.state.val);
                });

                Daraus berechne ich den Wert der Luftgüte:
                
                >! ````
                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);
                });
                

                und wandle das dann noch in eine Ampelanzeige um:

                ! ````
                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);
                });

                bzw. generiere ich aus den Werten 1-5 mit dem Widget eine Farbige Anzeige.
                
                Inwieweit die Werte jetzt genau den Vorgaben entsprechen kann ich dir leider nicht beantworten, da es scheinbar ein Staatsgeheimnis ist wie die Luftgüte wirklich berechnet wird. Dazu kommt der "hochgeheime" BME680 dessen Werte auch nicht wirklich sauber dokumentiert sind.
                
                Ich denke man könnte das alles in ein Script packen, aber da habe ich mal die Finger davon gelassen. Da gibt es hier Spezialisten die das mit einem Blinzeln erledigen. Ich persönlich bin froh das es so verlässlich läuft.
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                899
                Online

                31.6k
                Users

                79.5k
                Topics

                1.3m
                Posts

                4
                6
                1816
                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