Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Extraktion der MQTT Sensorwerte / Tasmota

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Extraktion der MQTT Sensorwerte / Tasmota

Scheduled Pinned Locked Moved Skripten / Logik
14 Posts 8 Posters 9.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    Ingo1977
    wrote on last edited by
    #1

    Hallo,

    ich brauche eure Hilfe.

    Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:

    Baum: mqtt.0.tele.Sensor_Garten.SENSOR

    Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}

    Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?

    Danke und Grüße, Ingo

    C 1 Reply Last reply
    0
    • ChaotC Offline
      ChaotC Offline
      Chaot
      wrote on last edited by
      #2

      Vielleicht hilft dir das hier weiter:

      viewtopic.php?f=21&t=17738

      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 Reply Last reply
      0
      • I Offline
        I Offline
        Ingo1977
        wrote on last edited by
        #3

        Hmm, habe den Code angepasst, geht aber leider noch nicht. Was mache ich falsch?

        var json = "mqtt.0.tele.Sensor_Garten.SENSOR";
        var Temp = "javascript.0.Garten.BME280.Values.Temperatur";
        var Druck = "javascript.0.Garten.BME280.Values.Luftdruck";
        var Luft = "javascript.0.Garten.BME280.Values.Luftfeuchtigkeit";
        
        on(json, function(dp) {
           var obj = JSON.parse(dp.state.val);
           setState(Temp(obj.Temperature));
           setState(Druck, parseFloat(obj.Humidity));
           setState(Luft, parseFloat(obj.Pressure));
        });
        
        
        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          Die 3 Datenpunkte vom Typ "Zahl" unter javascript.0 sind vorhanden ?

          on(json, function(dp) {
             var obj = JSON.parse(dp.state.val).BME280;
             setState(Temp, obj.Temperature);
             setState(Luft, obj.Humidity);
             setState(Druck, obj.Pressure);
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Reply Last reply
          0
          • I Offline
            I Offline
            Ingo1977
            wrote on last edited by
            #5

            Super, danke. Funktioniert jetzt.

            Ich habe allerdings einen zweiten String, den ich nicht zerlegen kann (wegen Daten mehrerer Sensoren).

            {"Time":"2018-10-22T11:30:05","ANALOG":{"A0":3},"DS18B20-1":{"Id":"02099177E423","Temperature":55.9},"DS18B20-2":{"Id":"02099177E689","Temperature":30.8},"DS18B20-3":{"Id":"020A91771717","Temperature":52.8},"DS18B20-4":{"Id":"020A9177F712","Temperature":29.4},"TempUnit":"C"}

            Kann mir jemand bitte den letzten Codeschnipsel so anpassen, das das auch funktioniert?

            Im Log finde ich immer nur folgenden Eintrag:

            Script.js.Scripts.Skript3: Temperatur: undefined

            Vielen Dank vorab.

            on(json, function(dp) {
               var obj = JSON.parse(dp.state.val).D18B20-1;
               setState(Wasser_mitte, obj.Temperature);
               log('Temperatur: ' + obj.Temperature);
            });
            
            
            1 Reply Last reply
            0
            • L Offline
              L Offline
              Linedancer
              wrote on last edited by
              #6

              Hallo Ingo,

              ich kann dir dazu leider keinen Script bieten, aber vor diesem Problem stand ich vor einiger Zeit auch.

              Hab dann anstelle von Tasmota EasyESP genommen und kriege damit für jeden Sensor einen einzelnen Datenpunkt.

              Sieht dann so aus:
              1564_2018-10-22.png

              –

              Ciao, Gerhard

              1 Reply Last reply
              0
              • I Offline
                I Offline
                Ingo1977
                wrote on last edited by
                #7

                Ich würde gerne bei Tasmota bleiben. Bin aber leider nicht der große Programmierer und brauche daher Hilfe, wie ich die Einzelwerte der verschiedenen Sensoren extrahieren kann. Grüße …

                1 Reply Last reply
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  Der Sensor heißt "DS18B20-1".

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Reply Last reply
                  0
                  • I Offline
                    I Offline
                    Ingo1977
                    wrote on last edited by
                    #9

                    Hab ich schon korrigiert. Geht leider trotzdem nicht, gleiches Ergebnis.

                    Und damit könnte ich ja auch nur den ersten Sensor auslesen…

                    1 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #10

                      Der Sensorname enthält unzulässige Zeichen (-). Dann muss man anders darauf zugreifen.

                         var obj = JSON.parse(dp.state.val);
                         setState(Wasser_mitte, obj['DS18B20-1'].Temperature);
                      
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Reply Last reply
                      0
                      • H Offline
                        H Offline
                        herman2000
                        wrote on last edited by herman2000
                        #11

                        Gelöst habe ich das Probelm mit dem unzulässige Zeichen (-) in dem ich im JSON string das Minus Zeichen (-) durch ein Unterstrich (_) ersetzt habe.

                        var idJSON = 'mqtt.0.tele.wasser.SENSOR';  // Datenpunkt-ID mit JSON-String
                        var Temp1; 
                        var Temp2;
                        var Temp3;
                        var Temp4;
                        var Zeit;
                        
                        var idTemp1 = 'mqtt.0.tele.wasser.Temperature1';
                        var idTemp2 = 'mqtt.0.tele.wasser.Temperature2';
                        var idTemp3 = 'mqtt.0.tele.wasser.Temperature3';
                        var idTemp4 = 'mqtt.0.tele.wasser.Temperature4';
                        
                        function JSONtoTemp(json) {
                            json = json.replace(/DS18B20-/g, "DS18B20_" );
                            var obj = JSON.parse(json);
                        //    log('Wasser-json: ' + json);
                        
                            Zeit = obj.Time;
                            Temp1 = obj.DS18B20_1.Temperature;
                            Temp2 = obj.DS18B20_2.Temperature;
                            Temp3 = obj.DS18B20_3.Temperature;
                            Temp4 = obj.DS18B20_4.Temperature;
                        //    log('Temp1: ' + Temp1 + ' °C, Temp2: ' + Temp2 + '°C, Temp3: ' + Temp3 + ' °C, Temp4: ' + Temp4 + '°C');
                        
                            setState(idTemp1, Temp1);
                            setState(idTemp2, Temp2);
                            setState(idTemp3, Temp3);
                            setState(idTemp4, Temp4);
                        }
                        
                        JSONtoTemp(getState(idJSON).val);  // Script start
                        
                        on(idJSON, function(dp) {  // triggern bei Wertänderung
                            JSONtoTemp(dp.state.val);
                        });
                        
                        1 Reply Last reply
                        0
                        • E Offline
                          E Offline
                          Eggs
                          wrote on last edited by
                          #12

                          Moin,
                          wäre es nicht einfacher den Sonoff-Adapter zu verwenden? Der dröselt das normal auf und legt für jeden Sensor die Datenpunkte an.

                          Gruß aus der Mitte
                          Dirk

                          1 Reply Last reply
                          0
                          • I Ingo1977

                            Hallo,

                            ich brauche eure Hilfe.

                            Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:

                            Baum: mqtt.0.tele.Sensor_Garten.SENSOR

                            Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}

                            Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?

                            Danke und Grüße, Ingo

                            C Offline
                            C Offline
                            chatt
                            wrote on last edited by
                            #13

                            @ingo1977 said in Extraktion der MQTT Sensorwerte / Tasmota:

                            Hallo,

                            ich brauche eure Hilfe.

                            Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:

                            Baum: mqtt.0.tele.Sensor_Garten.SENSOR

                            Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}

                            Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?

                            Danke und Grüße, Ingo

                            Ich stehe exakt vor der gleichen Hürde.
                            Ich bin allerdings noch so neu, ich weiß garnicht wie ihr an diese json Datei kommt,um dann die Bindestriche mit Unterstrichen zu ersetzen.

                            Ralla66R 1 Reply Last reply
                            0
                            • C chatt

                              @ingo1977 said in Extraktion der MQTT Sensorwerte / Tasmota:

                              Hallo,

                              ich brauche eure Hilfe.

                              Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:

                              Baum: mqtt.0.tele.Sensor_Garten.SENSOR

                              Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}

                              Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?

                              Danke und Grüße, Ingo

                              Ich stehe exakt vor der gleichen Hürde.
                              Ich bin allerdings noch so neu, ich weiß garnicht wie ihr an diese json Datei kommt,um dann die Bindestriche mit Unterstrichen zu ersetzen.

                              Ralla66R Offline
                              Ralla66R Offline
                              Ralla66
                              Most Active
                              wrote on last edited by Ralla66
                              #14

                              @chatt

                              nicht so schwer machen, nimm den Sonoff Adapter als Broker anstatt Mqtt.
                              Port dann 1884 oder 1885 da ja Mqtt 1883 belegt.

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              388

                              Online

                              32.6k

                              Users

                              82.2k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe