NEWS
Flot Bar Tageswert
-
Hallo
Ich möchte die Tageserzeugung unserer Fronius im Flot anzeigen.
Aber er zeigt mir nicht 1 Bar, sondern x-Bars je Änderung!
Anbei meine Einstellungen!
Könnt ihr mir bitte helfen?

-
Leider sehe ich nicht, was du als Datenpunkt in Flot gewählt hast.
Glaskugelmodus:
Ich nehme aber an, dass es der in den Objekten ist.
Gehe dort mal auf den Schraubenschlüssel und sieh dir die geloggten Daten in der Tabelle an.
Dann weisst du auch warum das hier so aussieht ;-)
Gruß
Rainer
-
Ich nehme aber an, dass es der in den Objekten ist.
Gehe dort mal auf den Schraubenschlüssel und sieh dir die geloggten Daten in der Tabelle an.
Dann weisst du auch warum das hier so aussieht ;-) `
Ja, es ist der Datenpunkt in den Objekten vom Screenshot!
Dort wird auch 711 Wh als Wert angezeigt. Dies stimmt auch mit der PV überein!
Die geloggten Daten in der Tabelle sehen leider auch so wie im Flot aus!
Kann man das irgendwie zu einem Tagesverbrauch (der ja eigentlich eh die 711 Wh sind) umwandeln?
-
Kann man das irgendwie zu einem Tagesverbrauch (der ja eigentlich eh die 711 Wh sind) umwandeln? `
Ja!je nachdem wie du den Wert loggst, diesen nur einmal um 23:59 loggen
ODER:
Am Tagesende mit einem Script in einen anderen Datenpunkt schreiben und diesen loggen
Gruß
Rainer
-
je nachdem wie du den Wert loggst, diesen nur einmal um 23:59 loggen
ODER:
Am Tagesende mit einem Script in einen anderen Datenpunkt schreiben und diesen loggen `
Hallo Rainer!
Ach kacke, das wars doch nicht! :(
Gestern hat es einen Balken angezeigt, heute wieder mehrere Balken!
Kannst du mir Tipps geben, wie ich den Wert nur einmal um 23:59 loggen kann?
Danke
-
womit loggst du denn?
gibt es da eine Konfiguration?
oder einen Cron?
Wenn das alles nicht möglich ist musst du es mit einem Script/Blockly machen, das um 23:59 den aktuellen Wert von dem einen Datenpunkt in einen anderen schreibt.
Gruß
Rainer
-
womit loggst du denn?
gibt es da eine Konfiguration?
oder einen Cron?
Wenn das alles nicht möglich ist musst du es mit einem Script/Blockly machen, das um 23:59 den aktuellen Wert von dem einen Datenpunkt in einen anderen schreibt. `
Mit diesem Script komm ich an die Daten der PV:
var request = require("request"); var myJson = {}; var pfad = "Fronius_Symo_Hybrid."; var idDAY_ENERGY = pfad + "ENERGY_DAY"; var idPAC = pfad + "PAC"; var idYEAR_ENERGY = pfad + "ENERGY_YEAR"; var idTOTAL_ENERGY = pfad + "ENERGY_TOTAL"; createState(idDAY_ENERGY, 0, { name: 'Energie Tag', desc: 'Energie Tag', type: 'number', role: 'value', unit: 'Wh' }); createState(idPAC, 0, { name: 'Leistung', desc: 'Leistung', type: 'number', role: 'value', unit: 'W' }); createState(idYEAR_ENERGY, 0, { name: 'Energie Jahr', desc: 'Energie Jahr', type: 'number', role: 'value', unit: 'Wh' }); createState(idTOTAL_ENERGY, 0, { name: 'Energie Total', desc: 'Energie Total', type: 'number', role: 'value', unit: 'Wh' }); function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {}; } if(!json) json = {}; return json; } function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null); } }); } var url = 'http://10.0.1.90/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System'; function main() { readJson(url, function(err,json) { if(!err) { myJson = json; log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info"); log("PAC: " + myJson.Body.Data.PAC.Values[1],"info"); log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info"); log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info"); setState(idDAY_ENERGY ,myJson.Body.Data.DAY_ENERGY.Values[1]); setState(idPAC ,myJson.Body.Data.PAC.Values[1]); setState(idYEAR_ENERGY ,myJson.Body.Data.YEAR_ENERGY.Values[1]); setState(idTOTAL_ENERGY ,myJson.Body.Data.TOTAL_ENERGY.Values[1]); } else { log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn"); myJson = {}; } }); } schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen main(); }); // Beim Skriptstart die Werte abfragen setTimeout(main,500);Aufzeichnen lass ich es dann unter "Objekte" javascript.0.Fronius_Symo_Hybrid.ENERGY_DAY mit dem Schraubenschlüssel.

Leider sieht die Grafik dort auch so aus:

-
Geht doch! ;-)
Danke, damit kann ich helfen.
Mit diesem Script komm ich an die Daten der PV: `
und damit beantwortest du meine Frage:
@Homoran:gibt es da … einen Cron? `
den gibt es wie üblich fast ganz zum Schluss:
schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen main();dort werden alle 10 Minuten die Werte abgefragt.
ich habe jetzt das Skript nicht komplett angesehen (sondern nur nach dem Cron gesucht).
Wenn du wirklich NUR am Abend den einen Wert brauchst, kannst du diesen Cron umschreiben auf:
schedule("59 23 * * *", function () {Dann wird einmal um 23:59 der Wert ausgelesen.
Sollten da noch andere Werte ausgelesen werden, die du alle 10 Minuten brauchst müsste man das Skript kopieren und die jeweils relevanten Punkte zu den entsprechenden Zeiten abgefragt werden.
Gruß
Rainer
-
Sollten da noch andere Werte ausgelesen werden, die du alle 10 Minuten brauchst müsste man das Skript kopieren und die jeweils relevanten Punkte zu den entsprechenden Zeiten abgefragt werden. `
Danke dir herzlich!
Dann deaktiviere ich die anderen Werte im Script mit // und kopiere das ganze Script in ein neues.
Müsste dann mit diesen 2 Scripts passen?!
Leistung, Jahr, Total "alle 10 Minuten"
var request = require("request"); var myJson = {}; var pfad = "Fronius_Symo_Hybrid."; //var idDAY_ENERGY = pfad + "ENERGY_DAY"; var idPAC = pfad + "PAC"; var idYEAR_ENERGY = pfad + "ENERGY_YEAR"; var idTOTAL_ENERGY = pfad + "ENERGY_TOTAL"; //createState(idDAY_ENERGY, 0, { // name: 'Energie Tag', // desc: 'Energie Tag', // type: 'number', // role: 'value', // unit: 'Wh' //}); createState(idPAC, 0, { name: 'Leistung', desc: 'Leistung', type: 'number', role: 'value', unit: 'W' }); createState(idYEAR_ENERGY, 0, { name: 'Energie Jahr', desc: 'Energie Jahr', type: 'number', role: 'value', unit: 'Wh' }); createState(idTOTAL_ENERGY, 0, { name: 'Energie Total', desc: 'Energie Total', type: 'number', role: 'value', unit: 'Wh' }); function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {}; } if(!json) json = {}; return json; } function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null); } }); } var url = 'http://10.0.1.90/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System'; function main() { readJson(url, function(err,json) { if(!err) { myJson = json; log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info"); log("PAC: " + myJson.Body.Data.PAC.Values[1],"info"); log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info"); log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info"); setState(idDAY_ENERGY ,myJson.Body.Data.DAY_ENERGY.Values[1]); setState(idPAC ,myJson.Body.Data.PAC.Values[1]); setState(idYEAR_ENERGY ,myJson.Body.Data.YEAR_ENERGY.Values[1]); setState(idTOTAL_ENERGY ,myJson.Body.Data.TOTAL_ENERGY.Values[1]); } else { log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn"); myJson = {}; } }); } schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen main(); }); // Beim Skriptstart die Werte abfragen setTimeout(main,500);Tag immer um 23:59
var request = require("request"); var myJson = {}; var pfad = "Fronius_Symo_Hybrid."; var idDAY_ENERGY = pfad + "ENERGY_DAY"; //var idPAC = pfad + "PAC"; //var idYEAR_ENERGY = pfad + "ENERGY_YEAR"; //var idTOTAL_ENERGY = pfad + "ENERGY_TOTAL"; createState(idDAY_ENERGY, 0, { name: 'Energie Tag', desc: 'Energie Tag', type: 'number', role: 'value', unit: 'Wh' }); //createState(idPAC, 0, { // name: 'Leistung', // desc: 'Leistung', // type: 'number', // role: 'value', // unit: 'W' //}); //createState(idYEAR_ENERGY, 0, { // name: 'Energie Jahr', // desc: 'Energie Jahr', // type: 'number', // role: 'value', // unit: 'Wh' //}); //createState(idTOTAL_ENERGY, 0, { // name: 'Energie Total', // desc: 'Energie Total', // type: 'number', // role: 'value', // unit: 'Wh' //}); function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {}; } if(!json) json = {}; return json; } function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null); } }); } var url = 'http://10.0.1.90/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System'; function main() { readJson(url, function(err,json) { if(!err) { myJson = json; log("DAY_ENERGY: " + myJson.Body.Data.DAY_ENERGY.Values[1],"info"); log("PAC: " + myJson.Body.Data.PAC.Values[1],"info"); log("YEAR_ENERGY: " + myJson.Body.Data.YEAR_ENERGY.Values[1],"info"); log("TOTAL_ENERGY: " + myJson.Body.Data.TOTAL_ENERGY.Values[1],"info"); setState(idDAY_ENERGY ,myJson.Body.Data.DAY_ENERGY.Values[1]); setState(idPAC ,myJson.Body.Data.PAC.Values[1]); setState(idYEAR_ENERGY ,myJson.Body.Data.YEAR_ENERGY.Values[1]); setState(idTOTAL_ENERGY ,myJson.Body.Data.TOTAL_ENERGY.Values[1]); } else { log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn"); myJson = {}; } }); } schedule("59 23 * * *", function () { // täglich um 23 Uhr 59 Minuten main(); }); // Beim Skriptstart die Werte abfragen setTimeout(main,500);Kannst du bitte kurz drüberschaun?
Danke
-
Kannst du bitte kurz drüberschaun? `
Kann ich!
Hift dir aber nicht :lol:
Ich lebe auch nur von Copy, paste, try and error ;-)
Probiere es einfach aus und/oder warte bis sich hier jemand anderes meldet, der skripten kann.
Gruß
Rainer