NEDAP Wechselrichter JSON Daten in der CCU auswerten

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
norfer
Beiträge: 66
Registriert: 21.03.2014, 19:20
Hat sich bedankt: 2 Mal

NEDAP Wechselrichter JSON Daten in der CCU auswerten

Beitrag von norfer » 03.08.2018, 16:50

Hallo Fachleute,
ich möchte JSON-Daten, die ich von der Webseite von NEDAP herunterlade, in der CCU weiter verarbeiten. Leider gelingt mir das mit meinen rudimentären Kenntnissen nicht, obwohl ich einige Beispiele gefunden und daraus ein Script "gebastelt" habe.

Hintergrund:
Mein Solarwechselrichter von NEDAP gibt die aktuellen Daten nicht lokal am Gerät aus, sondern ich muss diese vom zentralen NEDAP-Rechner in Form eines JSON-Logs herunterladen:
{"logs":[{"time":"2018-08-03T16:47:00Z","time_received":"2018-08-03T14:47:44Z","platform_grid_power":-2703.0}]}


für mich ist der Wert "platform_grid_power -2703" interessant, weil er die Leistung am Netzsensor ausgibt.
Kann mir jemand zeigen, wie ich diesen Wert -2703 extrahieren und in eine CCU-Variable schreiben kann?

Mein Script-Versuch, der nicht funktioniert:

Code: Alles auswählen

!script zum importieren der webdaten mit Fehler
string stderr;
string stdout;
string answer;
!Website angeben - die Antwort kommt als string
string url="https://mypowerrouter.com/power_routers/12345/logs/1minutes.json?normalize_logs=true&platform_grid_power=true&responseContentDataType=json";
!mit wget den Inhalt der Antwort in stdout schreiben   
system.Exec("wget -q -O - "#url, &stdout, &stderr);
!stdout in die variable answer schreiben
answer = stdout;
!stringlänge des Inhalts von answer ermitteln
!integer length = answer.Length(); 
!foreach(summand, summanden.Split(","))
!answer=answer.Split("},{"));

var pow;
var zeitst;
var power;
var zeitstempel;
!Antwort power  in index 2
!Antwort Zeitcode in index 0
pow=(answer.StrValueByIndex(",", 2)); 
zeitst=(answer.StrValueByIndex(",",0));
WriteLine(pow); nur zum debuggen
WriteLine(zeitst); nur zum debuggen
power=pow.Substr(2,7);             !String an pos2 substituiern und 7 Stellen ausgeben
zeitstempel=zeitst.Substr(19,19);   !String an pos19 von vorne gezaehlt und 19 Stellen ausgeben
zeitst=zeitstempel.ToInteger();
zeitst=zeitst.ToTime();
pow=power.ToFloat();
dom.GetObject("Messzeitpunkt").State(zeitst); !Systemvariable muss vorher definiert sein
dom.GetObject("Messwert").State(rad); !Auch die Systemvariable  vorher anlegen
Die Webadresse liefert als Wert NULL zurück, weil die ID des Powerrouters ein Dummy ist.

Als Basis diente mir:
http://blog.fh-kaernten.at/ingmarsretro ... homematic/
viewtopic.php?f=18&t=26593&start=10#p283640 aber html
viewtopic.php?f=18&t=43201 Feinstaub JSON
https://support.homestatus.de/phpbb/vie ... =250#p1305 JSON von Energiemanager
https://www.technikkram.net/2017/05/zus ... c-auslesen

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“