NEWS
Mehrfacher API-Aufruf bei request im Debug-Modus?
-
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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden