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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Parser Wert auslesen aber wie?

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                    • mickym
                      mickym Most Active @G.Hawk last edited by

                      @g-hawk Nein musst Du nicht erst in Datenpunkt schreiben - du kannst wenn Du willst das result direkt in meine Konvertierung JSON nach Objekt schreiben.

                      Ansonsten müsste doch wie du es machst - der gesamte JSON String in den Datenpunkt geschrieben werden.

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

                        @mickym
                        Das funktioniert leider schon nicht. Der Datenpunkt bleibt leer.
                        Ich brauche aus dieser JSON insgesamt 3 Werte.

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

                          @g-hawk Wie bekommt man denn dieses blöde result Wert da rein. Ich bin wie gesagt kein Blockly user.

                          d62a4f70-6aca-435b-bcfe-28faca195e1d-image.png

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

                            @mickym
                            Das ist eine Variable.
                            So geht es aber nicht, dann bekomme ich wieder diesen Fehler:

                            javascript.0 (1183) script.js.Gerätesteuerung.Strom.Gesamtstrom.Daten_auslesen: {'bytesParsed':46,'code':'HPE_INVALID_HEADER_TOKEN','reason':'Invalid header value char','rawPacket':{'type':'Buffer','data':[72,84,84,80,47,49,46,49,32,50,48,48,32,79,75,10,67,111,110,116,101,110,116,45,116,121,112,101,58,32,97,112,112,108,105,99,97,116,105,111,110,47,106,115,111,110,10,67,97,99,104,101,45,67,111,110,116,114,111,108,58,32,110,111,45,115,116,111,114,101,44,32,110,111,45,99,97,99,104,101,44,32,109,117,115,116,45,114,101,118,97,108,105,100,97,116,101,44,32,109,97,120,45,97,103,101,61,48,10,80,114,97,103,109,97,58,32,110,111,45,99,97,99,104,101,10,10]}}
                            
                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @G.Hawk last edited by

                              @g-hawk Mach halt mal das Blockly so, dass in der Variable der JSON steht und das ausgegeben wird.

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

                                @mickym
                                Er ruft das ganze ja nicht mal ab, also kann ich es auch nicht weiterverarbeiten.

                                Wenn ich nicht Blockly verwenden würde welche Möglichkeiten würden denn bestehen die Daten der URL in eine Datenpunkt zu schreiben?

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

                                  @g-hawk Na mit NodeRed ist es am einfachsten bei Javascript musst halt programmieren. Wenn Du NodeRed nutzen willst - dann helfe ich Dir gerne.

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

                                    @mickym
                                    OK am Besten wäre es wenn jemand einen Adapter für den EWE Elmo schreiben könnte.

                                    Aber leider gibt es den nicht.

                                    Ich installiere mal Node Red.

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

                                      So ist installiert was soll ich tun?

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

                                        @g-hawk Nun schau mal in die Adaptereinstellungen - dass keine Konvertierung angehakt ist und Fremdobjekte erstellen aktiv ist:

                                        252c2a99-16be-4a1a-a8bd-fbe9971f0b00-image.png

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

                                          @mickym
                                          ok

                                          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
                                            ok

                                            @g-hawk Nun schau mal in die Adaptereinstellungen - dass keine Konvertierung angehakt ist und Fremdobjekte erstellen aktiv ist:

                                            Dann nimmst Du eine Inject Node und ziehst den in den Arbeitsbereich in der Mitte, ein HttpRequest Node und ein Debug Node

                                            726df4a2-7ca9-45e1-be6d-448b66537232-image.png

                                            In die http Request Node gibst Du die URL ein, die Du abfragen möchtest.

                                            Der Übersicht halber - lässt Du den JSON gleich interpretieren:

                                            b34e7d4f-b52c-451b-a0bf-7ce4cec2a262-image.png

                                            Triggern tust Du erst mal, indem Du das ganze über die Schaltfläche auf der Inject Node drückst:

                                            b1959bb4-5090-4122-a63b-6280bb15d5d4-image.png

                                            G 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

                                            467
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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