NEWS
Json verarbeiten
-
Hallo miteinander,
ich bin interessierter Laie/Anwender und würde gerne Werte meiner PV-Anlage in HM verarbeiten. Die Daten werden über den SolarLog300 bereitgestellt.
Diese Daten kann man wohl als JSON Objekte ausgeben.
Unter Linux kann man sich dann z.B. via Curl alle Werte ausgeben lassen:
curl -X POST -H "Content-Type: application/json" -d '{"801":{"170":null}}' 192.168.0.69/getjp
Der Befehl gibt bei mir folgende Rückgabe:
{"801":{"170":{"100":"11.11.16 16:32:15","101":257,"102":262,"103":0,"104":407,"105":19466,"106":30730,"107":822005,"108":12972119,"109":23174482,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":16800}}}
Laut Anleitung gibt es folgende JSON-Objekte
Ich habe aber gar keine Ahnung:
-wo (Adapter?/Skripte?)und wie ich den curl-Befehl in io.broker anwenden kann
-wie ich die Objekte in Variablen überführen kann, so dass ich
-die Werte später grafisch darstellen kann
-ich die Werte (in der CCU) nutzen kann, um Schaltvorgänge auszulösen.
Ich habe da also schon ganz am Anfang Probleme. Vielleicht hat jemand die Muße, mich in die richtige Richtung zu schubsen…
Danke und Grüße vom Niedrrhein
Little_tiger
-
-
Hallo,
hier eine Lösung für einen anderen Wechselrichter:
-
Hallo und danke für die Antworten!
Mir fehlt irgendwie der erste Schritt.
Muss ich den curl-Aufruf als Skript anlegen?
Mir fehlt gedanklich da die Verbindung.
Gruß
Little_tiger
Gesendet von iPhone mit Tapatalk
-
Hallo und danke für die Antworten!
Mir fehlt irgendwie der erste Schritt.
Muss ich den curl-Aufruf als Skript anlegen?
Mir fehlt gedanklich da die Verbindung. `
Was bekommst Du im Log, wenn Du folgendes probierst:
!
var abfrage = "curl -X POST -H \u0022Content-Type: application/json\u0022 -d '{\u0022801\u0022:{\u0022170\u0022:null}}' 192.168.0.69/getjp"; ! function abfrageStarten() { exec(abfrage, function(err, stdout, stderr) { if (err) { log("Error: " + err,"warn"); return; } log("Ausgabe: " + stdout); ! }); } ! log(abfrage); abfrageStarten(); !
ggf. bis zum timeout warten…
-
Hallo ruhr70!
Also, ich habe deinen Befehl als script eingefügt und gestartet. Das LOG zeigt die erhofften Daten! Supi!
javascript.0 script.js.Skript1: Ausgabe: {"801":{"170":{"100":"13.11.16 15:05:45","101":292,"102":210,"103":233,"104":526,"105":4535,"106":11778,"107":90177,"108":7482382,"109":12280141,"110":655,"111":15129,"112":27054,"113":313723,"114":6721113,"115":13248633,"116":9200}}}
Nun würde ich gerne die Daten verarbeiten, also z.B.: den Wert der aktuellen Erzeugung ("101":292) und des aktuellen Verbrauchs ("110":819) in eine Variable schreiben und dies dann regelmäßig…
-
Nun würde ich gerne die Daten verarbeiten, also z.B.: den Wert der aktuellen Erzeugung ("101":292) und des aktuellen Verbrauchs ("110":819) in eine Variable schreiben und dies dann regelmäßig… `
Versuche es mal so:var abfrage = "curl -X POST -H \u0022Content-Type: application/json\u0022 -d '{\u0022801\u0022:{\u0022170\u0022:null}}' 192.168.0.69/getjp"; createState("Erzeugung", 0); createState("Verbrauch", 0); function abfrageStarten() { exec(abfrage, function(err, stdout, stderr) { if (err) { log("Error: " + err,"warn"); return; } var pv = JSON.parse(stdout)["801"]["170"]; setState("Erzeugung", pv["101"]); setState("Verbrauch", pv["110"]); }); } setTimeout(abfrageStarten, 100); // Script start schedule("*/1 * * * *", abfrageStarten); // jede Minute
-
Hallo paul53,
Danke für deine Antwort. Es klappt, vielen Dank!
Gruß
Little_tiger