NEWS
FritzBox json
-
Hallo zusammen,
ich würde gerne aus einer bestehenden JSON-Tabelle nur bestimmte Werte extrahieren. Ich weiß das dies mit Java-Script
und der Funktion json parse funktioniert. Leider bekomme ich das aber nicht so hin wie ich es gerne hätte.
Der aktuelle Datenpunkt der Fritzbox liefert liefert folgende Werte:
[{"date":"07.10.18 18:00:02","externalNumber":"0155000000","callSymbolColor":"** ->>**","extensionLine":"10","ownNumber":"8209500","lineType":"SIP1","durationForm":" 44"},{"date":"07.10.18 17:58:29","externalNumber":"015000000","callSymbolColor":"** ->X**","extensionLine":"","ownNumber":"8209500","lineType":"SIP1","durationForm":" -"},{"date":"06.10.18 16:37:14","externalNumber":"025000","callSymbolColor":"** ->X**","extensionLine":"","ownNumber":"8209500","lineType":"SIP1","durationForm":" -"},{"date":"06.10.18 11:47:59","externalNumber":"0175000000","callSymbolColor":"** ->>**","extensionLine":"10","ownNumber":"8209500","lineType":"SIP1","durationForm":" 2:33"}]
Ich hätte gerne davon gerne nur die Werte date, externalNumber, callSymbolColor, durationForm in jeweils eingene Datenpunkte.
Hoffe ihr könnte mir auf die Sprünge helfen.
Gruß
Damich
-
gerne nur die Werte date, externalNumber, callSymbolColor, durationForm in jeweils eingene Datenpunkte. `
Diese Werte liegen 4 mal vor, denn es ist ein Array mit 4 gleichen Objekten, die unterschiedliche Werte enthalten. -
gerne nur die Werte date, externalNumber, callSymbolColor, durationForm in jeweils eingene Datenpunkte.
Diese Werte liegen 4 mal vor, denn es ist ein Array mit 4 gleichen Objekten, die unterschiedliche Werte enthalten.
Okay, das hätte ich sehen müssen. Aber weiter geholfen ist mir damit nicht wirklich.
-
Die Frage ist, welche Werte Du in Datenpunkte schreiben möchtest: Alle 4 * 4 in 16 Datenpunkte oder nur die letzten Werte in 4 Datenpunkte. Beispiel für die letzten Werte (Datenpunkte von Typ "string" liegen unter javascript.0):
var obj = JSON.parse(json)[0]; // Objekt mit den letzten Werten setState('Fritzbox.Datum', obj.date, true); setState('Fritzbox.Rufnummer', obj.externalNumber, true); setState('Fritzbox.Symbol', obj.callSymbolColor, true); setState('Fritzbox.Dauer', obj.durationForm, true);
-
Genau am liebsten alle 16 Datenpunkte. Kann man die Tabelle die im Vis nicht einfacher formatieren, dass diese einfach die gewünschten Spalten nur hat ?
Gruß
-
am liebsten alle 16 Datenpunkte `
Das sollte etwa so funktionieren:`var arr = JSON.parse(json); var cnt = arr.length; if(cnt > 4) cnt = 4; for(let i = 0; i < cnt; i++) { var obj = arr[i]; setState('Fritzbox.' + i + '-Datum', obj.date, true); setState('Fritzbox.' + i + '-Rufnummer', obj.externalNumber, true); setState('Fritzbox.' + i + '-Symbol', obj.callSymbolColor, true); setState('Fritzbox.' + i + '-Dauer', obj.durationForm, true); }` Mit Vis kenne ich mich nicht aus.[/i]
-
am liebsten alle 16 Datenpunkte `
Das sollte etwa so funktionieren:`var arr = JSON.parse(json); var cnt = arr.length; if(cnt > 4) cnt = 4; for(let i = 0; i < cnt; i++) { var obj = arr[i]; setState('Fritzbox.' + i + '-Datum', obj.date, true); setState('Fritzbox.' + i + '-Rufnummer', obj.externalNumber, true); setState('Fritzbox.' + i + '-Symbol', obj.callSymbolColor, true); setState('Fritzbox.' + i + '-Dauer', obj.durationForm, true); }` Mit Vis kenne ich mich nicht aus. Danke für deine Hilfe. Dann habe ich schon mal eine Lösung. Falls sich jemand noch zu VIS äußern könnte, wäre das perfekt. Gruß Damich[/i] ``` `
-
Falls sich jemand noch zu VIS äußern könnte, wäre das perfekt. `
Dazu solltest Du unter der Rubrik ioBroker.vis Adapter nachfragen, da es hier leicht übersehen wird. -