Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Mehrfacher API-Aufruf bei request im Debug-Modus?

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Mehrfacher API-Aufruf bei request im Debug-Modus?

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      andi112 last edited by

      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:

      https://monitoringapi.solaredge.com/equipment/{site}/{sn}/data?startTime=2023-04-10 00:00:00&endTime=2023-04-10 23:59:59&api_key={key}

      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

      1 Reply Last reply Reply Quote 0
      • M
        MCU last edited by MCU

        @andi112 evtl URL encoden?

        url = encodeURIComponent(url);
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        498
        Online

        31.6k
        Users

        79.5k
        Topics

        1.3m
        Posts

        2
        2
        171
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo