Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. JSON Parser - Aus Blockly JSON in Datenpunkte schreiben

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

JSON Parser - Aus Blockly JSON in Datenpunkte schreiben

Geplant Angeheftet Gesperrt Verschoben Blockly
6 Beiträge 4 Kommentatoren 1.8k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • FoGF Offline
    FoGF Offline
    FoG
    schrieb am zuletzt editiert von FoG
    #1

    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 ... 8)

    //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 Antwort Letzte Antwort
    2
    • FoGF 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 ... 8)

      //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 Offline
      D Offline
      Dark82Core
      schrieb am zuletzt editiert von
      #2

      Hallo @fog,

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

      CodierknechtC 1 Antwort Letzte Antwort
      0
      • D Dark82Core

        Hallo @fog,

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

        CodierknechtC Offline
        CodierknechtC Offline
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @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

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        D 1 Antwort Letzte Antwort
        1
        • CodierknechtC Codierknecht

          @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 Offline
          D Offline
          Dark82Core
          schrieb am zuletzt editiert von
          #4

          @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-automatisierungH 1 Antwort Letzte Antwort
          0
          • D Dark82Core

            @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-automatisierungH Online
            haus-automatisierungH Online
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @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.

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            1 Antwort Letzte Antwort
            0
            • CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von Codierknecht
              #6

              @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

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              918

              Online

              32.5k

              Benutzer

              81.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe