Hallo zusammen,
ich möchte mir die Daten meiner PV-Anlage von der SolarEdge Monitoring-API abrufen und nutze dazu folgendes Adressschema für den HTTP-Request:
Wenn ich diese URL (natürlich mit meinen Daten) im Browser aufrufe, klappt das problemlos. Auch mehrfach.
Wenn ich die Daten per JS abrufen möchte und zum Entwickeln die Debug-Ausgabe aktiv habe, wird meine IP bei Solaredge sofort gesperrt und ich bekomme den Status 429 - too many requests.
Auch wenn ich das Skript nur 1x ausführe. Aufgefallen ist mir aber, dass, wenn ich den Debug-Modus deaktiviere, das Skript läuft, aber nichts zurückgibt, aber auch meinen Account nicht sperrt.
Das hier wäre ein Beispielskript, mit dem ich (im Debug-Modus) die Sperre provozieren kann:
const url = `https://monitoringapi.solaredge.com/equipment/${site}/${sn}/data?startTime=2023-04-10%2000:00:00&endTime=2023-04-10%2023:59:59&api_key=${apiKey}`;
const maxRetries = 3;
let retryCount = 0;
console.log(url)
function sendRequest() {
request(url, function (error, response, body) {
if (!error && response.statusCode === 200) {
const jsonResponse = JSON.parse(body);
const telemetries = jsonResponse.telemetries;
telemetries.forEach(telemetry => {
const date = telemetry.date;
const totalActivePower = telemetry.totalActivePower;
const dcVoltage = telemetry.dcVoltage;
const powerLimit = telemetry.powerLimit;
// Extrahiere weitere benötigte Daten
console.log('Datum:', date);
console.log('Gesamtleistung:', totalActivePower);
console.log('DC-Spannung:', dcVoltage);
console.log('Leistungsbegrenzung:', powerLimit);
console.log('---------------------------------');
});
} else if (response.statusCode === 429 && retryCount < maxRetries) {
// Too Many Requests, Retry nach einer Verzögerung
retryCount++;
const delaySeconds = retryCount * 5; // Erhöhe die Verzögerung mit jedem Versuch
console.log(`Zu viele Anfragen, erneuter Versuch nach ${delaySeconds} Sekunden...`);
setTimeout(sendRequest, delaySeconds * 1000);
} else {
console.error('Fehler bei der Anfrage:', error);
}
});
}
sendRequest();
Laut SolarEdge API-Doku sind am Tag 300 Requests zulässig und max. 3 gleichzeitig.
Die 300 habe ich sicher nicht (offensichtlich) erreicht, außer, der Debug-Modus verhält sich anders als ich das annehmen würde.
Das blöde ist, dass ich dann immer 1 Tag warten muss, bis ich den nächsten Versuch starten kann...
Hat da jemand eine Idee?
Besten Dank und viele Grüße
Andi