Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Aus JSON 136 Datenpunkte erzeugen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    298

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Aus JSON 136 Datenpunkte erzeugen

Scheduled Pinned Locked Moved Blockly
15 Posts 4 Posters 1.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @videonisse sagte: mit eine Schleife neue Datenpunkte erzeugen und updaten... Hat jemand ein beispiel wie man so was macht?

    Hier wird so etwas ähnliches gemacht.

    const idJSON = 'mqtt.1.ThermIQ.ThermIQ-room.data';
    const path = '0_userdata.0.ThermIQ.'; // Pfad anpassen
     
    on(idJSON, function (dp) {
        let obj = JSON.parse(dp.state.val);
        Object.keys(obj).forEach(function(key) {
            if(existsState(path + key)) setState(path + key, obj[key], true);
            else createState(path + key, obj[key], {read: true, write: false, type: typeof obj[key], name: key});
        });
    });
    
    V Offline
    V Offline
    Videonisse
    wrote on last edited by Videonisse
    #5

    @paul53 Danke! Ist fuer mich so einfach, kann ich dein skript benutzen wie es ist und nur the "const" ändern?

    Soll idJSON = mein DP mit JSON sein? (es ist mqtt.1.ThermIQ.ThermIQ-room.data)

    const JSPath = '0_userdata.0'; // JS- Pfad
    const parsedStatesPath = JSPath + ".ThermIQ."; // Pfad fuer geparste States
    const idJSON = 'mqtt.1.ThermIQ.ThermIQ-room.data';   // Full path to the DP with the JSON?
     
    on(idJSON, function (dp) {
        let JsonObj = JSON.parse(dp.state.val);
        Object.keys(JsonObj).forEach(function(key) {
            if(existsState(parsedStatesPath + key)) setState(parsedStatesPath + key, JsonObj[key], true);
            else createState(parsedStatesPath + key, JsonObj[key], {read: true, write: false, type: typeof JsonObj[key], name: key});
        });
    });
    
    

    ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM), Node.js: v12.22.6, NPM: 6.14.15
    Most important Device Adapters: KNX, Trådfri, Homekit/Yahka

    paul53P 1 Reply Last reply
    0
    • V Videonisse

      @paul53 Danke! Ist fuer mich so einfach, kann ich dein skript benutzen wie es ist und nur the "const" ändern?

      Soll idJSON = mein DP mit JSON sein? (es ist mqtt.1.ThermIQ.ThermIQ-room.data)

      const JSPath = '0_userdata.0'; // JS- Pfad
      const parsedStatesPath = JSPath + ".ThermIQ."; // Pfad fuer geparste States
      const idJSON = 'mqtt.1.ThermIQ.ThermIQ-room.data';   // Full path to the DP with the JSON?
       
      on(idJSON, function (dp) {
          let JsonObj = JSON.parse(dp.state.val);
          Object.keys(JsonObj).forEach(function(key) {
              if(existsState(parsedStatesPath + key)) setState(parsedStatesPath + key, JsonObj[key], true);
              else createState(parsedStatesPath + key, JsonObj[key], {read: true, write: false, type: typeof JsonObj[key], name: key});
          });
      });
      
      
      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #6

      @videonisse
      Habe gerade meinen Beitrag oben um ein Skript ergänzt.
      Deine Anpassungen sollten ebenso funktionieren.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      V 1 Reply Last reply
      0
      • paul53P paul53

        @videonisse
        Habe gerade meinen Beitrag oben um ein Skript ergänzt.
        Deine Anpassungen sollten ebenso funktionieren.

        V Offline
        V Offline
        Videonisse
        wrote on last edited by
        #7

        @paul53 Funktioniert einwandfrei und sogar erzeugst die Objekte mit richtigen Type! Vielen Dank für ein sehr elegant geschriebenes Skript! :-)

        Kleine Frage; Der Wert "timestamp" ist ein Linux-Datum, aber es fehlen die Millisekunden. Ist es möglich, dies anzupassen und DP mit einem neuen Wert zu überschreiben, der am Ende "000" hinzufügt? Oder muss ich das separat machen?

        ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM), Node.js: v12.22.6, NPM: 6.14.15
        Most important Device Adapters: KNX, Trådfri, Homekit/Yahka

        paul53P 1 Reply Last reply
        0
        • V Videonisse

          @paul53 Funktioniert einwandfrei und sogar erzeugst die Objekte mit richtigen Type! Vielen Dank für ein sehr elegant geschriebenes Skript! :-)

          Kleine Frage; Der Wert "timestamp" ist ein Linux-Datum, aber es fehlen die Millisekunden. Ist es möglich, dies anzupassen und DP mit einem neuen Wert zu überschreiben, der am Ende "000" hinzufügt? Oder muss ich das separat machen?

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #8

          @videonisse sagte: Linux-Datum, aber es fehlen die Millisekunden.

          Linux (Unix) verwendet Sekunden. Wozu benötigst Du Millisekunden?

          @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

          Oder muss ich das separat machen?

          Ja, als erstes in der Schleife:

                  if(key == 'timestamp') obj[key] = 1000 * obj[key];
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          V 1 Reply Last reply
          0
          • paul53P paul53

            @videonisse sagte: Linux-Datum, aber es fehlen die Millisekunden.

            Linux (Unix) verwendet Sekunden. Wozu benötigst Du Millisekunden?

            @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

            Oder muss ich das separat machen?

            Ja, als erstes in der Schleife:

                    if(key == 'timestamp') obj[key] = 1000 * obj[key];
            
            V Offline
            V Offline
            Videonisse
            wrote on last edited by
            #9

            @paul53 Danke, funktioniert natürlich gut!

            Du hast recht, es ist schon in Linux Format (seconds), aber ich brauche es in Javascript Format (milliseconds). Ich weiß aber nicht, ob das noch richtigist, wollte Object/State Role = Datum haben. Dann muss es angeblich in milliseconds sein.

            "date (common.type = number - epoch seconds * 1000" Source

            Ich möchte auch gern die Variable "idJSON" in Blockly setzen aber verstehe nicht wie ich dass richtig mache.

            Kann ich irgenwie die Variabel "object ID" von den Trigger benutzen? Ich habe mit unten probiert aber geht nicht.

            0c407deb-e349-4b06-9bdd-279f40ffd1ef-image.png

            56a239e8-dd24-4c42-a8f7-be354bfc465c-image.png

            ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM), Node.js: v12.22.6, NPM: 6.14.15
            Most important Device Adapters: KNX, Trådfri, Homekit/Yahka

            paul53P 1 Reply Last reply
            0
            • V Videonisse

              @paul53 Danke, funktioniert natürlich gut!

              Du hast recht, es ist schon in Linux Format (seconds), aber ich brauche es in Javascript Format (milliseconds). Ich weiß aber nicht, ob das noch richtigist, wollte Object/State Role = Datum haben. Dann muss es angeblich in milliseconds sein.

              "date (common.type = number - epoch seconds * 1000" Source

              Ich möchte auch gern die Variable "idJSON" in Blockly setzen aber verstehe nicht wie ich dass richtig mache.

              Kann ich irgenwie die Variabel "object ID" von den Trigger benutzen? Ich habe mit unten probiert aber geht nicht.

              0c407deb-e349-4b06-9bdd-279f40ffd1ef-image.png

              56a239e8-dd24-4c42-a8f7-be354bfc465c-image.png

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by paul53
              #10

              @videonisse sagte: Kann ich irgenwie die Variabel "object ID" von den Trigger benutzen?

              Der Block ist schon richtig, aber "value" (oder so ähnlich) selektieren.
              Wenn schon mit Blockly, dann

              Bild_2021-11-13_222902.png

              Inhalt der Funktion ThermiqUpdate(source):

              let obj = JSON.parse(source);
              Object.keys(obj).forEach(function(key) {
                  if(key == 'timestamp') obj[key] = 1000 * obj[key];
                  if(existsState(path + key)) setState(path + key, obj[key], true);
                  else createState(path + key, obj[key], {read: true, write: false, type: typeof obj[key], name: key});
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              V 1 Reply Last reply
              0
              • paul53P paul53

                @videonisse sagte: Kann ich irgenwie die Variabel "object ID" von den Trigger benutzen?

                Der Block ist schon richtig, aber "value" (oder so ähnlich) selektieren.
                Wenn schon mit Blockly, dann

                Bild_2021-11-13_222902.png

                Inhalt der Funktion ThermiqUpdate(source):

                let obj = JSON.parse(source);
                Object.keys(obj).forEach(function(key) {
                    if(key == 'timestamp') obj[key] = 1000 * obj[key];
                    if(existsState(path + key)) setState(path + key, obj[key], true);
                    else createState(path + key, obj[key], {read: true, write: false, type: typeof obj[key], name: key});
                });
                
                V Offline
                V Offline
                Videonisse
                wrote on last edited by Videonisse
                #11

                @paul53 Works like a charm! Nochmals, viele viele Danke! :-)

                Ich habe letzen Tage Probleme javascript.js und hatte zb error: "JavaScript heap out of memory"

                Kann die Ursache den Code "on(idJSON, function (dp) {" zusammen mit Blockly gewesen sein?

                ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM), Node.js: v12.22.6, NPM: 6.14.15
                Most important Device Adapters: KNX, Trådfri, Homekit/Yahka

                HomoranH paul53P 2 Replies Last reply
                0
                • V Videonisse

                  @paul53 Works like a charm! Nochmals, viele viele Danke! :-)

                  Ich habe letzen Tage Probleme javascript.js und hatte zb error: "JavaScript heap out of memory"

                  Kann die Ursache den Code "on(idJSON, function (dp) {" zusammen mit Blockly gewesen sein?

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #12

                  @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

                  JavaScript heap out of memory

                  gilt deine Signatur noch?

                  ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM)

                  da solltest du eigentlich genug RAM haben (wenn das auf einem PC läuft und in der VM genug RAM angemeldet ist)

                  kein Support per PN! - Fragen im Forum stellen -
                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  V 1 Reply Last reply
                  0
                  • V Videonisse

                    @paul53 Works like a charm! Nochmals, viele viele Danke! :-)

                    Ich habe letzen Tage Probleme javascript.js und hatte zb error: "JavaScript heap out of memory"

                    Kann die Ursache den Code "on(idJSON, function (dp) {" zusammen mit Blockly gewesen sein?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #13

                    @videonisse sagte: Kann die Ursache den Code "on(idJSON, function (dp) {" zusammen mit Blockly gewesen sein?

                    Ja, da der Trigger "on(idJSON, function (dp) {" innerhalb des Blockly-Triggers im Laufe der Zeit zu sehr vielen Trigger-Ereignissen führt.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • HomoranH Homoran

                      @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

                      JavaScript heap out of memory

                      gilt deine Signatur noch?

                      ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM)

                      da solltest du eigentlich genug RAM haben (wenn das auf einem PC läuft und in der VM genug RAM angemeldet ist)

                      V Offline
                      V Offline
                      Videonisse
                      wrote on last edited by
                      #14

                      @homoran Ja, ich habe normale weise 60% frei von 2GB ram. Aber mit die letzte Code Änderung von @paul53 bleibt javascript.js auf ~245MB

                      Alles ist jetzt stabil und keine Fehler in log.

                      ioBroker v3.3.18, Debian 10 Buster 64-bit (Vmware 6.5 VM), Node.js: v12.22.6, NPM: 6.14.15
                      Most important Device Adapters: KNX, Trådfri, Homekit/Yahka

                      HomoranH 1 Reply Last reply
                      0
                      • V Videonisse

                        @homoran Ja, ich habe normale weise 60% frei von 2GB ram. Aber mit die letzte Code Änderung von @paul53 bleibt javascript.js auf ~245MB

                        Alles ist jetzt stabil und keine Fehler in log.

                        HomoranH Do not disturb
                        HomoranH Do not disturb
                        Homoran
                        Global Moderator Administrators
                        wrote on last edited by
                        #15

                        @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

                        ich habe normale weise 60% frei von 2GB ram.

                        das ist unter Linux nicht normal!
                        www.linuxatemyram.com

                        @videonisse sagte in Aus JSON 136 Datenpunkte erzeugen:

                        bleibt javascript.js auf ~245MB

                        meine beiden Instanzen haben 160 und 180 MB und ich habe nicht viel/aufwändiges

                        kein Support per PN! - Fragen im Forum stellen -
                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                        Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        426

                        Online

                        32.7k

                        Users

                        82.5k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe