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.
    • E
      ente34 @Kellerassel75 last edited by

      @kellerassel75
      Hier das widget
      JSON als Tabelle ist hier beschrieben

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

        @ente34
        Danke für die schnelle Antwort!

        Fehler:

        javascript.0	2021-01-31 14:45:21.675	warn	(27920) script.js.test: {'val':'[{\'id\':4097,\'type\':\'2\',\'caller\':\'****\',\'called\':\'SIP: ****\',\'callednumber\':\'****\',\'name\':\'\',\'numbertype\':\'sip\',\'device\':\'\',\'port\':\'-1\
        javascript.0	2021-01-31 14:43:58.384	error	(27920) script.js.test: Please disable that setting or use "getState" with a callback, e.g.: getState("tr-064.0.calllists.missed.json", (err, state) => { ... });
        javascript.0	2021-01-31 14:43:58.383	error	(27920) script.js.test: The "getState" method cannot be used synchronously, because the adapter setting "Do not subscribe to all states on start" is enabled.
        

        Und ich wollte richtige Datenpunte - Zahlen nicht JSON!

        Falko

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

          @kellerassel75
          Wo startest Du Dein Script?
          Was für eine Hardware verwendest Du? Version IoBroker?

          Bei mir kommt die Ausgabe unter dem javascript adapter:

          javascript.0	2021-01-31 15:05:09.774	info	(16568) script.js.Anruf: registered 1 subscription and 1 schedule
          javascript.0	2021-01-31 15:05:09.758	info	(16568) Start javascript script.js.Anruf```
          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Kellerassel75 last edited by

            @kellerassel75 sagte: because the adapter setting "Do not subscribe to all states on start" is enabled.

            Haken in der Konfiguration der Javascript-Instanz entfernen!

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

              @paul53
              Danke!
              Was bewirkt der Haken?

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

                @ente34 sagte: Was bewirkt der Haken?

                Der Haken bewirkt, dass Zustände nicht in der JS-Instanz gepuffert werden, und deshalb die synchrone Version von

                var state = getState(id); // synchrone Version ohne Callback
                

                nicht verwendet werden kann.

                1 Reply Last reply Reply Quote 0
                • E
                  ente34 last edited by

                  @paul53
                  Fast verstanden, wofür könnte das gut sein (Speicherplatz sparen?)

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

                    @ente34 sagte: wofür könnte das gut sein (Speicherplatz sparen?)

                    Ja.
                    Bisher ist mir hier im Forum noch kein Script aufgefallen, das die asynchrone Version von getstate(id, callback) verwendet.

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

                      @kellerassel75
                      In Zeile 19 hast Du das obj in der Hand:

                      setState(Nummer,el.caller)
                      ....
                      setState(Name,el.name)
                      

                      kannst Du Dir einen Anruf ausfiltern

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

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

                          if (1 || el_date === date)
                          
                          K 1 Reply Last reply Reply Quote 0
                          • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            561
                                            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