Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Regex Ergebnis Problem

    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

    Regex Ergebnis Problem

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

      Ich gebs ja zu... ich kann eigentlich nur C programmieren.... 😉 .... so modernes "Zeug" ist zwar cool übersteigt aber mein wissen.

      entries wird vom editor vorgeschlagen... deswegen hab ich es mal probiert.

      Ich hab keine Ahnung von JSON.

      Vielleicht könnt ihr mir ja sagen wie ich das am Besten auflöse:
      ich bekomme von "Tasmota" den folgenden String:

      {"Time":"2021-09-28T10:26:32","DS18B20-1":{"Id":"01131B932F1C","Temperature":85.0},"DS18B20-2":{"Id":"01131E9BA79C","Temperature":85.0},"DS18B20-3":{"Id":"0213169562AA","Temperature":21.6},"DS18B20-4":{"Id":"021316AF66AA","Temperature":73.2},"DS18B20-5":{"Id":"02131692A9AA","Temperature":69.9},"DS18B20-6":{"Id":"01131E80E9A7","Temperature":27.1},"DS18B20-7":{"Id":"01131E6FB0FF","Temperature":30.4},"ESP32":{"Temperature":53.3},"TempUnit":"C"}

      und möchte diese in einzelne Objekte zerlegen.
      Javascript.Tasmotaxxx.DS18B20-1.id und temp

      mickym liv-in-sky 3 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @AndreasE112 last edited by mickym

        @andrease112 sagte in Regex Ergebnis Problem:

        {"Time":"2021-09-28T10:26:32","DS18B20-1":{"Id":"01131B932F1C","Temperature":85.0},"DS18B20-2":{"Id":"01131E9BA79C","Temperature":85.0},"DS18B20-3":{"Id":"0213169562AA","Temperature":21.6},"DS18B20-4":{"Id":"021316AF66AA","Temperature":73.2},"DS18B20-5":{"Id":"02131692A9AA","Temperature":69.9},"DS18B20-6":{"Id":"01131E80E9A7","Temperature":27.1},"DS18B20-7":{"Id":"01131E6FB0FF","Temperature":30.4},"ESP32":{"Temperature":53.3},"TempUnit":"C"}

        Du nimmst immer als erstes einen JSON Formatierer.

        Mit

        var obj = parse("{"Time":"2021-09-28T10:26:32","DS18B20-1":{"Id":"01131B932F1C","Temperature":85.0},"DS18B20-2":{"Id":"01131E9BA79C","Temperature":85.0},"DS18B20-3":{"Id":"0213169562AA","Temperature":21.6},"DS18B20-4":{"Id":"021316AF66AA","Temperature":73.2},"DS18B20-5":{"Id":"02131692A9AA","Temperature":69.9},"DS18B20-6":{"Id":"01131E80E9A7","Temperature":27.1},"DS18B20-7":{"Id":"01131E6FB0FF","Temperature":30.4},"ESP32":{"Temperature":53.3},"TempUnit":"C"}");
        

        oder falls das direkt als Objekt rausgenommen kommt und nicht als String - brauchst die Umwandlung natürlich nicht.
        https://www.w3schools.com/js/js_json_parse.asp

        Am Besten nutzt Du so einen JSON Formatter. Ich nehm den hier: https://jsonformatter.org/

        Im Tree-View kannst Du dann wunderbar die Hierachie erkennen:

        8c5bd006-2571-462f-99d4-275cb4e9aa33-image.png

        Auf den grünen Wert greifst dann mit

        obj.DS18B20-1.ID
        

        zu bzw. mit

        obj.DS18B20-1.Temperature
        

        auf die Temperatur usw.

        A 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @AndreasE112 last edited by liv-in-sky

          @andrease112 sagte in Regex Ergebnis Problem:

          {"Time":"2021-09-28T10:26:32","DS18B20-1":{"Id":"01131B932F1C","Temperature":85.0},"DS18B20-2":{"Id":"01131E9BA79C","Temperature":85.0},"DS18B20-3":{"Id":"0213169562AA","Temperature":21.6},"DS18B20-4":{"Id":"021316AF66AA","Temperature":73.2},"DS18B20-5":{"Id":"02131692A9AA","Temperature":69.9},"DS18B20-6":{"Id":"01131E80E9A7","Temperature":27.1},"DS18B20-7":{"Id":"01131E6FB0FF","Temperature":30.4},"ESP32":{"Temperature":53.3},"TempUnit":"C"}

          beispiel:

          let myObjText={"Time":"2021-09-28T10:26:32","DS18B20-1":{"Id":"01131B932F1C","Temperature":85.0},"DS18B20-2":{"Id":"01131E9BA79C","Temperature":85.0},"DS18B20-3":{"Id":"0213169562AA","Temperature":21.6},"DS18B20-4":{"Id":"021316AF66AA","Temperature":73.2},"DS18B20-5":{"Id":"02131692A9AA","Temperature":69.9},"DS18B20-6":{"Id":"01131E80E9A7","Temperature":27.1},"DS18B20-7":{"Id":"01131E6FB0FF","Temperature":30.4},"ESP32":{"Temperature":53.3},"TempUnit":"C"}
          
           var keys = Object.keys(myObjText);
           
          for(let u=0;u<keys.length;u++){
              if(keys[u].includes('DS18'))
              log(myObjText[keys[u]].Id)
          }
          
          for(let u=0;u<keys.length;u++){
              if(keys[u].includes('DS18'))
              log(myObjText[keys[u]].Temperature)
          }
          
          
          

          Image 5.png

          1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @AndreasE112 last edited by liv-in-sky

            @andrease112

            jetzt muss du aber noch definieren, was du mit den einzelnen werten machen willst - in eine tabelle schreiben - in ein json-widget ausgeben (vis) oder datenpunkte erstellen für jeden einzelnen sensor, ...

            1 Reply Last reply Reply Quote 0
            • A
              AndreasE112 @mickym last edited by

              @mickym Hallo Micky... der Weg gefällt mir, leider funktioniert es noch nicht, ich hab nen compiler error.
              woher weiss denn der Compiler dass es Id gibt ?

              on({id: 'mqtt.'+instance+'.tele.tasmota_5D68E4.SENSOR', change: 'any'}, function (obj) {
              var  Tasmota_Sensor_result =  getState('mqtt.'+instance+'.tele.tasmota_5D68E4.SENSOR').val;
              console.log(Tasmota_Sensor_result);
              var test = JSON.parse(Tasmota_Sensor_result);
              var ergebnis = test.DS18B20-1.Id;
              console.log(ergebnis);
              
              });
              

              script.js.Heizung.Pufferspeicher_temperaturen compile failed: at script.js.Heizung.Pufferspeicher_temperaturen:5

              liv-in-sky OliverIO 2 Replies Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @AndreasE112 last edited by

                @andrease112 sagte in Regex Ergebnis Problem:

                ergebnis = test.DS18B20-1.Id;

                probier mal

                ergebnis = test['DS18B20-1'].Id;
                
                A 1 Reply Last reply Reply Quote 0
                • A
                  AndreasE112 @liv-in-sky last edited by

                  @liv-in-sky
                  das geht auch nicht, aber

                  var ergebnis = test.DS18B20-1.['Id']; 
                  

                  geht.

                  Das Ergebnis ist aber leider NaN.

                  liv-in-sky 1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @AndreasE112 last edited by liv-in-sky

                    @andrease112

                    das geht nicht , weil das -1 im namen als math-operation gesehen wird - das sieht man im editor - die "-1" von "DS18B20-1" ist eine berechnung. es ist immer doof, wenn object-keys einen bindestrich enthalten

                    bei mir geht es mit :

                    log( myObjText['DS18B20-1'].Id); 
                    

                    Image 6.png

                    1 Reply Last reply Reply Quote 0
                    • A
                      AndreasE112 last edited by

                      @andrease112 sagte in Regex Ergebnis Problem:

                      var ergebnis = test.DS18B20-1.['Id'];

                      Ja ich hatte einen . zu viel nach dem Variablennamen... jetzt funktionierts . Super 👍

                      1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @AndreasE112 last edited by

                        @andrease112 said in Regex Ergebnis Problem:

                        woher weiss denn der Compiler dass es Id gibt ?

                        Weiß er nicht, javascript wird teilweise kompiliert und teilweise interpretiert.
                        Er weiß es zur Laufzeit und wirft dann den Fehler aus.
                        Die Meckerlinien im javascript-adapter darf man nicht immer so vertrauen.
                        Die Meckern manchmal auch wenn es richtig ist.
                        Nur der Fehler der unten im log angezeigt wird ist dann real

                        1 Reply Last reply Reply Quote 0
                        • A
                          AndreasE112 last edited by

                          Hallo nochmal,
                          ich versuche gerade eine Website mit Regex zu parsen.
                          Ich finde auch die passenden Elemente, aber wie kann ich abfragen wieviele matches es gibt ?

                          .lenght funktioniert nicht...

                                          var reg = new RegExp('(?:[0-9].[0-9]{1,4}&nbsp;&deg;C)',"g");
                                          var ergebnis_temperaturen = body.match(reg);
                                          console.log( ergebnis_temperaturen);
                          log --> ['3.9&nbsp;&deg;C','3.4&nbsp;&deg;C','2.1&nbsp;&deg;C','3.4&nbsp;&deg;C','1.9&nbsp;&deg;C']
                                          console.log( ergebnis_temperaturen.lenght );
                          log--> undefined
                          
                          liv-in-sky 1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @AndreasE112 last edited by

                            @andrease112 sagte in Regex Ergebnis Problem:

                            lenght

                            length

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              AndreasE112 @liv-in-sky last edited by

                              @liv-in-sky Danke .... es war natütlich der Typo... besser nicht mit Erkältung programmieren....

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              479
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              4
                              16
                              450
                              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