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. JSON zu Objekte

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    15
    1
    213

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

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

JSON zu Objekte

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
26 Beiträge 3 Kommentatoren 1.9k Aufrufe 2 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.
  • K Offline
    K Offline
    Kellerassel75
    schrieb am zuletzt editiert von Kellerassel75
    #12

    @ente34
    Also Haken ist raus! Fehler ist behoben!
    Hardware ist Raspi4. Versin ioBroker.admin 4.1.11!
    Falko

    16:06:40.026	info	javascript.0 (12175) Start javascript script.js.test
    16:06:40.064	info	javascript.0 (12175) script.js.test: registered 1 subscription and 1 schedule
    

    Unter Objekt ist dann nur "[]"!

    E 1 Antwort Letzte Antwort
    0
    • K Kellerassel75

      @ente34
      Also Haken ist raus! Fehler ist behoben!
      Hardware ist Raspi4. Versin ioBroker.admin 4.1.11!
      Falko

      16:06:40.026	info	javascript.0 (12175) Start javascript script.js.test
      16:06:40.064	info	javascript.0 (12175) script.js.test: registered 1 subscription and 1 schedule
      

      Unter Objekt ist dann nur "[]"!

      E Offline
      E Offline
      ente34
      schrieb am zuletzt editiert von
      #13

      @kellerassel75
      Na ja, hast Du verpasste Anrufe heute?
      Sonst Zeile 18:

      if (1 || el_date === date)
      
      K 1 Antwort Letzte Antwort
      0
      • E ente34

        @kellerassel75
        Na ja, hast Du verpasste Anrufe heute?
        Sonst Zeile 18:

        if (1 || el_date === date)
        
        K Offline
        K Offline
        Kellerassel75
        schrieb am zuletzt editiert von Kellerassel75
        #14

        16:17:09.144 error javascript.0 (12519) script.js.test compile failed: at script.js.test:45

        Sorry mein Fehler { vergessen!

        Nun schreibt er mir die ganze Tabelle nach javascript.0.telefon.missed_today.json!

        Im Log steht:

        javascript.0	2021-01-31 16:17:09.150	error	(12519) at processTicksAndRejections (internal/process/task_queues.js:97:5)
        javascript.0	2021-01-31 16:17:09.150	error	(12519) at runMicrotasks (<anonymous>)
        javascript.0	2021-01-31 16:17:09.150	error	(12519) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
        javascript.0	2021-01-31 16:17:09.149	error	(12519) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
        javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
        javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
        javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
        javascript.0	2021-01-31 16:17:09.146	error	(12519) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
        javascript.0	2021-01-31 16:17:09.146	error	(12519) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
        javascript.0	2021-01-31 16:17:09.146	error	(12519) at Object.createScript (vm.js:261:10)
        javascript.0	2021-01-31 16:17:09.146	error	(12519) at new Script (vm.js:88:7)
        javascript.0	2021-01-31 16:17:09.145	error	(12519) SyntaxError: Missing catch or finally after try
        javascript.0	2021-01-31 16:17:09.145	error	(12519) ^
        javascript.0	2021-01-31 16:17:09.145	error	(12519) }
        javascript.0	2021-01-31 16:17:09.144	error	at script.js.test:45
        javascript.0	2021-01-31 16:17:09.144	error	(12519) script.js.test compile failed: 
        
        E 1 Antwort Letzte Antwort
        0
        • K Kellerassel75

          16:17:09.144 error javascript.0 (12519) script.js.test compile failed: at script.js.test:45

          Sorry mein Fehler { vergessen!

          Nun schreibt er mir die ganze Tabelle nach javascript.0.telefon.missed_today.json!

          Im Log steht:

          javascript.0	2021-01-31 16:17:09.150	error	(12519) at processTicksAndRejections (internal/process/task_queues.js:97:5)
          javascript.0	2021-01-31 16:17:09.150	error	(12519) at runMicrotasks (<anonymous>)
          javascript.0	2021-01-31 16:17:09.150	error	(12519) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
          javascript.0	2021-01-31 16:17:09.149	error	(12519) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
          javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
          javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
          javascript.0	2021-01-31 16:17:09.149	error	(12519) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
          javascript.0	2021-01-31 16:17:09.146	error	(12519) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
          javascript.0	2021-01-31 16:17:09.146	error	(12519) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
          javascript.0	2021-01-31 16:17:09.146	error	(12519) at Object.createScript (vm.js:261:10)
          javascript.0	2021-01-31 16:17:09.146	error	(12519) at new Script (vm.js:88:7)
          javascript.0	2021-01-31 16:17:09.145	error	(12519) SyntaxError: Missing catch or finally after try
          javascript.0	2021-01-31 16:17:09.145	error	(12519) ^
          javascript.0	2021-01-31 16:17:09.145	error	(12519) }
          javascript.0	2021-01-31 16:17:09.144	error	at script.js.test:45
          javascript.0	2021-01-31 16:17:09.144	error	(12519) script.js.test compile failed: 
          
          E Offline
          E Offline
          ente34
          schrieb am zuletzt editiert von
          #15

          @kellerassel75
          Schon klar, mein Script filtert ja die verpassten Anrufe heute aus. Mit der "1||" bekommst Du wieder alle, um zu kontrollieren, ob alles soweit funktioniert.
          Alternativ kannst Du Dich auch selbst anrufen (nicht abheben!).

          K 1 Antwort Letzte Antwort
          0
          • E ente34

            @kellerassel75
            Schon klar, mein Script filtert ja die verpassten Anrufe heute aus. Mit der "1||" bekommst Du wieder alle, um zu kontrollieren, ob alles soweit funktioniert.
            Alternativ kannst Du Dich auch selbst anrufen (nicht abheben!).

            K Offline
            K Offline
            Kellerassel75
            schrieb am zuletzt editiert von
            #16

            @ente34
            Gut! Er schreibt nun die Anrufe von heute! Das funktioniert!

            Aber ich wollte richtige Datenpunte - Zahlen nicht JSON!

            Also:
            Datenpunt letzter - caller
            Datenpunt letzter - date
            Datenpunt letzter - name

            Datenpunt vorletzter- caller
            Datenpunt vorletzter- date
            Datenpunt vorletzter- name

            Falko

            E paul53P 2 Antworten Letzte Antwort
            0
            • K Kellerassel75

              @ente34
              Gut! Er schreibt nun die Anrufe von heute! Das funktioniert!

              Aber ich wollte richtige Datenpunte - Zahlen nicht JSON!

              Also:
              Datenpunt letzter - caller
              Datenpunt letzter - date
              Datenpunt letzter - name

              Datenpunt vorletzter- caller
              Datenpunt vorletzter- date
              Datenpunt vorletzter- name

              Falko

              E Offline
              E Offline
              ente34
              schrieb am zuletzt editiert von
              #17

              @kellerassel75
              wie bereits oben gesagt, in Zeile 19 hast Du das obj in der Hand ...

              1 Antwort Letzte Antwort
              0
              • K Kellerassel75

                @ente34
                Gut! Er schreibt nun die Anrufe von heute! Das funktioniert!

                Aber ich wollte richtige Datenpunte - Zahlen nicht JSON!

                Also:
                Datenpunt letzter - caller
                Datenpunt letzter - date
                Datenpunt letzter - name

                Datenpunt vorletzter- caller
                Datenpunt vorletzter- date
                Datenpunt vorletzter- name

                Falko

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #18

                @kellerassel75 sagte: richtige Datenpunte - Zahlen nicht JSON!

                Du meinst Zeichenketten?

                @kellerassel75 sagte in JSON zu Objekte:

                Datenpunt vorletzter- caller
                Datenpunt vorletzter- date
                Datenpunt vorletzter- name

                Wieweit sollen sie zurück reichen?

                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

                K 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @kellerassel75 sagte: richtige Datenpunte - Zahlen nicht JSON!

                  Du meinst Zeichenketten?

                  @kellerassel75 sagte in JSON zu Objekte:

                  Datenpunt vorletzter- caller
                  Datenpunt vorletzter- date
                  Datenpunt vorletzter- name

                  Wieweit sollen sie zurück reichen?

                  K Offline
                  K Offline
                  Kellerassel75
                  schrieb am zuletzt editiert von
                  #19

                  @paul53
                  Ich denke 4 Anrufe sollte reichen!

                  1 Antwort Letzte Antwort
                  0
                  • K Kellerassel75

                    Hallo.
                    Ich bin Falko und habe schon eine Menge Zeit hier verbracht.

                    Ich bin vor einem Jahr von FHEM zu ioBroker gewechselt. Die Umstellung hat eine Weile gedauert.
                    Mit Blockly komme ich schon ganz gut zurecht. Java ist schwer für mich.

                    Ich versuche aus einer JSON Tabelle Werte in Objekte zu schreiben.
                    Einige Beispiele aus diesem Forum konnte ich ganz gut nachstellen bei mir.
                    Aber mit meiner Tabelle funktioniert das alles nicht.

                    Hier mal meine JSON:

                    [{"id":4097,"type":"2","caller":"****","called":"SIP: ****","callednumber":"****","name":"","numbertype":"sip","device":"","port":"-1","date":"23.01.21 23:01","duration":"0:00","count":"","path":"","sym":"x","external":"*****"},{"id":4096,"type":"2","caller":"******","called":"SIP: ****","callednumber":"*******","name":"","numbertype":"sip","device":"","port":"-1","date":"23.01.21 22:21","duration":"0:00","count":"","path":"","sym":"x","external":"******"},{"id":4083,"type":"2","caller":"*****","called":"SIP: *****","callednumber":"****","name":"","numbertype":"sip","device":"","port":"-1","date":"21.01.21 11:38","duration":"0:00","count":"","path":"","sym":"x","external":"******"}]
                    

                    Das ist die JSON von tr-064. Dort möchte ich gerne die caller, date und name in Objekte schreiben.

                    Solange nur ein Anruf ist:

                    {"id":4097,"type":"2","caller":"****","called":"SIP: ****","callednumber":"****","name":"","numbertype":"sip","device":"","port":"-1","date":"23.01.21 23:01","duration":"0:00","count":"","path":"","sym":"x","external":"*****"}
                    

                    Bekomme ich das hin. Sobald die"[ ]"dazu kommt und noch weitere Anrufe geht nichts.

                    Beispiel:

                    //Script zur Zerlegung der JSON Daten in einzelne Datenpunkte
                    
                    //Idee: Chaot
                    
                    // Umsetzung: paul53
                    
                     var json = "tr-064.0.calllists.missed.json";
                    
                    var Nummer = "javascript.0.Nummer";
                    
                    var Datum = "javascript.0.Datum";
                    
                    var Name = "javascript.0.Name";
                    
                    on(json, function(dp) {
                    
                       var obj = JSON.parse(dp.state.val);
                    
                       setState(Nummer, parseFloat(obj.caller));
                    
                       setState(Datum, parseFloat(obj.date)); 
                    
                       setState(Name, parseFloat(obj.name));  
                    
                    });
                    

                    Wer kann helfen dass meine Objekte (jeder Anruf einzeln) erstellt werden.

                    Vielen Dank!
                    Falko

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #20

                    @kellerassel75 sagte: Solange nur ein Anruf ist:

                    Ist es wirklich so, dass es dann nur ein Objekt ohne Array-Klammern ist ?

                    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

                    K 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @kellerassel75 sagte: Solange nur ein Anruf ist:

                      Ist es wirklich so, dass es dann nur ein Objekt ohne Array-Klammern ist ?

                      K Offline
                      K Offline
                      Kellerassel75
                      schrieb am zuletzt editiert von
                      #21

                      @paul53
                      Nein das habe ich so geändert!

                      E paul53P 2 Antworten Letzte Antwort
                      0
                      • K Kellerassel75

                        @paul53
                        Nein das habe ich so geändert!

                        E Offline
                        E Offline
                        ente34
                        schrieb am zuletzt editiert von
                        #22

                        @kellerassel75

                        Kannst Du es dann selber erweitern?

                        //Script zur Zerlegung der JSON Daten in einzelne Datenpunkte
                        //Idee: Chaot
                        // Umsetzung: paul53
                        
                        var json = "tr-064.0.calllists.missed.json";
                        var Nummer = "javascript.0.Nummer";
                        var Datum = "javascript.0.Datum";
                        var Name = "javascript.0.Name";
                        const MaxAnrufe = 4;
                        
                        on(json, function(dp) {
                           var obj = JSON.parse(dp.state.val);
                           const i_end = obj.length < MaxAnrufe ? obj.length : MaxAnrufe;
                           for (let i=0; i<i_end; i++) {
                               const o = obj[i];
                               console.warn(o);
                               const dp_nummer = Nummer+"_"+i;
                               console.warn(dp_nummer);
                               setState(dp_nummer,o.caller);
                           }
                        //    setState(Nummer, parseFloat(obj.caller));
                        //    setState(Datum, parseFloat(obj.date)); 
                        //    setState(Name, parseFloat(obj.name));  
                        
                        });
                        
                        for (let i=0; i<MaxAnrufe; i++) {
                            const dp_nummer = Nummer+"_"+i;
                            createState(dp_nummer);
                        }
                        
                        K 1 Antwort Letzte Antwort
                        0
                        • E ente34

                          @kellerassel75

                          Kannst Du es dann selber erweitern?

                          //Script zur Zerlegung der JSON Daten in einzelne Datenpunkte
                          //Idee: Chaot
                          // Umsetzung: paul53
                          
                          var json = "tr-064.0.calllists.missed.json";
                          var Nummer = "javascript.0.Nummer";
                          var Datum = "javascript.0.Datum";
                          var Name = "javascript.0.Name";
                          const MaxAnrufe = 4;
                          
                          on(json, function(dp) {
                             var obj = JSON.parse(dp.state.val);
                             const i_end = obj.length < MaxAnrufe ? obj.length : MaxAnrufe;
                             for (let i=0; i<i_end; i++) {
                                 const o = obj[i];
                                 console.warn(o);
                                 const dp_nummer = Nummer+"_"+i;
                                 console.warn(dp_nummer);
                                 setState(dp_nummer,o.caller);
                             }
                          //    setState(Nummer, parseFloat(obj.caller));
                          //    setState(Datum, parseFloat(obj.date)); 
                          //    setState(Name, parseFloat(obj.name));  
                          
                          });
                          
                          for (let i=0; i<MaxAnrufe; i++) {
                              const dp_nummer = Nummer+"_"+i;
                              createState(dp_nummer);
                          }
                          
                          K Offline
                          K Offline
                          Kellerassel75
                          schrieb am zuletzt editiert von
                          #23

                          @ente34
                          Danke! Ich werde es Versuchen!

                          1 Antwort Letzte Antwort
                          0
                          • K Kellerassel75

                            @paul53
                            Nein das habe ich so geändert!

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #24

                            @kellerassel75 sagte: 4 Anrufe sollte reichen!

                            Vorschlag (nicht getestet):

                            const idJson = "tr-064.0.calllists.missed.json";
                            const path = "0_userdata.0.Telefon.verpasst-";
                            
                            if(!existsState(path + '0.Nummer')) {
                                for(let i = 0; i < 4; i++) {
                                    createState(path + i + '.Nummer', '', {type: 'string', name: 'Nummer', role: 'info'});
                                    createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); 
                                    createState(path + i + '.Name', '', {type: 'string', name: 'Name', role: 'info'});
                                }
                            }
                             
                            on(idJson, function(dp) {
                                let arr = JSON.parse(dp.state.val);
                                let anzahl = arr.length;
                                if(anzahl > 4) anzahl = 4;
                                for(let i = 0; i < anzahl; i++) {
                                    setState(path + i + '.Nummer', arr[i].caller, true);
                                    setState(path + i + '.Datum', arr[i].date, true); 
                                    setState(path + i + '.Name', arr[i].name, true);
                                }
                            });
                            

                            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

                            E K 2 Antworten Letzte Antwort
                            0
                            • paul53P paul53

                              @kellerassel75 sagte: 4 Anrufe sollte reichen!

                              Vorschlag (nicht getestet):

                              const idJson = "tr-064.0.calllists.missed.json";
                              const path = "0_userdata.0.Telefon.verpasst-";
                              
                              if(!existsState(path + '0.Nummer')) {
                                  for(let i = 0; i < 4; i++) {
                                      createState(path + i + '.Nummer', '', {type: 'string', name: 'Nummer', role: 'info'});
                                      createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); 
                                      createState(path + i + '.Name', '', {type: 'string', name: 'Name', role: 'info'});
                                  }
                              }
                               
                              on(idJson, function(dp) {
                                  let arr = JSON.parse(dp.state.val);
                                  let anzahl = arr.length;
                                  if(anzahl > 4) anzahl = 4;
                                  for(let i = 0; i < anzahl; i++) {
                                      setState(path + i + '.Nummer', arr[i].caller, true);
                                      setState(path + i + '.Datum', arr[i].date, true); 
                                      setState(path + i + '.Name', arr[i].name, true);
                                  }
                              });
                              
                              E Offline
                              E Offline
                              ente34
                              schrieb am zuletzt editiert von
                              #25

                              @paul53
                              Mir gefällt es ...

                              1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @kellerassel75 sagte: 4 Anrufe sollte reichen!

                                Vorschlag (nicht getestet):

                                const idJson = "tr-064.0.calllists.missed.json";
                                const path = "0_userdata.0.Telefon.verpasst-";
                                
                                if(!existsState(path + '0.Nummer')) {
                                    for(let i = 0; i < 4; i++) {
                                        createState(path + i + '.Nummer', '', {type: 'string', name: 'Nummer', role: 'info'});
                                        createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); 
                                        createState(path + i + '.Name', '', {type: 'string', name: 'Name', role: 'info'});
                                    }
                                }
                                 
                                on(idJson, function(dp) {
                                    let arr = JSON.parse(dp.state.val);
                                    let anzahl = arr.length;
                                    if(anzahl > 4) anzahl = 4;
                                    for(let i = 0; i < anzahl; i++) {
                                        setState(path + i + '.Nummer', arr[i].caller, true);
                                        setState(path + i + '.Datum', arr[i].date, true); 
                                        setState(path + i + '.Name', arr[i].name, true);
                                    }
                                });
                                
                                K Offline
                                K Offline
                                Kellerassel75
                                schrieb am zuletzt editiert von
                                #26

                                @paul53
                                Danke passt!

                                Echt Super! Ich bin begeistert! Danke an alle!
                                Ich hätte nicht gedacht das ich so schnell Hilfe bekomme!
                                Ihr seid Super! Macht weiter so!

                                :clap:

                                Ich werde hier noch viel lernen hoffe ich!

                                :grinning:

                                Falko

                                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

                                552

                                Online

                                32.7k

                                Benutzer

                                82.4k

                                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