NEWS
Funktion zum auslesen der Leistungsdaten SMA WEBBOX
-
Hallo
Ich würde gerne aus den folgenden JSON String die Daten wie Tagesertrag auslesen. Wie muss die Funktion aussehen damit ich den Tagesertrag bekomme ?
{ "result": { "overview": [ { "meta": "GriPwr", "name": "Leistung", "unit": "W", "value": "0" }, { "meta": "GriEgyTdy", "name": "Tagesertrag", "unit": "kWh", "value": "29.667" }, { "meta": "GriEgyTot", "name": "Gesamtertrag", "unit": "kWh", "value": "28361.134" }, { "meta": "OpStt", "name": "Zustand", "value": "Ok, Ok, Ok" }, { "meta": "Msg", "name": "Meldung", "value": "" } ] }, "format": "JSON", "proc": "GetPlantOverview", "version": "1.0", "id": "1" }
-
Wie muss die Funktion aussehen damit ich den Tagesertrag bekomme ? `
var obj = { "result": { "overview": [ { "meta": "GriPwr", "name": "Leistung", "unit": "W", "value": "0" }, { "meta": "GriEgyTdy", "name": "Tagesertrag", "unit": "kWh", "value": "29.667" }, { "meta": "GriEgyTot", "name": "Gesamtertrag", "unit": "kWh", "value": "28361.134" }, { "meta": "OpStt", "name": "Zustand", "value": "Ok, Ok, Ok" }, { "meta": "Msg", "name": "Meldung", "value": "" } ] }, "format": "JSON", "proc": "GetPlantOverview", "version": "1.0", "id": "1" }; log(obj.result.overview[1].value); // Wert für Tagesertrag = 29.667Log:
` > 22:08:04.937 [info] javascript.1 Start javascript script.js.common.Tests22:08:04.937 [info] javascript.1 script.js.common.Tests: 29.667
22:08:04.937 [info] javascript.1 script.js.common.Tests: registered 0 subscriptions and 0 schedules `
-
Danke für die schnelle Antwort.
Ich meinte eine node-red Funktion.
1330_unbenannt.png -
Ich wollte die Objektstruktur besser sichtbar machen.
Von node-red habe ich keine Ahnung. Vielleicht so ?
return { payload: msg.payload.result.overview[1].value };oder so ?
return msg.result.overview[1].value ;oder, da die Ausgabe "msg.payload" ist, so ?
return { payload: msg.result.overview[1].value };Ich hoffe, dass eine der Varianten funktioniert ;)
-
Hat super funktioniert
hier die Lösung
msg1 = {};
msg1.payload = msg.payload.result.overview[0].value + " " + msg.payload.result.overview[0].unit;
msg2 = {};
msg2.payload = msg.payload.result.overview[1].value + " " + msg.payload.result.overview[1].unit;
msg3 = {};
msg3.payload = msg.payload.result.overview[2].value + " " + msg.payload.result.overview[2].unit ;
return [msg1,msg2,msg3];
mir ist noch unklar wie die Funktion aussehen müsste wenn der folgende String abgefragt wird.
{"result":{"devices":[{"channels":[{"meta":"Ipv","name":"DC Strom Eingang","unit":"A","value":"0"},{"meta":"Upv-Ist","name":"DC Spannung Eingang","unit":"V","value":"0"},{"meta":"WindVel m/s","name":"Windgeschwindigkeit","unit":"m/s","value":"2.4"},{"meta":"TmpAmb C","name":"Au\u00DFentemperatur","unit":"\u00B0C","value":"20.3"},{"meta":"IntSolIrr","name":"Einstrahlung","unit":"W/m^2","value":"75"},{"meta":"Fac","name":"Netzfrequenz","unit":"Hz","value":"0"},{"meta":"Iac-Ist","name":"Netzstrom","unit":"A","value":"0"},{"meta":"Pac","name":"Leistung","unit":"W","value":"0"},{"meta":"Riso","name":"Isolationswiderstand","unit":"Ohm","value":"0"},{"meta":"TmpMdul C","name":"Modultemperatur","unit":"\u00B0C","value":"22.3"},{"meta":"h-On","name":"Einspeisezeit","unit":"h","value":"0"},{"meta":"h-Total","name":"Betriebszeit","unit":"h","value":"0"},{"meta":"E-Total","name":"Gesamtertrag","unit":"kWh","value":"0"},{"meta":"Netz-Ein","name":"Anzahl Netzzuschaltungen","value":"0"}],"key":"0088:0000725b"}]},"format":"JSON","proc":"GetProcessData","version":"1.0","id":"1"}
-
Gib das json objekt doch mal hier in das Formular ein:
Dann wird es richtig formatiert und man sieht die Ebenen und Arrays für den Zugriff auf die Attribute.
Gesendet von meinem SM-G900F mit Tapatalk
-
Danke für den Tip.
es sind 2 Arrays wie fragt man die dann ab ? Ich würde dann gerne die Modultemperatur auslesen.
{
"result": {
"devices": [
{
"channels": [
{
"meta": "Ipv",
"name": "DC Strom Eingang",
"unit": "A",
"value": "0"
},
{
"meta": "Upv-Ist",
"name": "DC Spannung Eingang",
"unit": "V",
"value": "0"
},
{
"meta": "WindVel m/s",
"name": "Windgeschwindigkeit",
"unit": "m/s",
"value": "2.4"
},
{
"meta": "TmpAmb C",
"name": "Au\u00dfentemperatur",
"unit": "\u00b0C",
"value": "20.3"
},
{
"meta": "IntSolIrr",
"name": "Einstrahlung",
"unit": "W/m^2",
"value": "75"
},
{
"meta": "Fac",
"name": "Netzfrequenz",
"unit": "Hz",
"value": "0"
},
{
"meta": "Iac-Ist",
"name": "Netzstrom",
"unit": "A",
"value": "0"
},
{
"meta": "Pac",
"name": "Leistung",
"unit": "W",
"value": "0"
},
{
"meta": "Riso",
"name": "Isolationswiderstand",
"unit": "Ohm",
"value": "0"
},
{
"meta": "TmpMdul C",
"name": "Modultemperatur",
"unit": "\u00b0C",
"value": "22.3"
},
{
"meta": "h-On",
"name": "Einspeisezeit",
"unit": "h",
"value": "0"
},
{
"meta": "h-Total",
"name": "Betriebszeit",
"unit": "h",
"value": "0"
},
{
"meta": "E-Total",
"name": "Gesamtertrag",
"unit": "kWh",
"value": "0"
},
{
"meta": "Netz-Ein",
"name": "Anzahl Netzzuschaltungen",
"value": "0"
}
],
"key": "0088:0000725b"
}
]
},
"format": "JSON",
"proc": "GetProcessData",
"version": "1.0",
"id": "1"
}
-
Einfach durchhangeln. Z. B.
msg.payload.result.devices[0].channels [0].value
Wenn nur die Werte und Einheiten interessant sind, bleibt das erste Array konstant auf 0. Die Anzahl der Einträge im zweiten Array bekommt man mit msg.payload.result.devices[0].channels.length.
Jetzt kommt es drauf an, was mit den Werten passieren soll.
Gesendet von meinem GT-N8000 mit Tapatalk
-
Gib das json objekt doch mal hier in das Formular ein:
Dann wird es richtig formatiert und man sieht die Ebenen und Arrays für den Zugriff auf die Attribute.
Gesendet von meinem SM-G900F mit Tapatalk `
Ich benutze https://jsonformatter.org/json-pretty-print und https://codebeautify.org/jsonviewer
-
hast du es gelöst… ich bekomme leider noch nicht mal eine Rückmeldung von der Webbox, wäre schön wenn du mir da helfen könntest.
Danke
Danke für den Tip.
es sind 2 Arrays wie fragt man die dann ab ? Ich würde dann gerne die Modultemperatur auslesen.
{
"result": {
"devices": [
{
"channels": [
{
"meta": "Ipv",
"name": "DC Strom Eingang",
"unit": "A",
"value": "0"
},
{
"meta": "Upv-Ist",
"name": "DC Spannung Eingang",
"unit": "V",
"value": "0"
},
{
"meta": "WindVel m/s",
"name": "Windgeschwindigkeit",
"unit": "m/s",
"value": "2.4"
},
{
"meta": "TmpAmb C",
"name": "Au\u00dfentemperatur",
"unit": "\u00b0C",
"value": "20.3"
},
{
"meta": "IntSolIrr",
"name": "Einstrahlung",
"unit": "W/m^2",
"value": "75"
},
{
"meta": "Fac",
"name": "Netzfrequenz",
"unit": "Hz",
"value": "0"
},
{
"meta": "Iac-Ist",
"name": "Netzstrom",
"unit": "A",
"value": "0"
},
{
"meta": "Pac",
"name": "Leistung",
"unit": "W",
"value": "0"
},
{
"meta": "Riso",
"name": "Isolationswiderstand",
"unit": "Ohm",
"value": "0"
},
{
"meta": "TmpMdul C",
"name": "Modultemperatur",
"unit": "\u00b0C",
"value": "22.3"
},
{
"meta": "h-On",
"name": "Einspeisezeit",
"unit": "h",
"value": "0"
},
{
"meta": "h-Total",
"name": "Betriebszeit",
"unit": "h",
"value": "0"
},
{
"meta": "E-Total",
"name": "Gesamtertrag",
"unit": "kWh",
"value": "0"
},
{
"meta": "Netz-Ein",
"name": "Anzahl Netzzuschaltungen",
"value": "0"
}
],
"key": "0088:0000725b"
}
]
},
"format": "JSON",
"proc": "GetProcessData",
"version": "1.0",
"id": "1"
} `
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