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.
    • liv-in-sky
      liv-in-sky @AndreasE112 last edited by liv-in-sky

      @andrease112

      zum einem - code bitte in code tags einfügen https://forum.iobroker.net/post/394912

      
      
      let single_values=[' 1":{"Id":"01131B932F1C","Temperature":85.0},"']
      
      var reg = new RegExp('Id":"(............)');
      var ergebnis = reg.exec(single_values[0]);
      console.log(ergebnis);
      for(let u=0;u<ergebnis.length;u++){
      console.log(ergebnis[u]);}
      console.log(ergebnis.length);
      
      

      da fehlt doch noch die schleife (single_values[i]) - was soll ergebnis.entries sein ?

      Image 4.png

      die idee von @mickym gefällt mir auch besser

      1 Reply Last reply Reply Quote 0
      • 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

                                414
                                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