Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JSON zu Objekte

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kellerassel75 @ente34 last edited by 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 1 Reply Last reply Reply Quote 0
      • E
        ente34 @Kellerassel75 last edited by

        @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 Reply Last reply Reply Quote 0
        • K
          Kellerassel75 @ente34 last edited by

          @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 paul53 2 Replies Last reply Reply Quote 0
          • E
            ente34 @Kellerassel75 last edited by

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

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Kellerassel75 last edited by

              @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 1 Reply Last reply Reply Quote 0
              • K
                Kellerassel75 @paul53 last edited by

                @paul53
                Ich denke 4 Anrufe sollte reichen!

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Kellerassel75 last edited by

                  @kellerassel75 sagte: Solange nur ein Anruf ist:

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

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kellerassel75 @paul53 last edited by

                    @paul53
                    Nein das habe ich so geändert!

                    E paul53 2 Replies Last reply Reply Quote 0
                    • E
                      ente34 @Kellerassel75 last edited by

                      @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 Reply Last reply Reply Quote 0
                      • K
                        Kellerassel75 @ente34 last edited by

                        @ente34
                        Danke! Ich werde es Versuchen!

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Kellerassel75 last edited by 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 K 2 Replies Last reply Reply Quote 0
                          • E
                            ente34 @paul53 last edited by

                            @paul53
                            Mir gefällt es ...

                            1 Reply Last reply Reply Quote 0
                            • K
                              Kellerassel75 @paul53 last edited by

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

                              👏

                              Ich werde hier noch viel lernen hoffe ich!

                              😀

                              Falko

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              738
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              3
                              26
                              855
                              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