Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Json mit Punkt im Namen parsen

    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

    Json mit Punkt im Namen parsen

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

      Hallo,

      ich bekomme folgendes Json:

      {"0-0:96.1.1":{"value":"54978381"},"0-0:1.0.0":{"value":0,"time":1696963760},"1-0:1.8.0":{"value":743,"time":1696963760},"1-0:2.8.0":{"value":0,"time":1696963760},"1-0:3.8.0":{"value":0,"time":1696963760},"1-0:4.8.0":{"value":203,"time":1696963760},"1-0:1.7.0":{"value":303443.1,"time":1696963760},"1-0:2.7.0":{"value":612.3,"time":1696963760},"1-0:3.7.0":{"value":541.3,"time":1696963760},"1-0:4.7.0":{"value":140247.8,"time":1696963760},"0-0:2.0.0":{"value":1653,"time":0},"api_version":"v1","name":"54978381","sma_time":8291.3}
      

      Ich würde gerne die einzelnen Werte in Datenpunkte schreiben. Leider scheitere ich daran die Objektnamen mit Punkte zu parsen.

      value von "1-0:1.8.0" in einen Datenpunkt
      value von "1-0:2.8.0" in einen Datenpunkt
      usw....

      Json Strings mit Objektnamen ohne Punkte funktionieren einwandfrei mit den Baustein " Attribut vom Objekt ". Wäre über jede Hilfe sehr dankbar.

      lg
      Max

      DJMarc75 OliverIO bahnuhr 4 Replies Last reply Reply Quote 0
      • DJMarc75
        DJMarc75 @maxthebr4in last edited by

        @maxthebr4in
        Na dann zeig doch mal Dein Blockly bitte !

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

          @maxthebr4in sagte in Json mit Punkt im Namen parsen:

          es ist zwar keine endgültige lösung, aber wenn du dich damit auskennst ist es etwas einfach.
          ich würde das in javascript relativ schnell hinbekommen, aber mit blockly kenn ich mich nicht so gut aus.

          um aus dem gegebenen json-text mittels regex alle key/value pärchen rauszubekommen, kann dir das folgende regex helfen

          /"([\d\-\:\.]+)":{"value":"?([\d]+)"?/gm
          

          um das in action anzusehen, kannst du den folgenden link aufrufen
          https://regex101.com/r/gGBGLb/1

          auf der rechten seite siehst du die einzelnen matches und deren ergebnisse
          je match hast du eine group1 und group2
          darin sind dann jeweils der datenpunkt und die value enthalten

          in blockly müsste man dann die ergebnisliste abklappern und auf basis dieser ergebnisse dann die datenpunkte beschreiben können.

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

            Diese Blockly Teile mit dem Attribut funktionieren nicht aber JSONATA funktioniert:

            5f823c53-894a-4adc-9bd4-9119a11460dd-image.png

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @maxthebr4in last edited by

              @maxthebr4in

              oder per kleinem Script:

              var js = '{"0-0:96.1.1":{"value":"54978381"},"0-0:1.0.0":{"value":0,"time":1696963760},"1-0:1.8.0":{"value":743,"time":1696963760},"1-0:2.8.0":{"value":0,"time":1696963760},"1-0:3.8.0":{"value":0,"time":1696963760},"1-0:4.8.0":{"value":203,"time":1696963760},"1-0:1.7.0":{"value":303443.1,"time":1696963760},"1-0:2.7.0":{"value":612.3,"time":1696963760},"1-0:3.7.0":{"value":541.3,"time":1696963760},"1-0:4.7.0":{"value":140247.8,"time":1696963760},"0-0:2.0.0":{"value":1653,"time":0},"api_version":"v1","name":"54978381","sma_time":8291.3}'
              var wert = JSON.parse(js);
              log (wert["1-0:1.8.0"].value);
              
              
              OliverIO 1 Reply Last reply Reply Quote 1
              • OliverIO
                OliverIO @bahnuhr last edited by

                @bahnuhr

                das funktioniert nur dann, wenn er die den namen vorher schon kennt.
                das wäre dann das einfachste

                1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @maxthebr4in last edited by

                  @maxthebr4in sagte in Json mit Punkt im Namen parsen:

                  value von "1-0:1.8.0" in einen Datenpunkt
                  value von "1-0:2.8.0" in einen Datenpunkt

                  @OliverIO
                  Die scheint er doch zu kennen.
                  Sind doch Stromzähler (wahrscheinlich bezogen und eingespeist)

                  1 Reply Last reply Reply Quote 1
                  • M
                    maxthebr4in last edited by

                    Danke für eure schnelle Hilfe!

                    @OliverIO
                    danke für dein Beispiel! Ich werde mich mit dem Thema regex genauer beschäftigen.

                    @mickym
                    genau diesen Ansatz hatte ich auch. Nur hatte ich den Baustein JSON nach Objekt nicht verwendet.

                    Ich hatte nur den Baustein JSON Ausdruck "1-0:1.7.0".value" anwenden auf "WERT" verwendet.Mit deinen Beispiel funktioniert es perfekt! Dankeschön.

                    @bahnuhr
                    Kleiner Skripts bekomme ich hin. JSON.parse hatte ich noch nie verwendet. Wenn man aber einen Beispielcode vor den Augen hat, sieht es dann auch einfach aus 🙂

                    Nochmals Danke für eure Hilfe!
                    lg
                    Max

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

                      @maxthebr4in

                      wenn du nur sehr einfache logiken umsetzen willst, dann bleib bei blockly.
                      allerdings wirst du immer im rahmen der vorhandenen bausteine gefangen bleiben.

                      wenn es etwas mehr werden will, dann lerne javascript.
                      eigentlich ist blockly vom logikablauf nix anderes wie javascript, aber halt grafisch dargestellt. blockly läuft im hintergrund mit javascript
                      nachteil ist, zu blockly gibt es im internet nicht soviel support wie zu javascript.
                      beispiele muss man immer grafisch darstellen. da wird es mit copy/paste schwierig, ausser jemand teils den cryptischen export eines blocklys.
                      für javascript gibt es unendlich (ok es sind nur 2.5 mio packete) erweiterungen, falls man mal was komplexes haben will https://www.npmjs.com/ welche sehr einfach im javascript adapter verfügbar gemacht werden können.

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

                        Na wenn das ein Plädoyer für JavaScript ist, dann empfehle ich Dir NodeRed - damit kannst Du auch mit grafischen Objekten arbeiten hast aber wesentlich mehr Möglichkeiten als mit den Puzzleteilchen. 😉 und kannst auch reines Javascript verwenden.

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

                          @mickym
                          Ja,
                          als zwischenschritt zwischen blockly und javascript

                          auf jeden fall gibt es hier mehr Erweiterungsmöglichkeiten wie bei blockly.
                          vergibst dir dann die chance aber eine programmiersprache zu lernen.
                          aber wie gesagt, wer gern modelliert/malt.

                          ich selbst bin gespannt was die ganzen low/no code-Möglichkeiten, die nun in der Welt überall hervorspießen bringt.

                          Mit PowerAutomate bekommt man schon eine ganz ordentliche intelligente Automatisierungsmaschine für den Windows Desktop im Microsoft Umfeld. (Offtopic->Nicht für iobroker gedacht)

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          892
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          5
                          11
                          438
                          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