4 e.open.online
Die e.open.online Schnittstelle dient zur Darstellung von Online Messwerte auf einen Bildschirm/TV als Präsentation bzw. als Großdisplay. Die Daten werden vom Datenlogger abgefragt und dieser schickt einen JSON String zurück. Dieser JSON String kann dann ausgewertet werden.
4.1 Verfügbare Daten
Wenn Sie die Seite ohne GET-Parameter aufrufen, erhalten Sie eine Liste über alle Parameter die abgefragt werden können.
http:///cgi-bin/cgi_get_data.cgi
Als Antwort bekommen Sie einen JSON-String mit allen Werten, die verfügbar sind.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "devices": [ { "id":12, "name": "WR 1", "bus_id": "2", "sn": "1234554", "typ": 1, "port": 1 }, { "id":13, "name": "WR 2", "bus_id": "3", "sn": "123455211114", "typ": 1, "port": 1 } ], "groups" : ["pv","get","supply","own","consumer","generator","totalconsumption"], "values" : ["name","p","e_day","e_total","dc","solar","temp","status","daygraph","monthgraph","yeargraph"] } |
4.2 GET DATA
4.2.1 Datenabfrage
Die Daten werden am Datenlogger abgefragt. D.h. die Geräte müssen sich im selben Netzwerk befinden.
Der Abfragezyklus sollte bei Onlinewerten nicht kleiner als 10 Sekunden betragen. Bei Messwerte wie z.B. daygraph, monthgraph oder yeargraph sollte der Abfragezyklus nicht kleiner als 5 Minuten sein. Wird dieser Wert unterschritten oder werden mehrere Abfragen parallel ausgeführt, kann dies die Funktion des Datenloggers beeinträchtigen.
Die Abfrage erfolgt über eine http/GET Verbindung:
http:///cgi-bin/cgi_get_data.cgi?name=wert,wert&name=wert…
Name
Als Name kann entweder eine Device-ID oder eine Gruppe angegeben werden.
Gruppenübersicht
Gruppe | Beschreibung |
pv | Summe aller Wechselrichter |
get | Summe aller Bezugszähler |
supply | Summe aller Einspeisezähler |
own | Summe aller Eigenverbrauchszähler |
consumer | Summe aller Verbrauchzähler |
generator | Summe aller Erzeuger (außer PV) |
totalconsumption | Summe aller Gesamtverbrauchszähler |
Device-ID
Jedes Gerät (Wechselrichter, Zähler, Sensor, …) besitzt eine eindeutige Device-ID und ist bei jedem Datenlogger unterschiedlich. Eine Übersicht über alle Device-IDs des Datenloggers erhalten Sie, wenn Sie die Seite ohne Parameter aufrufen.
http:///cgi-bin/cgi_get_data.cgi
Werte
Es muss mindestens ein Wert der abgefragt werden soll angegeben werden. Mehrere Werte werden mit einem Komma „,“ , Symbol verbunden.
Wert | Beschreibung | Datentyp | Einheit |
name | Name (bei Gruppenabfrage ist es der Gruppenname) | String | |
p | Aktuelle Leistung | Float | W |
e_day | Tagesertrag | Float | Wh |
e_total | Gesamtertrag | Float | Wh |
dc | Angeschlossene DC-Leistung | Float | Wp |
solar | Solarstrahlung | Float | W/m² |
temp | Temperatur (PT1000, PT100) | Float | °C |
status | Status (Relais) | Integer | |
daygraph[_YYYY-MM-DD] | 288 5-Minuten Messwerte | Array | Wh |
monthgraph[_YYYY-MM] | 31 Tagesmesswerte | Array | Wh |
yeargraph[_YYYY] | 12 Monatsmesswerte | Array | Wh |
Beispiel
http://<ip-adresse>/cgi-bin/cgi_get_data.cgi?pv=p,e_total,e_day&13=p,name,dc
4.2.2 Antwort
Als Antwort wird ein JSON String zurückgegeben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "datasets": [ { "id": "pv", "p" :1654, // Aktuelle Leistung der gesamten PV-Anlage in W "e_total" :1654441, // Gesamtertrag in Wh "e_day" :12546 // Tagesertrag in Wh }, { "id": "13", "p" :1654, // Aktuelle Leistung von WR 2 mit der Device-ID 13 in W "dc": 9860, // angeschlossen DC-Leistung von Device-ID 13 in Wp "name":"WR 2" // Name von Device-ID 13 } ] } |
4.2.3 Anwendungsbeispiel
In diesem Beispiel wird die aktuelle PV-Leistung, der Tagesertrag und der Gesamtertrag alle 10 Sekunden abgefragt und dargestellt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Display</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- jQuery einbinden --> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> function update() // Update Funktion: aktualisiert die Messwerte { $.ajax({ type: "GET", url: "http://192.168.2.10/cgi-bin/cgi_get_data.cgi", // URL des Datenloggers data: "pv=p,e_day,e_total", // Name und Werte der gewünschten Parameter cache: false, crossDomain: true, success: function(data) { var obj = jQuery.parseJSON(data); // parse JSON String $('#p').html(obj.pv.p.toString().replace(".",",")+" W"); // Aktuelle Leistung schreiben $('#e_day').html(obj.pv.e_day.toString().replace(".",",")+" Wh"); // Tagesertrag schreiben $('#e_total').html((obj.pv.e_total/1000).toString().replace(".",",")+" kWh"); // Gesamtertrag schreiben } }); } $( document ).ready(function() { update(); window.setInterval("update()", 10000); // Update Funktion alle 10000 ms => 10 Sekunden ausführen }); </script> </head> <body> <p>Aktuelle Leistung: <div id="p"></div></p> <p>Tagesertrag: <div id="e_day"></div></p> <p>Gesamtertrag: <div id="e_total"></div></p> </body> </html> |
4.2.4 Graph Messwerte
Die Abfrage gibt Ihnen die Möglichkeiten eigene Diagramme, z.B. mit jqPlot, zu erstellen.
Die Werte daygraph[_YYYY-MM-DD], monthgraph[_YYYY-MM] und yeargraph[_YYYY] dienen zur Abfrage von Archiv Messwerten. Die Angaben von Jahr (YYYY) Monat (MM) und Tag (DD) sind optional. Werden diese nicht angegeben wir der aktuelle Tag, Monat bzw. Jahr genommen.
Zusätzlich zu den Messwerte werden auch immer der Name, das Datum und die angeschlossene DC-Leistung mit übermitteln. So können Sie absolute und relative Verläufe, bzw. Balkendiagramme erstellen.
Bei daygraph (288), monthgraph(31), yeargraph(12) werden immer alle Datensätze übermittelt. Die leeren Datensätze werden mit 0 aufgefüllt. Der Benutzer muss selber überprüfen, ob der Monat nun 28, 29, 30 oder 31 Tage hat.
Abfrage
http:///cgi-bin/cgi_get_data.cgi?pv=yeargraph
Antwort
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "pv": { "time":"2013", "yeargraph" : [ { "name":"Solarmax 12", "dc":5160, "data" : [35010.71,145968.98,423741.33,578270.00,438288.85,0.00,0.00,0.00,0.00,0.00,0.00,0.00] }, { "name":"Solarmax 7", "dc":5400, "data" : [31785.21,134461.72,416113.14,577327.13,435487.13,0.00,0.00,0.00,0.00,0.00,0.00,0.00] } , { "name":"Solarmax 8", "dc":5400, "data" : [34366.29,137058.31,407999.79,585139.36,442332.15,0.00,0.00,0.00,0.00,0.00,0.00,0.00] } ] } } |
4.2.5 Beispieldateien
Auf dem Datenlogger befinden sich 2 Beispiel-Dateien
http://<ip-adresse>/display/1.htm und http://<ip-adresse>/display/2.htm
Die 1.htm wird auch in der Startseite auf dem Datenlogger als iFrame eingebunden.
4.3 SET DATA
4.3.1 Relais schalten
Der Befehl erfolgt über eine http/GET Verbindung:
http:///cgi-bin/cgi_set_data.cgi?[name|id]=[0|1]
Das Relais können Sie über den Namen oder über die ID ansprechen. Als Werte können Sie für „Aus“ eine „0“ bzw. für „Ein“ eine „1“ übergeben.
Sollten Sie den Namen verwenden, sollten Sie darauf achten, dass Sie keine Sonderzeichen benutzen und die Leerzeichen als ein „+“ angeben. Außerdem muss der Name eindeutig sein.
Beispiel:
Ausschalten:
http://<ip-adresse>/cgi-bin/cgi_set_data.cgi?Relais+1=0
Einschalten:
http://<ip-adresse>/cgi-bin/cgi_set_data.cgi?Relais+1=1
4.3.2 Antwort
Als Antwort erhalten Sie einen JSON String mit name und status zurück.
1 2 3 4 5 6 7 8 |
{ "set": [ { "name": "Relais 1", "status": "1" } ] } |