NEWS
[gelöst]: Easymeter bzw. Smart Grid Hub über Javascript auslesen (JSON)
-
Hallo MIKAMI,
ich habe mich gerade mit dem gleichen Thema besch
ä
ftigt. Bin allerdings Anf
ä
nger bzgl. iobroker. Daher ist der Code unten erstmal nur ein erster Wurf.Aber vielleicht kannst Du damit was anfangen?:
// ################################ // EFR Smart Hub Meterunit abfragen // http Zugriff wird benötigt var request = require('request'); // Url der Meterunit var meterunitURL = 'http://meterunit/json.txt?LogName=user&LogPSWD=user'; // Sicherstellen, dass alle Status-Variablen existieren const U = 'undefined'; var forceCreation = 0; var Kundennummer = U; createState('Kundennummer', 'undefined', forceCreation, {name: 'Kundennummer'}); var Vorname = U; createState('Vorname', 'undefined', forceCreation, {name: 'Vorname'}); var Nachname = U; createState('Nachname', 'undefined', forceCreation, {name: 'Nachname'}); var Adresse = U; createState('Adresse', 'undefined', forceCreation, {name: 'Adresse'}); var Zaehlernummer = U; createState('Zaehlernummer', 'undefined', forceCreation, {name: 'Zählernummer'}); var Zeitstempel = U; createState('Zeitstempel', 'undefined', forceCreation, {name: 'Zeitstempel'}); var Summenregister_1_8_0 = U; createState('Summenregister_1_8_0', 'undefined', forceCreation, {name: 'Summenregister 1.8.0', type: 'number', unit:'kWh'}); /* var Register_1_8_1 = U; createState('Register_1_8_1', 'undefined', forceCreation, {name: 'Register 1.8.1', type: 'number', unit:'kWh'}); var Register_1_8_2 = U; createState('Register_1_8_2', 'undefined', forceCreation, {name: 'Register 1.8.2', type: 'number', unit:'kWh'}); var Register_1_8_3 = U; createState('Register_1_8_3', 'undefined', forceCreation, {name: 'Register 1.8.3', type: 'number', unit:'kWh'}); var Register_2_8_0 = U; createState('Register_2_8_0', 'undefined', forceCreation, {name: 'Register 2.8.0', type: 'number', unit:'kWh'}); var Register_2_8_7 = U; createState('Register_2_8_7', 'undefined', forceCreation, {name: 'Register 2.8.7', type: 'number', unit:'kWh'}); */ var Gesamtleistung = U; createState('Gesamtleistung', 'undefined', forceCreation, {name: 'Gesamtleistung', type: 'number', unit:'W'}); var LeistungL1 = U; createState('LeistungL1', 'undefined', forceCreation, {name: 'Leistung Phase 1', type: 'number', unit:'W'}); var LeistungL2 = U; createState('LeistungL2', 'undefined', forceCreation, {name: 'Leistung Phase 2', type: 'number', unit:'W'}); var LeistungL3 = U; createState('LeistungL3', 'undefined', forceCreation, {name: 'Leistung Phase 3', type: 'number', unit:'W'}); var SpannungL1 = U; createState('SpannungL1', 'undefined', forceCreation, {name: 'Spannung Phase 1', type: 'number', unit:'V'}); var SpannungL2 = U; createState('SpannungL2', 'undefined', forceCreation, {name: 'Spannung Phase 2', type: 'number', unit:'V'}); var SpannungL3 = U; createState('SpannungL3', 'undefined', forceCreation, {name: 'Spannung Phase 3', type: 'number', unit:'V'}); var Netzfrequenz = U; createState('Netzfrequenz', 'undefined', forceCreation, {name: 'Netzfrequenz', type: 'number', unit:'Hz'}); var VerbrauchHeute = U; createState('VerbrauchHeute', 'undefined', forceCreation, {name: 'Verbrauch heute', type: 'number', unit:'kWh'}); var VerbrauchGestern = U; createState('VerbrauchGestern', 'undefined', forceCreation, {name: 'Verbrauch gestern', type: 'number', unit:'kWh'}); var VerbrauchLetzteWoche = U; createState('VerbrauchLetzteWoche', 'undefined', forceCreation, {name: 'Verbrauch letzte Woche', type: 'number', unit:'kWh'}); var VerbrauchLetztenMonat = U; createState('VerbrauchLetztenMonat', 'undefined', forceCreation, {name: 'Verbrauch letzten Monat', type: 'number', unit:'kWh'}); var VerbrauchLetztesJahr = U; createState('VerbrauchLetztesJahr', 'undefined', forceCreation, {name: 'Verbrauch letztes Jahr', type: 'number', unit:'kWh'}); /* var EinspeisungHeute = U; createState('EinspeisungHeute', 'undefined', forceCreation, {name: 'Einspeisung heute', type: 'number', unit:'kWh'}); var EinspeisungGestern = U; createState('EinspeisungGestern', 'undefined', forceCreation, {name: 'Einspeisung gestern', type: 'number', unit:'kWh'}); var EinspeisungLetzteWoche = U; createState('EinspeisungLetzteWoche', 'undefined', forceCreation, {name: 'Einspeisung letzte Woche', type: 'number', unit:'kWh'}); var EinspeisungLetztenMonat = U;createState('EinspeisungLetztenMonat', 'undefined', forceCreation, {name: 'Einspeisung letzten Monat', type: 'number', unit:'kWh'}); var EinspeisungLetztesJahr = U; createState('EinspeisungLetztesJahr', 'undefined', forceCreation, {name: 'Einspeisung letztes Jahr', type: 'number', unit:'kWh'}); */ function readMeterunit() { log('Get data from Meterunit', 'info'); request({url: meterunitURL, timeout: 2000}, function (error, response, body) { if (!error && response.statusCode == 200) { var result; try{ result = JSON.parse(body); log('JSON response: ' + JSON.stringify(result, null, 2), 'debug'); } catch (e) { log('JSON parse error:' + e, 'error'); } if (result) { var billingData = result["billingData:"]; var temp; // OBIS: 8181C78227FF if ((temp = billingData.assignment[0].value) != Kundennummer) { log(temp, 'debug'); setState('Kundennummer', temp); Kundennummer = temp; } // OBIS: 8181C78205FF if ((temp = billingData.assignment[1].value) != Vorname) { log(temp, 'debug'); setState('Vorname', temp); Vorname = temp; } // OBIS: 8181C78206FF if ((temp = billingData.assignment[2].value) != Nachname) { log(temp, 'debug'); setState('Nachname', temp); Nachname = temp; } // OBIS: 8181C78207FF if ((temp = billingData.assignment[3].value) != Adresse) { log(temp, 'debug'); setState('Adresse', temp); Adresse = temp; } // OBIS: 0100000000FF if ((temp = billingData.assignment[4].value) != Zaehlernummer) { log(temp, 'debug'); setState('Zaehlernummer', temp); Zaehlernummer = temp; } // OBIS: 010000090B00 if ((temp = billingData.assignment[5].value) != Zeitstempel) { log(temp, 'debug'); setState('Zeitstempel', temp); Zeitstempel = temp; } // OBIS: 0101010800FF if ((temp = billingData.values[0].value) != Summenregister_1_8_0) { log(temp, 'debug'); setState('Summenregister_1_8_0', temp); Summenregister_1_8_0 = temp; } // OBIS: 0100010700FF if ((temp = billingData.values[1].value) != Gesamtleistung) { log(temp, 'debug'); setState('Gesamtleistung', temp); Gesamtleistung = temp; } // OBIS: 0100150700FF if ((temp = billingData.values[2].value) != LeistungL1) { log(temp, 'debug'); setState('LeistungL1', temp); LeistungL1 = temp; } // OBIS: 0100290700FF if ((temp = billingData.values[3].value) != LeistungL2) { log(temp, 'debug'); setState('LeistungL2', temp); LeistungL2 = temp; } // OBIS: 01003D0700FF if ((temp = billingData.values[4].value) != LeistungL3) { log(temp, 'debug'); setState('LeistungL3', temp); LeistungL3 = temp; } // OBIS: 010020070000 if ((temp = billingData.values[5].value) != SpannungL1) { log(temp, 'debug'); setState('SpannungL1', temp); SpannungL1 = temp; } // OBIS: 010034070000 if ((temp = billingData.values[6].value) != SpannungL2) { log(temp, 'debug'); setState('SpannungL2', temp); SpannungL2 = temp; } // OBIS: 010048070000 if ((temp = billingData.values[7].value) != SpannungL3) { log(temp, 'debug'); setState('SpannungL3', temp); SpannungL3 = temp; } // OBIS: 01000E070000 if ((temp = billingData.values[8].value) != Netzfrequenz) { log(temp, 'debug'); setState('Netzfrequenz', temp); Netzfrequenz = temp; } // OBIS: 010001080080 if ((temp = billingData.values[9].value) != VerbrauchHeute) { log(temp, 'debug'); setState('VerbrauchHeute', temp); VerbrauchHeute = temp; } // OBIS: 010001080081 if ((temp = billingData.values[10].value) != VerbrauchGestern) { log(temp, 'debug'); setState('VerbrauchGestern', temp); VerbrauchGestern = temp; } // OBIS: 010001080082 if ((temp = billingData.values[11].value) != VerbrauchLetzteWoche) { log(temp, 'debug'); setState('VerbrauchLetzteWoche', temp); VerbrauchLetzteWoche = temp; } // OBIS: 010001080083 if ((temp = billingData.values[12].value) != VerbrauchLetztenMonat) { log(temp, 'debug'); setState('VerbrauchLetztenMonat', temp); VerbrauchLetztenMonat = temp; } // OBIS: 010001080084 if ((temp = billingData.values[13].value) != VerbrauchLetztesJahr) { log(temp, 'debug'); setState('VerbrauchLetztesJahr', temp); VerbrauchLetztesJahr = temp; } log('OK', 'info'); } } else { log('Fehler:' + error, 'error'); } }); // Ende des Requests } // schedule("* * * * *", readMeterunit); // readMeterunit(); setInterval(readMeterunit, 5000);In der History sieht der Energiebedarf des Hauses (javascript.0.Gesamtleistung) dann z.B. f
ü
r die letzten 3 Stunden so aus:
Viele Gr
ü
ß
earndl
-
Vorschlag (URL anpassen !):
// Easymeter auslesen var request = require('request'); var pfad = "Easymeter."; var idpower = pfad + "Leistung"; var idheute = pfad + "Ertrag-heute"; var idgestern = pfad + "Ertrag-gestern"; var url = 'http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx'; createState(idpower, 0, { desc: 'Momentanleistung', type: 'number', role: 'value', unit: 'W' }); createState(idheute, 0, { desc: 'Ertrag Tag', type: 'number', role: 'value', unit: 'kWh' }); createState(idgestern, 0, { desc: 'Ertrag Vortag', type: 'number', role: 'value', unit: 'kWh' }); function main() { request(url, function (err, state, body) { if(!err && state.statusCode == 200) { var values = JSON.parse(body)['billingData:'].values; log("Momentanleistung: " + values[2].value,"info"); log("Ertrag Tag: " + values[9].value,"info"); log("Ertrag Vortag: " + values[10].value,"info"); setState(idpower , values[2].value); setState(idheute , values[9].value); setState(idgestern, values[10].value); } else { log("Fehler: " + err + " bei Abfrage von: " + url, "warn"); } }); } schedule("*/10 * * * *", main); // alle 10 Minuten die Werte abfragen // Beim Skriptstart die Werte abfragen setTimeout(main,500);EDIT:
Ä
nderung billingData
–
> billingData: -
Mein Vorschlag mit node-red
[{"id":"7a597ace.f170e4","type":"debug","z":"93e48696.f68df8","name":"","active":true,"console":"false","complete":"true","x":1251,"y":225,"wires":[]},{"id":"125b9ea.0eb4161","type":"inject","z":"93e48696.f68df8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":96,"y":50,"wires":[["75cd084a.68c538"]]},{"id":"8a0eb211.ba2a4","type":"json","z":"93e48696.f68df8","name":"","x":420,"y":114,"wires":[["1e3d4d89.714152"]]},{"id":"1e3d4d89.714152","type":"change","z":"93e48696.f68df8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.billingData:.values","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":587,"y":151,"wires":[["daac6ae9.37e7e8"]]},{"id":"daac6ae9.37e7e8","type":"split","z":"93e48696.f68df8","name":"","splt":"\\n","x":739,"y":206,"wires":[["17fba018.d0f18"]]},{"id":"cac2d016.c7dc6","type":"change","z":"93e48696.f68df8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":324,"wires":[["7a597ace.f170e4"]]},{"id":"17fba018.d0f18","type":"switch","z":"93e48696.f68df8","name":"","property":"payload.obis","propertyType":"msg","rules":[{"t":"eq","v":"0101020800FF","vt":"str"}],"checkall":"true","outputs":1,"x":866,"y":276,"wires":[["cac2d016.c7dc6"]]},{"id":"75cd084a.68c538","type":"http request","z":"93e48696.f68df8","name":"","method":"GET","ret":"txt","url":"http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx","tls":"","x":247,"y":92,"wires":[["8a0eb211.ba2a4"]]}] ````Der flow extrahiert als Beispiel den Wert für orbis 0101020800FF. Vorteil: kein Zugriff über Array und 90% weniger zu schreiben :) -
Hey,
ich baue gerade einen Adapter der solche Werte per Seriell/IR ausliesst und so. Geht bei mir mit SML (mein eHz-Stromz
ä
hler9 und auch bei meiner Fernw
ä
rmestation (dort per D0).Wenn das fertig ist w
ä
re es denke ich auch eine Idee das Format von Eurem Z
ä
hler dort mit einzubauen.nach aktueller Idee (weil ich den Adapter schon generisch halten will) w
ä
ren die Datenpunkte aber die verwendeten OBIS-Nummern (also das "1.8.1")
…
aber wenn man ja weiss was was ist dann ist das ja benutzbar.Macht das Sinn?
Ingo F
-
Es geht um dieses Ger
ä
t:http://www.efr.de/fileadmin/content/dow
…
NEU_DE.pdfDie Beschreibung der Schnittstelle finde ich grade nicht auf dem EFR Server. Sie liegt aber z.B. hier:
http://www.sev-soemmerda.de/de/Strom/Sm
…
id-Hub.pdfWas anderes als JSON per http geht meines Wissens nicht. Klappt aber gut!
Ich hatte ebenfalls daran gedacht, daraus einen Adapter zu bauen. Habe mich in die Adapter-Entwicklung aber bisher noch nicht eingelesen. W
ü
rde also noch etwas dauern.Viele Gr
ü
ß
earndl
-
Laut Produktinformationen hat das Ding auch IR
…
Da kommt bin
ä
rkodiertes SML raus ... Das kann ich schon direkt 
Aber ich schaue mal das ich in meinen Adapter auch ne URL Option einbaue wo man dieses Format parsen kann, Am Ende bauen die nur SML in ein JSON um ...
-
Stimmt
…
SML ist in den technischen Daten mit aufgef
ü
hrt. Bisher sagt mir das Protokoll allerdings nichts.Ob das Ger
ä
t das
ü
ber Ethernet spricht? F
ü
r SML scheint das
Ü
bertragungsmedium nicht festgelegt zu sein.Den "Parser" f
ü
r das EFR JSON Format habe ich ja weiter oben gepostet. Der funktioniert so, wie er da steht.arndl
-
Das Parsen des JSON ist nicht das Thema

Also am Ende ist der Smart Grid Hub nur ein Aufsatz auf den Easymeter-Z
ä
hler und holt dort per SML die Daten alle paar Sekunden ab und bereitet diese auf und stellt Sie zur Verf
ü
gung.Wird in der ersten version mit drin sein
…
-
Hallo Zusammen,
vielen Dank f
ü
r die schnelle Hilfe und konstruktiven Vorschl
ä
ge. Das Script von Arndl funktioniert und lie
ß
t auf jedenfall schon mal einige Werte aus dem Easymeter aus. Das Script von paul53 ist einfacher (da nat
ü
rlich weniger Werte) scheint aber irgendwie nicht zu funktionieren. Es kommt zu folgender Fehlermeldung:javascript.0 2017-01-17 19:52:04.579 info terminating
javascript.0 2017-01-17 19:52:04.569 error at emitNone (events.js:72:20)
javascript.0 2017-01-17 19:52:04.569 error at IncomingMessage.g (events.js:260:16)
javascript.0 2017-01-17 19:52:04.569 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1001:12)
javascript.0 2017-01-17 19:52:04.569 error at Request.emit (events.js:169:7)
javascript.0 2017-01-17 19:52:04.569 error at emitOne (events.js:77:13)
javascript.0 2017-01-17 19:52:04.569 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1081:10)
javascript.0 2017-01-17 19:52:04.569 error at Request.emit (events.js:172:7)
javascript.0 2017-01-17 19:52:04.569 error at emitTwo (events.js:87:13)
javascript.0 2017-01-17 19:52:04.569 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22)
javascript.0 2017-01-17 19:52:04.569 error at Request._callback (script.js.Scripte.Easymeter:38:54)
javascript.0 2017-01-17 19:52:04.569 error TypeError: Cannot read property 'values' of undefined
javascript.0 2017-01-17 19:52:04.555 error uncaught exception: Cannot read property 'values' of undefined
javascript.0 2017-01-17 19:52:03.900 info script.js.Scripte.Easymeter: registered 0 subscriptions and 1 schedule
Falls es zu den Logs noch eine Vorschlag zur Abhilfe gibt gerne, ansonsten werde ich mal versuchen am Wochenende das Script von arndl auf meine Bed
ü
rfnisse zu reduzieren (das sollte ja kein Problem sein)Danke auch an moebius. An node-red habe ich mich allerdings bis jetzt noch nicht rangewagt (kommt sicherlich noch
…
)Vielen Dank
Michael
-
Dann versuch das mal:
// Easymeter auslesen var request = require('request'); var pfad = "Easymeter."; var idpower = pfad + "Leistung"; var idheute = pfad + "Ertrag-heute"; var idgestern = pfad + "Ertrag-gestern"; var url = 'http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx'; createState(idpower, 0, { desc: 'Momentanleistung', type: 'number', role: 'value', unit: 'W' }); createState(idheute, 0, { desc: 'Ertrag Tag', type: 'number', role: 'value', unit: 'kWh' }); createState(idgestern, 0, { desc: 'Ertrag Vortag', type: 'number', role: 'value', unit: 'kWh' }); function main() { request(url, function (err, state, body) { if(!err && state.statusCode == 200) { var result; try{ result = JSON.parse(body); log('JSON response: ' + JSON.stringify(result, null, 2), 'debug'); } catch (e) { log('JSON parse error:' + e, 'error'); } if (result) { var values = result.billingData.values; log("Momentanleistung: " + values[2].value,"info"); log("Ertrag Tag: " + values[9].value,"info"); log("Ertrag Vortag: " + values[10].value,"info"); setState(idpower , values[2].value); setState(idheute , values[9].value); setState(idgestern, values[10].value); } } else { log("Fehler: " + err + " bei Abfrage von: " + url, "warn"); } }); } schedule("*/10 * * * *", main); // alle 10 Minuten die Werte abfragen // Beim Skriptstart die Werte abfragen setTimeout(main,500); -
Ich hatte das Skript nachtr
ä
glich korrigiert (Zeile 3):var request = require('request');Ist das in Deinem Skript enthalten ? `
Kann es sein das durch das asyncrone verhalten von "request" das Object noch nicht geladen ist?
-
Kannst ja mal das probieren
…
// Easymeter auslesen var request = require('request'); var pfad = "Easymeter."; var idpower = pfad + "Leistung"; var idheute = pfad + "Ertrag-heute"; var idgestern = pfad + "Ertrag-gestern"; var url = 'http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx'; createState(idpower, 0, { desc: 'Momentanleistung', type: 'number', role: 'value', unit: 'W' }); createState(idheute, 0, { desc: 'Ertrag Tag', type: 'number', role: 'value', unit: 'kWh' }); createState(idgestern, 0, { desc: 'Ertrag Vortag', type: 'number', role: 'value', unit: 'kWh' }); function write(values){ log("Momentanleistung: " + values[2].value,"info"); log("Ertrag Tag: " + values[9].value,"info"); log("Ertrag Vortag: " + values[10].value,"info"); setState(idpower , values[2].value); setState(idheute , values[9].value); setState(idgestern, values[10].value); } function main() { request(url, function (err, state, body) { if(!err && state.statusCode == 200) { try{ var values = JSON.parse(body).billingData.values; setTimout(function(){ write(values)},100); } catch(e){ log(e + "parsen fehlgeschlagen"); } } else { log("Fehler: " + err + " bei Abfrage von: " + url, "warn"); } }); } schedule("*/10 * * * *", main); // alle 10 Minuten die Werte abfragen // Beim Skriptstart die Werte abfragen setTimeout(main,500); -
Hallo Zusammen,
danke f
ü
r die R
ü
ckmeldungen. Das Script von blauholsten bringt leider ebenfalls einen Fehler:javascript.0 2017-01-18 19:20:00.568 info javascript.0 script.js.Scripte.Easymeter_1: TypeError: Cannot read property 'values' of undefinedparsen fehlgeschlagen
javascript.0 2017-01-18 19:18:42.130 info script.js.Scripte.Easymeter_1: TypeError: Cannot read property 'values' of undefinedparsen fehlgeschlagen
Das aktualisierte Script von paul53 bringt folgende Logeintr
ä
gejavascript.0 2017-01-18 19:35:12.595 info terminating
javascript.0 2017-01-18 19:35:12.579 error at emitNone (events.js:72:20)
javascript.0 2017-01-18 19:35:12.579 error at IncomingMessage.g (events.js:260:16)
javascript.0 2017-01-18 19:35:12.579 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1001:12)
javascript.0 2017-01-18 19:35:12.579 error at Request.emit (events.js:169:7)
javascript.0 2017-01-18 19:35:12.579 error at emitOne (events.js:77:13)
javascript.0 2017-01-18 19:35:12.579 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1081:10)
javascript.0 2017-01-18 19:35:12.579 error at Request.emit (events.js:172:7)
javascript.0 2017-01-18 19:35:12.579 error at emitTwo (events.js:87:13)
javascript.0 2017-01-18 19:35:12.579 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22)
javascript.0 2017-01-18 19:35:12.579 error at Request._callback (script.js.Scripte.Easymeter_1_2:45:48)
javascript.0 2017-01-18 19:35:12.579 error TypeError: Cannot read property 'values' of undefined
javascript.0 2017-01-18 19:35:12.565 error uncaught exception: Cannot read property 'values' of undefined
Mach ich evt. selbst einen Fehler? F
ü
r das Verst
ä
ndnis kann mir evt. mal jemand erkl
ä
ren wie ich hier auf die values [2],[9] und [10] im Script komme wenn im JSON Output die gew
ü
nschten Werte an einer anderen Stelle stehen? Warum ist im JSON Output der Wert meistens "value" nur einmal "values" und im Script "values* .value Ist evt. da der Fehler oder liegt es an meinen Nichtwissen bez
ü
glich Javascript und JSON :?Danke und Gruß Michael -
EDIT: Bl
ö
dsinniger Post :oops: -
Mach ich evt. selbst einen Fehler? F
ü
r das Verst
ä
ndnis kann mir evt. mal jemand erkl
ä
ren wie ich hier auf die values [2],[9] und [10] im Script komme wenn im JSON Output die gew
ü
nschten Werte an einer anderen Stelle stehen? Warum ist im JSON Output der Wert meistens "value" nur einmal "values" und im Script "values* .value Ist evt. da der Fehler oder liegt es an meinen Nichtwissen bez
ü
glich Javascript und JSON :?Danke und Gruß Michael Hallo Michael, guck Dir mal die Zeile: ```` var billingData = result["billingData:"]; ```` aus meinem Code weiter oben im Post an. EFR hat da leider einen Doppelpunkt in das "billingData" gebastelt… Wenn Du es so löst, sollte es auch mit den anderen Beispielen klappen. Viele Grüße arndl `
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden