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 Parser - Aus Blockly JSON in Datenpunkte schreiben

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JSON Parser - Aus Blockly JSON in Datenpunkte schreiben

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

      Hallo zusammen,
      ich weiß nicht ob es sinnvoll ist - oder ob es sogar nicht schon irgendwie integriert ist, aber mir ging es mächtig auf den Zeiger JSON Strukturen zu zerlegen und auszulesen und in Datenpunkte zu schreiben.

      Deswegen hab ich ein Java-Script entwickelt die die Arbeit uns abnimmt und in Blockly entsprechend verwendet werden kann ... ihr gebt in Blockly nur als Variable den JSON String mit und sagt wie der Ordner der daraus generierten Datenpunkte heißen soll.

      Baut euch folgende Funktion zusammen - Zu übergebende Variablen:

      DPName -> wird in Userdata -> JSONPArser.DPName dann geschrieben
      JSONTXT -> Der JSON als String der zerlegt werden soll in Datenpunkte

      So sollte das Ganze aussehen :
      Json_Parser1.PNG

      Den Code weiter unten tragt ihr dann in die Javascript-Funktion bei den "drei Punkten" Rechts per Copy & Paste ein.

      In den Trigger in Blockly hab ich in dem Fall mal den Shelly TRV Datenpunkt abgefragt der aber nur ein JSON liefert - immer wenn sich dort der Datenpunkt mit dem JSON nun ändert wird das nun in Datenpunkte bei 0_userdata.0.JSONParser geschrieben (Der Pfad lässt und Bezeichnung lässt sich unter id aber auch noch im JavaScript ändern).

      Aktuell ist debugging noch an - falls nicht erwünscht das so viel protokolliert wird einfach "//" vor -> "console.log('inserting: ' +id + parent + '=' + element)" (in Zeile 27)

      Vielen Dank an meinen guten Freund David Marenke der mich hier tatkräftig unterstützt hat.

      Seid bitte gnädig - ist mein erstes JavaScript und es geht bestimmt viel besser ... 😎

      //Verschachteltes JSON Object in Datenpunkte schreiben - dynamisch
      
      let data = JSONTXT;
      let vardpname =DPName;
      
      console.log('Starting Parsing: ' + vardpname)
      
      var obj2 = JSON.parse(data);
      
      id=("0_userdata.0.JSONParser." + vardpname+".")
      
      insertElements(obj2)
      
      
      function insertElements(elems, parent="")
      {
        if(typeof(elems) === 'object') {
          for (const key in elems) {
            insertElements(elems[key], parent !== "" ? parent + '.' + key : key)
          }
        } else {
          insertelement(elems, parent)
        }
      }
      
      function insertelement(element, parent="") {
        console.log('inserting: ' +id + parent + '=' + element)
        
        if(!existsState(id + parent + "." + element)) {
                  createState(id + parent , "", {name: parent})  
                  setState(id+ parent  , element, true);
              } 
                  else {
                  setState(id + parent, element, true);
                  }
      
      }
      

      Vorher :
      Before.PNG

      Nach Parsen :

      Nachher.PNG

      D 1 Reply Last reply Reply Quote 3
      • D
        Dark82Core @FoG last edited by

        Hallo @fog,

        versuche gerade den Code im Funktionseditor zu speichern. Leider funktioniert das speichern nicht. Hast du eine Idee?

        Codierknecht 1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @Dark82Core last edited by

          @dark82core
          Du reagierst hier auf einen mehr als zwei Jahre alten Thread.

          Inzwischen hat sich die Welt aber bereit mehrmals weitergedreht.
          Um per Blockly JSON zu schreiben braucht es kein JS mehr. dazu gibt es mittlerweile passende Blöcke.

          Beispiel:
          86d71fd5-00e7-4a95-8a52-69f18ddd3afa-image.png

          D 1 Reply Last reply Reply Quote 1
          • D
            Dark82Core @Codierknecht last edited by

            @codierknecht

            Das ist mir bewusst. Irgendwo muss ich halt mal anfangen.

            Mir geht es nicht um JSON "schreiben", sondern JSON "parsen". Ich möchte eine lokale JSON-Quelle zerlegen.

            Hättest du hierfür ein Beispiel, wäre ich dir sehr dankbar.

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @Dark82Core last edited by

              @dark82core sagte in JSON Parser - Aus Blockly JSON in Datenpunkte schreiben:

              Hättest du hierfür ein Beispiel, wäre ich dir sehr dankbar.

              Konvertierung -> JSON zu Objekt. Oder direkt mit "Attribut von Objekt" arbeiten.
              Habe ich rauf und runter erklärt an zig Beispielen. Gern mal reinschauen.

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

                @dark82core
                Wenn Du daraus nur die einzelnen Werte sauber in Datenpunkte packen willst, braucht's dafür kein Script. Das kann man auch per Alias erledigen:
                https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/12

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

                Support us

                ioBroker
                Community Adapters
                Donate

                909
                Online

                31.7k
                Users

                79.7k
                Topics

                1.3m
                Posts

                4
                6
                1136
                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