Besitzer einer Solaranlage haben in der Regel ja auch einen Datenlogger im Einsatz. Ich habe einen Solarlog 200 bei mir zuhause. Die Abfrage der Livewerte sollte aber auch bei allen anderen Modellen von Solar-Log funktionieren.
Das Solarlog besitzt ja eine sehr schöne grafische Webseite, über diese kann man sich auch alle Werte als JSON Objekte ausgeben lassen.
Jede ID steht für einen bestimmten Wert, hier ist eine Übersicht – diese findet ihr auch im Solarlog Handbuch.
<!-- Solar-Log Json Objekte ---- 100 - LastUpdateTime 101 - W Pac (Gesamtleistung) aller Zähler & WR 102 - W Pdc (Gestamtleistung aller WR) 103 - V Uac Durchschnittliche Spannung UAC der Wechselrichter 104 - V Durchschnittliche Spannung UDC der Wechselrichter 105 - Wh Durchschnittliche Spannung UDC der Wechselrichter 106 - Wh Summierter gestriger Tagesertrag aller Wechselrichter 107 - Wh Summiertes Monatsertrag aller WR 108 - Wh Summiertes Jahresertrag aller WR 109 - Wh Gesamtertrag aller Wechselrichter 110 - W momentaner Gesamtverbrauch PAC aller Verbauchszähler 111 - Wh Summierter Verbrauch aller Verbauchs-zähler 112 - Wh Summierter Verbrauch des gestrigen Tages; alle Verbauchszähler 113 - Wh Summierter Verbrauch des Monats; alle Verbauchszähler 114 - Wh Summierter Verbrauch des Jahres, alle Verbauchszähler 115 - Wh Summierter Gesamtverbrauch, alle Ver-bauchszähler 116 - Wp Installierte Generatorleistung -->
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":"21.09.14 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}}}
Wenn man das jetzt etwas anders formatiert sieht es schon besser aus:
{"801": {"170": {"100":"21.09.14 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} } }
direktes auslesen der daten per python function:
import json
import http.client
def GetSolarlogValue(IP, FieldNo):
params = ‚{„801“:{„170“:null}}‘
paramsbytes = params.encode(‚utf-8‘)
headers = {„Content-Type:“: „application/json“,
„Accept“: „text/plain“}
conn = http.client.HTTPConnection(IP)
conn.request(„POST“, „/getjp“, params, headers)
response = conn.getresponse()
data=response.read()
jsondata = json.loads(data.decode(‚utf-8‘))
FieldValue = jsondata[‚801‘][‚170‘][str(FieldNo)]
return FieldValue
Hallo Richie
echt tolle Lösung. Wie sieht die Lösung in JavaScript aus. Viele der Leser würden sicherlich lieber js nutzen oder?
Gruß
Franz
Bin dabei die JSON-ABfrage für MAC in eine Swift Applikation zu verwenden. Wie muss die komplette URL inkl. der Parmater aussehen?
192.168.177.24/getjp?{„801“:{„170“:null}} funktioniert leider nicht. SL meldet „{{„QUERY IMPOSSIBLE 000″}}“ zurück. Wie muss die URL lauten?
Danke
Rudolf
Hallo Rudolf,
ich weiß deine Anfrage ist lang her, aber hast du dein Problem damals gelöst. Ich möchte nämlich auch irgendwie die JSON-Schnittstelle meines SolarLog 300 irgendwie in ein Windows-System einlesen….
LG Gerhard
Hallo zusammen,
würde über diese Schnittstelle gerne in ein Windows-System die Daten einlesen. Hätte eine VB-Entwicklungsumgebung…
Jemand einen Tipp?
Schau mal hier: https://waidner-itsolutions.de/2012/11/webservices-mit-vba-ansprechen/
Hallo Constey,
erstmal vielen Dank für deine schnelle Antwort.
Damit ich sehe, ob meine SolarLog 300 überhaupt was über die JSON-Schnittstelle ausgibt, könnte ich in meinen Google-Chrome-Browser einen Befehl eingeben?
Der Befehl von weiter oben funktioniert bei mir auch nicht:
http://192.168.1.26//getjp?{„801“:{„170“:null}}
Als Antwort im Browser erscheint:
{{„QUERY IMPOSSIBLE 000“}}
Hallo Geri,
CURL gibt es auch für Windows, probier einfach den Aufruf ganz am Anfang des Artikel aus …
Hallo,
kennt jemand das Register jedes Inverter Gesamtenergie?
Vielen Dank,
Georgios