Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser Wert auslesen aber wie?

    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

    Parser Wert auslesen aber wie?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @G.Hawk last edited by

      @martin-0 sagte in Parser Wert auslesen aber wie?:

      @homoran
      Sorry aber ich verstehe leider nicht was du meinst.

      sieh dir die Antwort des Zählers in deinem anderen Thread und duesen hier an.
      die sind unterschiedlich.

      Bitte im anderen Thread weitermachen mit allen notwendigen Informationen.
      https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @G.Hawk last edited by

        @martin-0 ich mach hier mal wieder auf!
        Mal sehen, ob der Fehler vom Blockly auch im Parser Adapter kommt.

        gib mal den URL ein, dann das Regex 255":([\d\.]+) Typ Nummer und als NUM die Zahl für welches Auftreten der 255 du den Wert haben willst.
        Dann bitte Screenshot vom Parser Editor

        G 1 Reply Last reply Reply Quote 0
        • G
          G.Hawk @Homoran last edited by

          @homoran Unbenannt.JPG

          Juhu ich bekomme einen Wert, nur was genau muss bei Intervall rein und wie hängt das mit den oberen Werten der Abfrage zusammen?

          Wo kann ich denn lernen wie man den RegEX schreibt?

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @G.Hawk last edited by

            @martin-0 sagte in Parser Wert auslesen aber wie?:

            Juhu ich bekomme einen Wert,

            bitte

            @homoran sagte in Parser Wert auslesen aber wie?:

            Screenshot vom Parser Editor

            vom ganzen!

            G 1 Reply Last reply Reply Quote 0
            • G
              G.Hawk @Homoran last edited by

              @homoran Unbenannt.JPG

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @G.Hawk last edited by Homoran

                @martin-0 da steht jetzt kein Ergenis und die gewünschte Stelle ist nicht markiert!
                klick mal play

                G 1 Reply Last reply Reply Quote 0
                • G
                  G.Hawk @Homoran last edited by

                  @homoran
                  Das ändert nichts, aber in dem Datenpunkt unter Objekte steht der aktuelle Verbrauchswert

                  1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @G.Hawk last edited by mickym

                    @martin-0 sagte in Parser Wert auslesen aber wie?:

                    {"meterId":"1KFM00000754396","deviceId":"EBSD14250567526","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2022-12-03T13:25:53Z","values":{"1-0:96.90.21":"7E2005D2","1-0:0.2.00":"312E3033","1-0:14.7.0255":50,"1-0:81.7.26255":359,"1-0:81.7.15255":330,"1-0:81.7.4255":337,"1-0:81.7.2255":238,"1-0:81.7.1255":118,"1-0:71.7.0255":10.119999885559082,"1-0:51.7.0255":1.7100000381469727,"1-0:31.7.0255":0.89999997615814209,"1-0:72.7.0255":235.89999389648438,"1-0:52.7.0255":234.69999694824219,"1-0:32.7.0255":237,"1-0:16.7.0255":2818,"1-0:2.8.0255":0,"1-0:1.8.0255":9071.03125,"1-0:96.1.0255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}

                    Also - eine JSON parsed man nicht - das wertet man direkt in Blockly oder Node-Red aus.

                    Wenn Du das mal richtig formatierst, dann kommt folgendes raus:

                    {
                      "meterId": "1KFM00000754396",
                      "deviceId": "EBSD14250567526",
                      "msgType": "EMETER_OBIS_V2",
                      "measurements": [
                        {
                          "timestamp": "2022-12-03T13:25:53Z",
                          "values": {
                            "1-0:96.90.21": "7E2005D2",
                            "1-0:0.2.00": "312E3033",
                            "1-0:14.7.0255": 50,
                            "1-0:81.7.26255": 359,
                            "1-0:81.7.15255": 330,
                            "1-0:81.7.4255": 337,
                            "1-0:81.7.2255": 238,
                            "1-0:81.7.1255": 118,
                            "1-0:71.7.0255": 10.119999885559082,
                            "1-0:51.7.0255": 1.7100000381469727,
                            "1-0:31.7.0255": 0.8999999761581421,
                            "1-0:72.7.0255": 235.89999389648438,
                            "1-0:52.7.0255": 234.6999969482422,
                            "1-0:32.7.0255": 237,
                            "1-0:16.7.0255": 2818,
                            "1-0:2.8.0255": 0,
                            "1-0:1.8.0255": 9071.03125,
                            "1-0:96.1.0255": "0A014B464D0000006E24",
                            "1-0:96.50.1*1": "4B464D"
                          }
                        }
                      ]
                    }
                    

                    Diesen Wert: 1-0:16.7.0*255" gibt es somit gar nicht. Wenn ich mal als Beispiel 1-0:96.50.1*1 nehme, dann ist der Pfad:

                    8af7c2e7-5414-451f-8636-244752af4c61-image.png

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @mickym last edited by

                      @mickym sagte in Parser Wert auslesen aber wie?:

                      • das wertet man direkt in Blockly oder Node-Red aus.

                      geht nicht!
                      such mal nach HPE_INVALID_HEADER_TOKEN
                      Den Fehler soll es auch bei node-red werfen, wenn ich google trauen darf

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Homoran last edited by

                        @homoran Nun aber wenn der JSON im Browser rauskommt? Das Problem scheint aber dann zu sein, dass die request Bibliothek egal welche URL ich eingebe, den Fehler schmeisst - egal ob es Blockly, der Parser Adapter oder NodeRed ist.

                        Hier scheint es eine Lösung zu geben: https://stackoverflow.com/questions/36628420/nodejs-request-hpe-invalid-header-token

                        Dann sollte man mit dem Code ja und mit node-libcurl Bibliothek vielleicht Glück haben. Aber da sollen sich die JS-Profis hier an Board melden.

                        Das Problem ist ja - dass ich keine URL habe, um diesen Fehler nachstellen zu können.

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @mickym last edited by Homoran

                          @mickym sagte in Parser Wert auslesen aber wie?:

                          Hier scheint es eine Lösung zu geben: https://stackoverflow.

                          das meinte ich!

                          der HTTP-Parser in js und node-red ist seit node 12 betroffen. Im Parser Adapter kann man das oer Checkbox erledigen (unsicheren http-Parser verwenden)

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Homoran last edited by

                            @homoran Ok - dann sollte es ja mit dem RegEx und dem Parser Adapter gehen und ich nehme alles zurück. Den Fehler wusste ich nicht.

                            In NodeRed geht es vielleicht doch

                            bd8fe297-ee04-46af-a1c6-ad9f3baa5377-image.png

                            mit der Option - aber keine Ahnung - müsste man ausprobieren.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @mickym last edited by

                              @mickym sagte in Parser Wert auslesen aber wie?:

                              mit der Option -

                              sieht aus als wäre es das

                              1 Reply Last reply Reply Quote 0
                              • G
                                G.Hawk last edited by G.Hawk

                                Hallo
                                Ich habe noch ein kleines Problem mit dem Parser.
                                Es hat alles super funktioniert, bis ich eine Solaranlage angeschlossen habe. Wenn ich einspeise und die Werte des aktuellen Verbrauches in den Minus Bereich gehen, dann funktioniert der RegEx Befehl nicht mehr, da alles um eine Stelle verschoben ist.

                                Das ist der URL Aufruf:

                                {"meterId":"1KFM0000055657656","deviceId":"EBSD142505775756","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-04-02T08:40:28Z","values":{"1-0:96.90.2*1":"7E2005D2","1-0:0.2.0*0":"312E3033","1-0:14.7.0*255":49.900001525878906,"1-0:81.7.26*255":335,"1-0:81.7.15*255":299,"1-0:81.7.4*255":188,"1-0:81.7.2*255":238,"1-0:81.7.1*255":118,"1-0:71.7.0*255":0.43000000715255737,"1-0:51.7.0*255":0.37999999523162842,"1-0:31.7.0*255":1.9700000286102295,"1-0:72.7.0*255":235,"1-0:52.7.0*255":232.69999694824219,"1-0:32.7.0*255":234.19999694824219,"1-0:16.7.0*255":-333,"1-0:2.8.0*255":0.30339998006820679,"1-0:1.8.0*255":10473.0244140625,"1-0:96.1.0*255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
                                

                                Der RegEx lautet: 255":([\d.]+)
                                Der funktioniert aber nur, wenn der Aktuelle Verbrauch im positiven Bereich ist.

                                Meine Frage:

                                Kann ich mit einem RegEx Befehl folgendes finden und den Wert dahinter auslesen:

                                "1-0:16.7.0*255":

                                in diesem Fall wäre mein Ergebnis:

                                -333

                                Wäre super wenn mir jemand helfen könnte, meine ganzen Berechnungen basieren auf diesen Werten die der Parser Adapter mir zur Verfügung stellt.

                                Vielleicht gibt es ja eine Internetseite, der mir den korrekten RegEx Befehl anzeigen kann oder ähnliches.

                                Gruß

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @G.Hawk last edited by mickym

                                  @g-hawk So was liest man nicht mit einem Parser - das ist ein JSON und Du kannst Du ganz bequem direkt auf die Eigenschaften dieses Objektes zugreifen. Ich dachte ich hätte es unten beschrieben.

                                  Was nutzt Du für eine Logikmaschine oder einen Alias?

                                  Wenn Du Node-Red benutzt einfach den Pfad rauskopieren und die payload setzen:
                                  d35ccdcd-a214-480f-8e6f-d295a97f1b98-image.png

                                  9a920318-ce97-4805-a4f1-1517a0ee9a5a-image.png

                                  Du greifst also auf diesen Wert einfach über den Pfad:

                                  obj.measurements[0].values["1-0:16.7.0*255"]
                                  

                                  zu. Im Blockly heisst es dann halt Attribut:

                                  G 1 Reply Last reply Reply Quote 0
                                  • G
                                    G.Hawk @mickym last edited by

                                    @mickym
                                    Sorry aber ich verstehe das einfach nicht, ich habe mir eben nochmal alles durchgelesen.
                                    Wie soll ich das anstellen?
                                    Ich muss irgendwie den Inhalt dieses Aufrufes analysieren können:

                                    http://192.168.10.212/data

                                    da kommt dann das raus:

                                    {"meterId":"1KFM0000028196","deviceId":"EBSD1425009486","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-04-02T08:40:28Z","values":{"1-0:96.90.2*1":"7E2005D2","1-0:0.2.0*0":"312E3033","1-0:14.7.0*255":49.900001525878906,"1-0:81.7.26*255":335,"1-0:81.7.15*255":299,"1-0:81.7.4*255":188,"1-0:81.7.2*255":238,"1-0:81.7.1*255":118,"1-0:71.7.0*255":0.43000000715255737,"1-0:51.7.0*255":0.37999999523162842,"1-0:31.7.0*255":1.9700000286102295,"1-0:72.7.0*255":235,"1-0:52.7.0*255":232.69999694824219,"1-0:32.7.0*255":234.19999694824219,"1-0:16.7.0*255":-333,"1-0:2.8.0*255":0.30339998006820679,"1-0:1.8.0*255":10473.0244140625,"1-0:96.1.0*255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}
                                    

                                    mit was schreibe ich jetzt die benötigten Daten aus?

                                    mickym 1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @G.Hawk last edited by

                                      @g-hawk Nochmal was nutzt Du für eine Logikmaschine? Blockly, Javascript, NodeRed. Ansonsten schreib dieses Objekt einfach in einen Datenpunkt - dann kannst auch einen Alias verwenden.

                                      G 1 Reply Last reply Reply Quote 0
                                      • G
                                        G.Hawk @mickym last edited by

                                        @mickym
                                        Ich benutze Blockly.

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @G.Hawk last edited by mickym

                                          @g-hawk sagte in Parser Wert auslesen aber wie?:

                                          @mickym
                                          Ich benutze Blockly.

                                          So - leider bekomme ich in diesen doofen Blockly das mit dem Attribut einfach nicht hin.

                                          11927e56-635c-4f98-955a-efa2a807afb1-image.png

                                          Normalerweise sollte es mit dem Attribut funktionieren - aber das klappt mit den Gänsefüsschen nicht - deshalb hab ich mal JSONATA genommen.

                                          Hier mal zum Import:

                                          <block xmlns="https://developers.google.com/blockly/xml" type="debug" id="5RqboYErNpX2M/+Um[~`" x="-1637" y="502.5">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="BdK6u#;JbsFC6V4erN~l">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="convert_jsonata" id="j5M?LCAgxA+O~5k+)HOO">
                                               <value name="EXPRESSION">
                                                 <shadow type="text" id="wboF;k75@]pGS_)|7Sxk">
                                                   <field name="TEXT">$.measurements[0].values."1-0:16.7.0*255"</field>
                                                 </shadow>
                                               </value>
                                               <value name="TARGET">
                                                 <block type="convert_json2object" id="01!btLaE]5}hv[X?m9UK">
                                                   <value name="VALUE">
                                                     <block type="text" id=";McV=Rwd_9=/%LTH6Cp4">
                                                       <field name="TEXT">{"meterId":"1KFM0000055657656","deviceId":"EBSD142505775756","msgType":"EMETER_OBIS_V2","measurements":[{"timestamp":"2023-04-02T08:40:28Z","values":{"1-0:96.90.2*1":"7E2005D2","1-0:0.2.0*0":"312E3033","1-0:14.7.0*255":49.900001525878906,"1-0:81.7.26*255":335,"1-0:81.7.15*255":299,"1-0:81.7.4*255":188,"1-0:81.7.2*255":238,"1-0:81.7.1*255":118,"1-0:71.7.0*255":0.43000000715255737,"1-0:51.7.0*255":0.37999999523162842,"1-0:31.7.0*255":1.9700000286102295,"1-0:72.7.0*255":235,"1-0:52.7.0*255":232.69999694824219,"1-0:32.7.0*255":234.19999694824219,"1-0:16.7.0*255":-333,"1-0:2.8.0*255":0.30339998006820679,"1-0:1.8.0*255":10473.0244140625,"1-0:96.1.0*255":"0A014B464D0000006E24","1-0:96.50.1*1":"4B464D"}}]}</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                          </block>
                                          

                                          Ich hasse dieses Tool - vielleicht kann Dir ja einer von den Blockly Fans helfen - wie man die Anführungszeichen mit dem Attribut setzt.

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            G.Hawk last edited by G.Hawk

                                            @mickym
                                            Ok wenn ich die JSON habe dann werde ich das so probieren, aber mein Problem ist, dass ich die JSON ja erstmal in einen Datenpunkt schreiben muss und da weiß ich nicht wie ich das anstellen soll.
                                            Ich schreibe mal ein Blockly mir dem Request Block

                                            Unbenannt.PNG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            919
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            147
                                            8892
                                            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