Ich habe das Script etwas angepasst - ich habe nur einen Micro-Inverter von FoxEss (Balkonkraftwerk, keine Batterie (deshalb SOC unnötig, und auch keine Lastmessung deshalb Load unnötig)
Da der kleine Wechselrichter auch die Erzeugung in kW ausgibt, habe ich das Round angepasst - es kommen dadurch "glatte" Wattwerte (nicht kW) ohne Komma in den Datenpunkt
[image: 1763375763629-14b37deb-eed3-4e1f-abd2-b94db89a25c7-grafik.png]
/*
Dieses Script ruft alle 2 Minuten die FoxESS Cloud über eine RestAPI auf und speichert die aufgerufenen Informationen
an die entsprechenden Objekte im IO-Broker.
*/
const https = require("https")
const crypto = require('crypto')
const token = "...."; /* Hier muss der API-Key aus der FoxESS Cloud eingefügt werden */
const sn = "...."; /* Hier muss die Seriennummer vom Inverter aus der FoxESS Cloud eingefügt werden */
schedule("*/2 * * * * ", async function () {
try {
const data = JSON.stringify({
"sn": sn,
"variables": [
"pvPower" /*, "generationPower", "SoC", "loadsPower" */
]
});
const path = "/op/v0/device/real/query";
const milliseconds = new Date().getTime();
const signature = crypto.createHash('md5').update(path + "\\r\\n" + token + "\\r\\n" + milliseconds).digest("hex");
const options = {
headers: {
"Content-Type": "application/json",
"token": token,
"timestamp": milliseconds,
"signature": signature,
"lang": "en"
},
hostname: "www.foxesscloud.com",
method: "POST",
path: path,
port: 443
}
const request = https.request(options, response => {
console.log('STATUS: ' + response.statusCode);
//response.setEncoding('utf8');
response.on("data", function (res) {
// console.log(res);
const datas = JSON.parse(res).result[0].datas;
console.log(datas[0]);
setState("0_userdata.0.FoxEss.PVPower", Math.round(datas[0].value * 1000), true);
//setState("0_userdata.0.FoxEss.SOC", datas[2].value, true);
//setState("0_userdata.0.FoxEss.Load", Math.round(datas[3].value * 1000) / 1000, true);
});
});
request.write(data);
request.end();
} catch (e) { console.error(e); }
});
Meine Planungen für weitere Ergänzungen am Script:
Tagesbudget an Queries sparsamer einsetzen
a) zwischen Dämmerungsende und Dämmerungsbeginn keine Werte über die API abfragen (da kann es keine Erträge geben).
b) bei niedrigen Erträgen ggfs. auch den Leserhythmus abschwächen.
Ertrag Vortag einmalig am Folgetag abfragen
Ertrag Vormonat einmalig am ersten Tag des Folgemonats abfragen.