NEWS
JSON zu Objekte
-
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:
-
@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!). -
@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 - nameDatenpunt vorletzter- caller
Datenpunt vorletzter- date
Datenpunt vorletzter- nameFalko
-
@kellerassel75
wie bereits oben gesagt, in Zeile 19 hast Du das obj in der Hand ... -
@kellerassel75 sagte: richtige Datenpunte - Zahlen nicht JSON!
Du meinst Zeichenketten?
@kellerassel75 sagte in JSON zu Objekte:
Datenpunt vorletzter- caller
Datenpunt vorletzter- date
Datenpunt vorletzter- nameWieweit sollen sie zurück reichen?
-
@paul53
Ich denke 4 Anrufe sollte reichen! -
@kellerassel75 sagte: Solange nur ein Anruf ist:
Ist es wirklich so, dass es dann nur ein Objekt ohne Array-Klammern ist ?
-
@paul53
Nein das habe ich so geändert! -
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); }
-
@ente34
Danke! Ich werde es Versuchen! -
@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); } });
-
@paul53
Mir gefällt es ... -
@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