@rudiradi
Sorry bin neu hier.
Das sind die Daten per browser aus dem Fronius ausgelesen:
{
"Body" : {
"Data" : {
"Inverters" : {
"1" : {
"DT" : 1,
"P" : 0
}
},
"Site" : {
"BatteryStandby" : false,
"E_Day" : null,
"E_Total" : null,
"E_Year" : null,
"Meter_Location" : "grid",
"Mode" : "meter",
"P_Akku" : null,
"P_Grid" : 1053.3,
"P_Load" : -1053.3,
"P_PV" : 0.0,
"rel_Autonomy" : 0.0,
"rel_SelfConsumption" : null
},
"Version" : "12"
}
},
"Head" : {
"RequestArguments" : {},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2021-11-08T16:25:08+00:00"
}
}
Das ist mein modifizierter Script zum auslesen der JSON Daten:
var request = require("request");
var myJson = {};
var pfad = "Fronius_Symo_Hybrid.";
var idP_Akku = pfad + "P_Akku";
var idP_Grid = pfad + "P_Grid";
var idP_Load = pfad + "P_Load";
var idP_PV = pfad + "P_PV";
createState(idP_Akku, 0, {
name: 'Leistung Akku',
desc: 'Leistung Akku',
type: 'number',
role: 'value',
unit: 'W'
});
createState(idP_Grid, 0, {
name: 'Leistung Netz',
desc: 'Leistung Netz',
type: 'number',
role: 'value',
unit: 'W'
});
createState(idP_Load, 0, {
name: 'Leistung Haus',
desc: 'Leistung Haus',
type: 'number',
role: 'value',
unit: 'W'
});
createState(idP_PV, 0, {
name: 'Leistung PV',
desc: 'Leistung PV',
type: 'number',
role: 'value',
unit: 'W'
});
function parseJson(text) {
var json ;
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://192.168.2.211/solar_api/v1/GetPowerFlowRealtimeData.fcgi';
function main() {
readJson(url, function(err,json) {
if(!err) {
myJson = json;
//console.log(myJson.Body.Data.Site.P_Load);
//setState(idP_Akku ,myJson.Body.Data.Site.P_Akku);
setState(idP_Grid ,myJson.Body.Data.Site.P_Grid);
//setState(idP_Load ,myJson.Body.Data.Site.P_Load);
//setState(idP_PV ,myJson.Body.Data.Site.P_PV);
} else {
log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
myJson = {};
}
});
}
//schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen
// main();
//});
//alle 10 sec abfragen
setInterval(main, 10000);
// Beim Skriptstart die Werte abfragen
setTimeout(main,500);
P_Load und P_PV sind auskommentiret da dort Warnungen kommen !?
Gruß Rudi