Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Helium API per GET abrufen (incl. User-Agent)

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    362

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Helium API per GET abrufen (incl. User-Agent)

Geplant Angeheftet Gesperrt Verschoben JavaScript
33 Beiträge 8 Kommentatoren 5.1k Aufrufe 8 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Stephan SporbertS Stephan Sporbert

    Hallo,

    Kann es villeicht jemand erklären?

    Ich würde gerne die Erträge von meinem Hotspot in einen datenpunkt schreiben

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von
    #7

    @stephan-sporbert

    was meinst du mit erklären?

    axios ist eine bibliothek, mit der man http-abfragen machen kann und alles mögliche im detail vorgeben kann.
    Beschreibung von axios: https://github.com/axios/axios

    welche vorgaben man machen muss hängt dann von der konkreten api-beschreibung des anbieters ab.
    je nachdem was man machen will gibt es verschiedenene methoden
    hier wirt die http-get methode verwendet(der standard bei http wenn du daten abrufst)
    dazu benötigst du eine url.
    im ersten post siehst du einen langen string, eine intrnetadresse, mit irgendwelchen daten dran. das muss dir aber der anbieter geben oder er muss anweisungen haben, wie man diese url bildet. darin verbirgt sich (entweder in klarschrift oder wie hier verschlüsselt, was du genau abrufen willst.)
    wenn du eine api beschreibung hier verlinken kannst, kann man dir weiterhelfen.

    im obigen problem ging es nur darum, das der user-agent mit angegeben werden soll und es aber zuerst nicht richtig funktioniert hat

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    1 Antwort Letzte Antwort
    0
    • Stephan SporbertS Stephan Sporbert

      Hallo,

      Kann es villeicht jemand erklären?

      Ich würde gerne die Erträge von meinem Hotspot in einen datenpunkt schreiben

      Stephan SporbertS Offline
      Stephan SporbertS Offline
      Stephan Sporbert
      schrieb am zuletzt editiert von Stephan Sporbert
      #8

      @stephan-sporbert

      @oliverio said in Helium API per GET abrufen (incl. User-Agent):

      @stephan-sporbert

      was meinst du mit erklären?

      axios ist eine bibliothek, mit der man http-abfragen machen kann und alles mögliche im detail vorgeben kann.
      Beschreibung von axios: https://github.com/axios/axios

      welche vorgaben man machen muss hängt dann von der konkreten api-beschreibung des anbieters ab.
      je nachdem was man machen will gibt es verschiedenene methoden
      hier wirt die http-get methode verwendet(der standard bei http wenn du daten abrufst)
      dazu benötigst du eine url.
      im ersten post siehst du einen langen string, eine intrnetadresse, mit irgendwelchen daten dran. das muss dir aber der anbieter geben oder er muss anweisungen haben, wie man diese url bildet. darin verbirgt sich (entweder in klarschrift oder wie hier verschlüsselt, was du genau abrufen willst.)
      wenn du eine api beschreibung hier verlinken kannst, kann man dir weiterhelfen.

      im obigen problem ging es nur darum, das der user-agent mit angegeben werden soll und es aber zuerst nicht richtig funktioniert hat

      Hallo oliverio,
      danke für deine Antwort,

      das Problem ist immer wenn man nicht weiß wo man hin will.
      ich hab das Script jetzt mal an meine bedürfnisse angepasst im log erscheinen die werte auch braf, ich würde sie gerne in einen Datenpunkt schreiben, bekomme es aber absolut nicht hin.

      var axios = require("axios");
      var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
       
      async function test() {
          log((await getData()).total);
          log((await getData()).stddev);
          log((await getData()).avg);
      }
       
      async function getData() {
          try {
              let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
              return res.data.data;
          } catch (e) {
              log(e)
          }
      }
      test();
      

      angezigt im log wird dann

      14:36:40.520	info	javascript.0 (24320) script.js.common.HNT#: registered 0 subscriptions and 0 schedules
      14:36:40.678	info	javascript.0 (24320) script.js.common.HNT#: 0.2599506
      14:36:40.737	info	javascript.0 (24320) script.js.common.HNT#: 0.017530848148
      14:36:40.799	info	javascript.0 (24320) script.js.common.HNT#: 0.02166255
      
      1 Antwort Letzte Antwort
      0
      • Stephan SporbertS Offline
        Stephan SporbertS Offline
        Stephan Sporbert
        schrieb am zuletzt editiert von
        #9

        @oliverio
        Hallo oliverio,
        danke für deine Antwort,

        das Problem ist immer wenn man nicht weiß wo man hin will.
        ich hab das Skript jetzt mal an meine Bedürfnisse angepasst im log erscheinen die werte auch brav, ich würde sie gerne in einen Datenpunkt schreiben, bekomme es aber absolut nicht hin.

        var axios = require("axios");
        var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
         
        async function test() {
            log((await getData()).total);
            log((await getData()).stddev);
            log((await getData()).avg);
        }
         
        async function getData() {
            try {
                let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                return res.data.data;
            } catch (e) {
                log(e)
            }
        }
        test();
        

        angezeigt im log wird dann

        14:36:40.520	info	javascript.0 (24320) script.js.common.HNT#: registered 0 subscriptions and 0 schedules
        14:36:40.678	info	javascript.0 (24320) script.js.common.HNT#: 0.2599506
        14:36:40.737	info	javascript.0 (24320) script.js.common.HNT#: 0.017530848148
        14:36:40.799	info	javascript.0 (24320) script.js.common.HNT#: 0.02166255
        

        OliverIOO 1 Antwort Letzte Antwort
        0
        • Stephan SporbertS Stephan Sporbert

          @oliverio
          Hallo oliverio,
          danke für deine Antwort,

          das Problem ist immer wenn man nicht weiß wo man hin will.
          ich hab das Skript jetzt mal an meine Bedürfnisse angepasst im log erscheinen die werte auch brav, ich würde sie gerne in einen Datenpunkt schreiben, bekomme es aber absolut nicht hin.

          var axios = require("axios");
          var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
           
          async function test() {
              log((await getData()).total);
              log((await getData()).stddev);
              log((await getData()).avg);
          }
           
          async function getData() {
              try {
                  let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                  return res.data.data;
              } catch (e) {
                  log(e)
              }
          }
          test();
          

          angezeigt im log wird dann

          14:36:40.520	info	javascript.0 (24320) script.js.common.HNT#: registered 0 subscriptions and 0 schedules
          14:36:40.678	info	javascript.0 (24320) script.js.common.HNT#: 0.2599506
          14:36:40.737	info	javascript.0 (24320) script.js.common.HNT#: 0.017530848148
          14:36:40.799	info	javascript.0 (24320) script.js.common.HNT#: 0.02166255
          

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #10

          @stephan-sporbert
          du musst dann auch den Befehl verwenden, der es in einen Datenpunkt schreibt.
          der datenpunkt muss zuvor angelegt werden. am besten Number
          und der datenpunktname dann bei dp anpassen.

          var dp = "javascript.0.test";
          var axios = require("axios");
          var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
           
          async function test() {
              log((await getData()).total);
          }
          async function writeValue() {
              setState(dp,(await getData()).total);
          }
          async function getData() {
              try {
                  let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                  return res.data.data;
              } catch (e) {
                  log(e)
              }
          }
           
          //test();
          writeValue();
          

          wenn du mehr wie einen Wert schreiben möchtest, dann würde ich dein Skript ebenfalls noch ein wenig anpassen. Da so 3 Anfragen an den Server rausgehen, obwohl du jedesmal die gleichen Daten erhälst

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          Stephan SporbertS 1 Antwort Letzte Antwort
          1
          • OliverIOO OliverIO

            @stephan-sporbert
            du musst dann auch den Befehl verwenden, der es in einen Datenpunkt schreibt.
            der datenpunkt muss zuvor angelegt werden. am besten Number
            und der datenpunktname dann bei dp anpassen.

            var dp = "javascript.0.test";
            var axios = require("axios");
            var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
             
            async function test() {
                log((await getData()).total);
            }
            async function writeValue() {
                setState(dp,(await getData()).total);
            }
            async function getData() {
                try {
                    let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                    return res.data.data;
                } catch (e) {
                    log(e)
                }
            }
             
            //test();
            writeValue();
            

            wenn du mehr wie einen Wert schreiben möchtest, dann würde ich dein Skript ebenfalls noch ein wenig anpassen. Da so 3 Anfragen an den Server rausgehen, obwohl du jedesmal die gleichen Daten erhälst

            Stephan SporbertS Offline
            Stephan SporbertS Offline
            Stephan Sporbert
            schrieb am zuletzt editiert von Stephan Sporbert
            #11

            @oliverio
            Wahnsinn, danke!
            mal sehen ob ich das hin bekomme, ich hab noch nie mit Javascript gearbeitet

            OliverIOO 1 Antwort Letzte Antwort
            0
            • Stephan SporbertS Stephan Sporbert

              @oliverio
              Wahnsinn, danke!
              mal sehen ob ich das hin bekomme, ich hab noch nie mit Javascript gearbeitet

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von
              #12

              @stephan-sporbert

              var dp1 = "javascript.0.test1";
              var dp2 = "javascript.0.test2";
              var axios = require("axios");
              var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
               
              async function test() {
                  var data = await getData();
                  log(data.total);
                  log(data.stddev);
                  
              }
              async function writeValue() {
                  var data = await getData();
                  log(data);
                  setState(dp1,data.total);
                  setState(dp2,data.stddev);
              }
              async function getData() {
                  try {
                      let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                      return res.data.data;
                  } catch (e) {
                      log(e)
                  }
              }
               
              //test();
              writeValue();
              

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              Stephan SporbertS 1 Antwort Letzte Antwort
              1
              • OliverIOO OliverIO

                @stephan-sporbert

                var dp1 = "javascript.0.test1";
                var dp2 = "javascript.0.test2";
                var axios = require("axios");
                var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                 
                async function test() {
                    var data = await getData();
                    log(data.total);
                    log(data.stddev);
                    
                }
                async function writeValue() {
                    var data = await getData();
                    log(data);
                    setState(dp1,data.total);
                    setState(dp2,data.stddev);
                }
                async function getData() {
                    try {
                        let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                        return res.data.data;
                    } catch (e) {
                        log(e)
                    }
                }
                 
                //test();
                writeValue();
                
                Stephan SporbertS Offline
                Stephan SporbertS Offline
                Stephan Sporbert
                schrieb am zuletzt editiert von Stephan Sporbert
                #13

                @oliverio
                Klasse, es funktioniert.

                Ich danke dir von Herzen :+1: :+1:

                wenn ich das jetzt aller 30minausführen will

                 // Alle 30 Minunten das skript ausführen
                schedule('*/30 * * * *', javascript.0.test);
                

                oder bin ich absolut auf dem Holzweg?

                1 Antwort Letzte Antwort
                0
                • OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #14

                  @stephan-sporbert
                  nicht ganz,
                  musste selbst nachschauen, da ich kein schedule aktuell verwende und auch nicht mit async

                  das unten angegebene schedule ruft immer zur 0ten und zur 30igsten Minute die Funktion auf. Für andere Werte kannst du den assistenten im Skripteditor verwenden (uhrenicon oben rechts)

                  müsste aber wie folgt funktionieren

                  
                  var dp1 = "javascript.0.test1";
                  var dp2 = "javascript.0.test2";
                  var axios = require("axios");
                  var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                   
                  async function writeValue() {
                      var data = await getData();
                      log(data);
                      setState(dp1,data.total);
                      setState(dp2,data.stddev);
                  }
                  async function getData() {
                      try {
                          let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                          return res.data.data;
                      } catch (e) {
                          log(e)
                      }
                  }
                   
                  schedule('*/30 * * * *',function() {
                      writeValue();
                  });
                  
                  

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  Stephan SporbertS 1 Antwort Letzte Antwort
                  1
                  • OliverIOO OliverIO

                    @stephan-sporbert
                    nicht ganz,
                    musste selbst nachschauen, da ich kein schedule aktuell verwende und auch nicht mit async

                    das unten angegebene schedule ruft immer zur 0ten und zur 30igsten Minute die Funktion auf. Für andere Werte kannst du den assistenten im Skripteditor verwenden (uhrenicon oben rechts)

                    müsste aber wie folgt funktionieren

                    
                    var dp1 = "javascript.0.test1";
                    var dp2 = "javascript.0.test2";
                    var axios = require("axios");
                    var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                     
                    async function writeValue() {
                        var data = await getData();
                        log(data);
                        setState(dp1,data.total);
                        setState(dp2,data.stddev);
                    }
                    async function getData() {
                        try {
                            let res = await axios.get(v_url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                            return res.data.data;
                        } catch (e) {
                            log(e)
                        }
                    }
                     
                    schedule('*/30 * * * *',function() {
                        writeValue();
                    });
                    
                    
                    Stephan SporbertS Offline
                    Stephan SporbertS Offline
                    Stephan Sporbert
                    schrieb am zuletzt editiert von
                    #15

                    @oliverio

                    alles funktioniert, wirklich beeindruckend.

                    Ich danke dir

                    1 Antwort Letzte Antwort
                    0
                    • Stephan SporbertS Offline
                      Stephan SporbertS Offline
                      Stephan Sporbert
                      schrieb am zuletzt editiert von
                      #16

                      Hier lässt sich die API Dokumentation übrigens finden

                      Klick

                      1 Antwort Letzte Antwort
                      0
                      • U Offline
                        U Offline
                        Unbekannt
                        schrieb am zuletzt editiert von
                        #17

                        Erstmal vielen Dank für eure Vorarbeit. Das hat mir schon mal weitergeholfen.
                        Ich möchte gerne die Rewards der letzten 24h, 7 Tage & 30 Tage auslesen und das in das o.g. Skript einbauen.

                        Laut API kann ich das wie folgt abfragen

                        https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-1%20day
                        https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-7%20day
                        https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-30%20day
                        

                        Ich könnte das o.g. Skript auch drei mal kopieren und den Link tauschen, aber ich schätze, das geht auch so, dass alle vier Links in einem Skript abgefragt werden, leider habe ich davon keine Ahnung. Kann mir hierbei jemand helfen?

                        Gruß Markus

                        1 Antwort Letzte Antwort
                        0
                        • OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von OliverIO
                          #18

                          @unbekannt

                          ich habe dir den code ein wenig umgestellt.
                          jetzt kannst du einfach die funktion writeValueOverview kopieren
                          neu einfügen, einen neuen Namen geben und die Parameter
                          konfigurieren.
                          Befasse dich mal mit jeder einzelnen Zeile, dann wirst du auch das extrahieren der Daten aus einem JSON-Objekt gut hinbekommen.
                          Im vorliegenden Beispiel erhälst du ein javascriptobjekt zurück.
                          dieses objekt hat sogenannte properties oder eigenschaften.
                          das sind eigentlich nix anderes wie variable, die zusammengefasst sind.
                          daher kannst du total mit
                          data.total
                          und die standardabweichung mit
                          data.stddev
                          adressieren.
                          die struktur ist aber je api aufruf anders und du musst in der doku nachschauen oder, das was da auf der console ausgegeben wird.

                          Problem bei rewards ist, das da eine Liste zurückkommt und nicht ein einzelner Wert

                          Return the last 7 days of rewards bucketed by day

                          Was willst du mit der Liste machen?

                           
                          var axios = require("axios");
                           
                          async function writeValueOverview() {
                              var dp1 = "javascript.0.test1";
                              var dp2 = "javascript.0.test2";
                              var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                          
                              var data = await getData(url); //abruf der daten
                              log(data);  // ausgabe des ergebnisses auf der debug-console
                              setState(dp1,data.total); // schreiben der summe in datenpunkt
                              setState(dp2,data.stddev);  // schreiben der standardabweichung in datenpunkt
                          }
                          
                          async function writeValueReward1() {
                              var dp1 = "javascript.0.reward1";
                              var url = 'https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-1%20day'
                          
                              var data = await getData(url); //abruf der daten
                              log(data);  // ausgabe des ergebnisses auf der debug-console
                              setState(dp1,data.??); // schreiben des rewards in datenpunkt
                          }
                          async function writeValueReward2() {
                              var dp1 = "javascript.0.reward2";
                              var url = 'https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-7%20day'
                          
                              var data = await getData(url); //abruf der daten
                              log(data);  // ausgabe des ergebnisses auf der debug-console
                              setState(dp1,data.??); // schreiben des rewards in datenpunk
                          datenpunkt
                          }
                          
                          async function getData(url) {
                              try {
                                  let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                  return res.data.data;
                              } catch (e) {
                                  log(e)
                              }
                          }
                           
                          schedule('*/30 * * * *',function() {
                              writeValueOverview();
                              writeValueReward1();
                              writeValueReward2();
                          });
                           
                          
                          

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          U 1 Antwort Letzte Antwort
                          0
                          • OliverIOO OliverIO

                            @unbekannt

                            ich habe dir den code ein wenig umgestellt.
                            jetzt kannst du einfach die funktion writeValueOverview kopieren
                            neu einfügen, einen neuen Namen geben und die Parameter
                            konfigurieren.
                            Befasse dich mal mit jeder einzelnen Zeile, dann wirst du auch das extrahieren der Daten aus einem JSON-Objekt gut hinbekommen.
                            Im vorliegenden Beispiel erhälst du ein javascriptobjekt zurück.
                            dieses objekt hat sogenannte properties oder eigenschaften.
                            das sind eigentlich nix anderes wie variable, die zusammengefasst sind.
                            daher kannst du total mit
                            data.total
                            und die standardabweichung mit
                            data.stddev
                            adressieren.
                            die struktur ist aber je api aufruf anders und du musst in der doku nachschauen oder, das was da auf der console ausgegeben wird.

                            Problem bei rewards ist, das da eine Liste zurückkommt und nicht ein einzelner Wert

                            Return the last 7 days of rewards bucketed by day

                            Was willst du mit der Liste machen?

                             
                            var axios = require("axios");
                             
                            async function writeValueOverview() {
                                var dp1 = "javascript.0.test1";
                                var dp2 = "javascript.0.test2";
                                var v_url = 'https://api.helium.io/v1/hotspots/112gJzabaVykY8hvNgZcgSU2pJ5YkjHi7QUST9i9ugtofoXQfkEc/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                            
                                var data = await getData(url); //abruf der daten
                                log(data);  // ausgabe des ergebnisses auf der debug-console
                                setState(dp1,data.total); // schreiben der summe in datenpunkt
                                setState(dp2,data.stddev);  // schreiben der standardabweichung in datenpunkt
                            }
                            
                            async function writeValueReward1() {
                                var dp1 = "javascript.0.reward1";
                                var url = 'https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-1%20day'
                            
                                var data = await getData(url); //abruf der daten
                                log(data);  // ausgabe des ergebnisses auf der debug-console
                                setState(dp1,data.??); // schreiben des rewards in datenpunkt
                            }
                            async function writeValueReward2() {
                                var dp1 = "javascript.0.reward2";
                                var url = 'https://api.helium.io/v1/hotspots/HOTSPOT_ID/rewards/sum/?min_time=-7%20day'
                            
                                var data = await getData(url); //abruf der daten
                                log(data);  // ausgabe des ergebnisses auf der debug-console
                                setState(dp1,data.??); // schreiben des rewards in datenpunk
                            datenpunkt
                            }
                            
                            async function getData(url) {
                                try {
                                    let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                    return res.data.data;
                                } catch (e) {
                                    log(e)
                                }
                            }
                             
                            schedule('*/30 * * * *',function() {
                                writeValueOverview();
                                writeValueReward1();
                                writeValueReward2();
                            });
                             
                            
                            
                            U Offline
                            U Offline
                            Unbekannt
                            schrieb am zuletzt editiert von
                            #19

                            @oliverio
                            Vielen Dank.
                            Im Grunde möchte ich nur vier Datenobjekte mit Daten füttern:

                            • Walletguthaben

                            • HNT letzte 24h

                            • HNT letzte 7 Tage

                            • HNT letzte 30 Tage

                            Bei meinen urls nutze ich die Bucketfunktion nicht, sondern bekomme nur eine Zeile wo ich dann den data.total Wert abgreifen kann.

                            Ich habe gestern ein wenig rum getestet und festgestellt, dass sich das Skript (oder API oder was auch immer ) bei zu vielen gleichzeitigen Abrufen verschluckt und der Wert data.total dann bei einem der Datenpunkte (variiert meist) nicht ausgelesen werden kann. Manchmal geht es gut, und man bekommt alle vier Daten ausgelesen, häufig waren es aber nur 3. Daher habe ich einen Timeout eingebaut. Damit funktioniert es zuverlässig.
                            Zum Testen habe ich als Basis dein erstes Skript genutzt, aber auch dein zuletzt gepostetes Skript für meine Bedürfnisse angepasst.

                            Skript1

                            var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.Total";
                            var dp2 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte24Stunden";
                            var dp3 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte7Tage";
                            var dp4 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte30Tage";
                            var axios = require("axios");
                            var v_url1 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                            var v_url2 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day' 
                            var v_url3 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'
                            var v_url4 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-30%20day'
                            setTimeout(async function writeValue1() {
                                   var data = await getData1();
                                   log(data);
                                   setState(dp1,data.total);
                               },1000);
                            async function getData1() {
                               try {
                                   let res = await axios.get(v_url1, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            setTimeout(async function writeValue2() {
                                   var data = await getData2();
                                   log(data);
                                   setState(dp2,data.total);
                               },2000);
                            async function getData2() {
                               try {
                                   let res = await axios.get(v_url2, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            setTimeout(async function writeValue3() {
                                   var data = await getData3();
                                   log(data);
                                   setState(dp3,data.total);
                               },3000);
                            async function getData3() {
                               try {
                                   let res = await axios.get(v_url3, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            setTimeout(async function writeValue4() {
                                   var data = await getData4();
                                   log(data);
                                   setState(dp4,data.total);
                               },4000);
                            async function getData4() {
                               try {
                                   let res = await axios.get(v_url4, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            schedule('*/30 * * * *',function() {
                               writeValue1();
                               writeValue2();
                               writeValue3();
                               writeValue4();
                            }); 
                            //test();
                            writeValue1();
                            writeValue2();
                            writeValue3();
                            writeValue4();
                            

                            Skript2

                            var axios = require("axios");
                            
                            setTimeout(async function writeValueOverview() {
                               var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.Total";
                               var url1 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2022-08-01T00:00:01Z'
                            
                               var data = await getData(url1); //abruf der daten
                               log(data);  // ausgabe des ergebnisses auf der debug-console
                               setState(dp1,data.total); // schreiben der summe in datenpunkt
                            }, 1000);
                            setTimeout(async function writeValueReward1() {
                               var dp2 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte24Stunden";
                               var url2 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-1%20day'
                            
                               var data = await getData(url2); //abruf der daten
                               log(data);  // ausgabe des ergebnisses auf der debug-console
                               setState(dp2,data.total); // schreiben des rewards in datenpunkt
                            }, 2000);
                            setTimeout(async function writeValueReward2() {
                               var dp3 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte7Tage";
                               var url3 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-7%20day'
                            
                               var data = await getData(url3); //abruf der daten
                               log(data);  // ausgabe des ergebnisses auf der debug-console
                               setState(dp3,data.total); // schreiben des rewards in datenpunk
                            }, 3000);
                            setTimeout(async function writeValueReward3() {
                               var dp4 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte30Tage";
                               var url4 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-30%20day'
                            
                               var data = await getData(url4); //abruf der daten
                               log(data);  // ausgabe des ergebnisses auf der debug-console
                               setState(dp4,data.total); // schreiben des rewards in datenpunk
                            }, 4000);
                            async function getData(url1) {
                               try {
                                   let res = await axios.get(url1, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            async function getData(url2) {
                               try {
                                   let res = await axios.get(url2, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            async function getData(url3) {
                               try {
                                   let res = await axios.get(url3, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            }
                            async function getData(url4) {
                               try {
                                   let res = await axios.get(url4, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                   return res.data.data;
                               } catch (e) {
                                   log(e)
                               }
                            } 
                            schedule('*/30 * * * *',function() {
                               writeValueOverview();
                               writeValueReward1();
                               writeValueReward2();
                               writeValueReward3();
                            });
                            //test(); 
                            writeValueOverview();
                            writeValueReward1();
                            writeValueReward2();
                            writeValueReward3(); 
                            

                            Bei beiden funktioniert das Auslesen gut, allerdings bekomme ich jeweils drei Fehlerzeilen angezeigt, die ich (wahrscheinlich aus fehlendem Basiswissen) nicht behoben bekomme:

                            17.8.2022, 09:48:06.431 [info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare
                            17.8.2022, 09:48:06.479 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: registered 0 subscriptions and 1 schedule
                            17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: ReferenceError: writeValue1 is not defined
                            17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare:69:1
                            17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare:73:3
                            17.8.2022, 09:48:07.658 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':1.39006203,'sum':139006203,'stddev':0.0096834757243116,'min':0,'median':0.00827458,'max':0,'avg':0.013113792735849056}
                            17.8.2022, 09:48:08.582 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.02237045,'sum':2237045,'stddev':0.0026280645619987,'min':0,'median':0.00729542,'max':0,'avg':0.007456816666666667}
                            17.8.2022, 09:48:09.582 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.26189041,'sum':26189041,'stddev':0.0094876854151907,'min':0,'median':0.00765452,'max':0,'avg':0.011386539565217391}
                            17.8.2022, 09:48:10.577 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.8288541,'sum':82885410,'stddev':0.0096992973232438,'min':0,'median':0.00748039,'max':0,'avg':0.012558395454545455}
                            
                            

                            Könntest du mir hierbei nochmal unter die Arme greifen?
                            Besten Dank :-)

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • U Unbekannt

                              @oliverio
                              Vielen Dank.
                              Im Grunde möchte ich nur vier Datenobjekte mit Daten füttern:

                              • Walletguthaben

                              • HNT letzte 24h

                              • HNT letzte 7 Tage

                              • HNT letzte 30 Tage

                              Bei meinen urls nutze ich die Bucketfunktion nicht, sondern bekomme nur eine Zeile wo ich dann den data.total Wert abgreifen kann.

                              Ich habe gestern ein wenig rum getestet und festgestellt, dass sich das Skript (oder API oder was auch immer ) bei zu vielen gleichzeitigen Abrufen verschluckt und der Wert data.total dann bei einem der Datenpunkte (variiert meist) nicht ausgelesen werden kann. Manchmal geht es gut, und man bekommt alle vier Daten ausgelesen, häufig waren es aber nur 3. Daher habe ich einen Timeout eingebaut. Damit funktioniert es zuverlässig.
                              Zum Testen habe ich als Basis dein erstes Skript genutzt, aber auch dein zuletzt gepostetes Skript für meine Bedürfnisse angepasst.

                              Skript1

                              var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.Total";
                              var dp2 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte24Stunden";
                              var dp3 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte7Tage";
                              var dp4 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte30Tage";
                              var axios = require("axios");
                              var v_url1 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                              var v_url2 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day' 
                              var v_url3 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'
                              var v_url4 = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-30%20day'
                              setTimeout(async function writeValue1() {
                                     var data = await getData1();
                                     log(data);
                                     setState(dp1,data.total);
                                 },1000);
                              async function getData1() {
                                 try {
                                     let res = await axios.get(v_url1, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              setTimeout(async function writeValue2() {
                                     var data = await getData2();
                                     log(data);
                                     setState(dp2,data.total);
                                 },2000);
                              async function getData2() {
                                 try {
                                     let res = await axios.get(v_url2, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              setTimeout(async function writeValue3() {
                                     var data = await getData3();
                                     log(data);
                                     setState(dp3,data.total);
                                 },3000);
                              async function getData3() {
                                 try {
                                     let res = await axios.get(v_url3, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              setTimeout(async function writeValue4() {
                                     var data = await getData4();
                                     log(data);
                                     setState(dp4,data.total);
                                 },4000);
                              async function getData4() {
                                 try {
                                     let res = await axios.get(v_url4, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              schedule('*/30 * * * *',function() {
                                 writeValue1();
                                 writeValue2();
                                 writeValue3();
                                 writeValue4();
                              }); 
                              //test();
                              writeValue1();
                              writeValue2();
                              writeValue3();
                              writeValue4();
                              

                              Skript2

                              var axios = require("axios");
                              
                              setTimeout(async function writeValueOverview() {
                                 var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.Total";
                                 var url1 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2022-08-01T00:00:01Z'
                              
                                 var data = await getData(url1); //abruf der daten
                                 log(data);  // ausgabe des ergebnisses auf der debug-console
                                 setState(dp1,data.total); // schreiben der summe in datenpunkt
                              }, 1000);
                              setTimeout(async function writeValueReward1() {
                                 var dp2 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte24Stunden";
                                 var url2 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-1%20day'
                              
                                 var data = await getData(url2); //abruf der daten
                                 log(data);  // ausgabe des ergebnisses auf der debug-console
                                 setState(dp2,data.total); // schreiben des rewards in datenpunkt
                              }, 2000);
                              setTimeout(async function writeValueReward2() {
                                 var dp3 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte7Tage";
                                 var url3 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-7%20day'
                              
                                 var data = await getData(url3); //abruf der daten
                                 log(data);  // ausgabe des ergebnisses auf der debug-console
                                 setState(dp3,data.total); // schreiben des rewards in datenpunk
                              }, 3000);
                              setTimeout(async function writeValueReward3() {
                                 var dp4 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte30Tage";
                                 var url4 = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-30%20day'
                              
                                 var data = await getData(url4); //abruf der daten
                                 log(data);  // ausgabe des ergebnisses auf der debug-console
                                 setState(dp4,data.total); // schreiben des rewards in datenpunk
                              }, 4000);
                              async function getData(url1) {
                                 try {
                                     let res = await axios.get(url1, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              async function getData(url2) {
                                 try {
                                     let res = await axios.get(url2, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              async function getData(url3) {
                                 try {
                                     let res = await axios.get(url3, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              }
                              async function getData(url4) {
                                 try {
                                     let res = await axios.get(url4, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                     return res.data.data;
                                 } catch (e) {
                                     log(e)
                                 }
                              } 
                              schedule('*/30 * * * *',function() {
                                 writeValueOverview();
                                 writeValueReward1();
                                 writeValueReward2();
                                 writeValueReward3();
                              });
                              //test(); 
                              writeValueOverview();
                              writeValueReward1();
                              writeValueReward2();
                              writeValueReward3(); 
                              

                              Bei beiden funktioniert das Auslesen gut, allerdings bekomme ich jeweils drei Fehlerzeilen angezeigt, die ich (wahrscheinlich aus fehlendem Basiswissen) nicht behoben bekomme:

                              17.8.2022, 09:48:06.431 [info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare
                              17.8.2022, 09:48:06.479 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: registered 0 subscriptions and 1 schedule
                              17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: ReferenceError: writeValue1 is not defined
                              17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare:69:1
                              17.8.2022, 09:48:06.481 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare:73:3
                              17.8.2022, 09:48:07.658 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':1.39006203,'sum':139006203,'stddev':0.0096834757243116,'min':0,'median':0.00827458,'max':0,'avg':0.013113792735849056}
                              17.8.2022, 09:48:08.582 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.02237045,'sum':2237045,'stddev':0.0026280645619987,'min':0,'median':0.00729542,'max':0,'avg':0.007456816666666667}
                              17.8.2022, 09:48:09.582 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.26189041,'sum':26189041,'stddev':0.0094876854151907,'min':0,'median':0.00765452,'max':0,'avg':0.011386539565217391}
                              17.8.2022, 09:48:10.577 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.TrendyGunmetalHare: {'total':0.8288541,'sum':82885410,'stddev':0.0096992973232438,'min':0,'median':0.00748039,'max':0,'avg':0.012558395454545455}
                              
                              

                              Könntest du mir hierbei nochmal unter die Arme greifen?
                              Besten Dank :-)

                              OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              schrieb am zuletzt editiert von
                              #20

                              @unbekannt
                              Probiere es erst Mal.mit meiner Lösung

                              Die fehlerm Ladung ist eigentlich selbst erklärend.
                              Die Funktion mit diesem Namen wurde nie definiert
                              Die Folgezeilen sind der stacktrace für diesen Fehler

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              1 Antwort Letzte Antwort
                              0
                              • U Offline
                                U Offline
                                Unbekannt
                                schrieb am zuletzt editiert von
                                #21

                                @oliverio

                                Wenn ich dein zuletzt gepostetes Skript nutze (plus ergänzend der Timeout), sprich Sktipt2 in meinem letzten Post, dann bekomme ich eine analoge Fehlermeldung:

                                17.8.2022, 15:17:02.151 [info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.test
                                17.8.2022, 15:17:02.255 [info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.test
                                17.8.2022, 15:17:02.291 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: registered 0 subscriptions and 1 schedule
                                17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: ReferenceError: writeValueOverview is not defined
                                17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.test:75:1
                                17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.test:79:3
                                17.8.2022, 15:17:03.451 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                17.8.2022, 15:17:04.390 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.06173936,'sum':6173936,'stddev':0.018747958871,'min':0,'median':0.01570541,'max':0,'avg':0.020579786666666666}
                                17.8.2022, 15:17:05.389 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                17.8.2022, 15:17:06.625 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                
                                

                                Mir ist bewusst, dass writeValueOverview nicht definiert ist, ich weiß nur nicht wie ich das mache. Thema fehlendes Basiswissen zum Thema Javascript. Bisher habe ich meine Skripte immer irgendwie zusammenkopiert nach dem try&error Prinzip.

                                Da in dem Skript vom Prinzip 4 mal der gleiche Code genutzt wird, verstehe ich nicht, warum der Fehler nur bei einer Funktion vorhanden ist und nicht bei allen vieren. Vor allem, weil das Skript ja erfolgreich die Daten holt. Muss ich am Anfang im Skript einfach eine Definition festlegen? Wenn ja, wie mache ich das?

                                OliverIOO 1 Antwort Letzte Antwort
                                0
                                • U Unbekannt

                                  @oliverio

                                  Wenn ich dein zuletzt gepostetes Skript nutze (plus ergänzend der Timeout), sprich Sktipt2 in meinem letzten Post, dann bekomme ich eine analoge Fehlermeldung:

                                  17.8.2022, 15:17:02.151 [info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.test
                                  17.8.2022, 15:17:02.255 [info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.test
                                  17.8.2022, 15:17:02.291 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: registered 0 subscriptions and 1 schedule
                                  17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: ReferenceError: writeValueOverview is not defined
                                  17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.test:75:1
                                  17.8.2022, 15:17:02.293 [error]: javascript.0 (1151) at script.js.Allgemein.Crypto.Helium.test:79:3
                                  17.8.2022, 15:17:03.451 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                  17.8.2022, 15:17:04.390 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.06173936,'sum':6173936,'stddev':0.018747958871,'min':0,'median':0.01570541,'max':0,'avg':0.020579786666666666}
                                  17.8.2022, 15:17:05.389 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                  17.8.2022, 15:17:06.625 [info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.test: {'total':0.3685975,'sum':36859750,'stddev':0.0094209479866946,'min':0,'median':0.01122825,'max':0,'avg':0.012710258620689655}
                                  
                                  

                                  Mir ist bewusst, dass writeValueOverview nicht definiert ist, ich weiß nur nicht wie ich das mache. Thema fehlendes Basiswissen zum Thema Javascript. Bisher habe ich meine Skripte immer irgendwie zusammenkopiert nach dem try&error Prinzip.

                                  Da in dem Skript vom Prinzip 4 mal der gleiche Code genutzt wird, verstehe ich nicht, warum der Fehler nur bei einer Funktion vorhanden ist und nicht bei allen vieren. Vor allem, weil das Skript ja erfolgreich die Daten holt. Muss ich am Anfang im Skript einfach eine Definition festlegen? Wenn ja, wie mache ich das?

                                  OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  schrieb am zuletzt editiert von
                                  #22

                                  @unbekannt
                                  Jetzt wird es durcheinander. Poste bitte die aktuelle Skriptversion zu der das debig Log passt dazu.
                                  Zu diesem Log kann ich jetzt kein Skriptbeispiel mehr finden

                                  Da wo du die Funktionen in settimeout callbacks gepackt hast, sind eigentlich immer anonyme Funktionen. Den Namen den du da vergibst gilt nur innerhalb des settimeout Aufrufs
                                  Daher ist der Name unnötig
                                  Und der Aufruf weiter unten schlägt fehl

                                  Das mit settimeout zu machen ist nicht richtig auch wenn es wohl das Problem löst. Irgendwann passt das Zeitverhalten nicht mehr und dann klappt es wieder nicht.

                                  https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions

                                  Was funktionierte bei meinem Beispiel konkret nicht?

                                  Meine Adapter und Widgets
                                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                  Links im Profil

                                  U 1 Antwort Letzte Antwort
                                  0
                                  • OliverIOO OliverIO

                                    @unbekannt
                                    Jetzt wird es durcheinander. Poste bitte die aktuelle Skriptversion zu der das debig Log passt dazu.
                                    Zu diesem Log kann ich jetzt kein Skriptbeispiel mehr finden

                                    Da wo du die Funktionen in settimeout callbacks gepackt hast, sind eigentlich immer anonyme Funktionen. Den Namen den du da vergibst gilt nur innerhalb des settimeout Aufrufs
                                    Daher ist der Name unnötig
                                    Und der Aufruf weiter unten schlägt fehl

                                    Das mit settimeout zu machen ist nicht richtig auch wenn es wohl das Problem löst. Irgendwann passt das Zeitverhalten nicht mehr und dann klappt es wieder nicht.

                                    https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions

                                    Was funktionierte bei meinem Beispiel konkret nicht?

                                    U Offline
                                    U Offline
                                    Unbekannt
                                    schrieb am zuletzt editiert von
                                    #23

                                    @oliverio
                                    Ich versuche es mal. Also hier dein Skript mit diesen Anpassungen:

                                    • Miner ID ergänzt/ausgetauscht
                                    • Zeile 6 &12 dp2 entfernt (benötige ich nicht)
                                    • Zeile 9 (url) zu (v_url) geändert (sonst bekomme ich den Fehler, das url nicht definiert ist)
                                    • Zeile 21 & 29 data.total ergänzt statt Fragezeichen
                                    • Zeile 30 gelöscht
                                    • Zeile 42 zum Testen auf jede Minute geändert

                                    Hier das Skript:

                                    
                                    var axios = require("axios");
                                    
                                    async function writeValueOverview() {
                                       var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.Total";
                                       var v_url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                                    
                                       var data = await getData(v_url); //abruf der daten
                                       log(data);  // ausgabe des ergebnisses auf der debug-console
                                       setState(dp1,data.total); // schreiben der summe in datenpunkt
                                    }
                                    
                                    async function writeValueReward1() {
                                       var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte24Stunden";
                                       var url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day'
                                    
                                       var data = await getData(url); //abruf der daten
                                       log(data);  // ausgabe des ergebnisses auf der debug-console
                                       setState(dp1,data.total); // schreiben des rewards in datenpunkt
                                    }
                                    async function writeValueReward2() {
                                       var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte7Tage";
                                       var url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'
                                    
                                       var data = await getData(url); //abruf der daten
                                       log(data);  // ausgabe des ergebnisses auf der debug-console
                                       setState(dp1,data.total); // schreiben des rewards in datenpunk
                                    }
                                    
                                    async function getData(url) {
                                       try {
                                           let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                           return res.data.data;
                                       } catch (e) {
                                           log(e)
                                       }
                                    }
                                    
                                    schedule('*/1 * * * *',function() {
                                       writeValueOverview();
                                       writeValueReward1();
                                       writeValueReward2();
                                    });
                                    

                                    Ich habe das Skript mal laufen gelassen und festgestellt, das Resultat nach jedem Abruf unterschiedlich ist. Mal bekomme ich einen Fehler, mal mehrere und manchmal keine.
                                    Hier die Ausgabe:

                                    Fehler Nr.1

                                    18.8.2022, 14:12:47.301	[info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                    18.8.2022, 14:12:47.310	[info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                    18.8.2022, 14:12:47.318	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: registered 0 subscriptions and 1 schedule
                                    18.8.2022, 14:13:00.128	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                    18.8.2022, 14:13:00.132	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'},'code':'ERR_BAD_REQUEST','status':429}
                                    18.8.2022, 14:13:00.133	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                    18.8.2022, 14:13:00.136	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                    18.8.2022, 14:13:00.136	[error]: javascript.0 (1151)     at writeValueOverview (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:10:23)
                                    18.8.2022, 14:13:00.361	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                    18.8.2022, 14:13:00.361	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                    18.8.2022, 14:13:00.362	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                    18.8.2022, 14:13:00.363	[error]: javascript.0 (1151)     at writeValueReward2 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:27:23)
                                    18.8.2022, 14:13:11.414	[info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                    


                                    Fehler Nr.2

                                    18.8.2022, 14:24:08.120	[info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                    18.8.2022, 14:24:08.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: registered 0 subscriptions and 1 schedule
                                    18.8.2022, 14:25:00.125	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                    18.8.2022, 14:25:00.126	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                    18.8.2022, 14:25:00.127	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                    18.8.2022, 14:25:00.127	[error]: javascript.0 (1151)     at writeValueReward2 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:27:23)
                                    18.8.2022, 14:25:00.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                    18.8.2022, 14:25:00.141	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                    


                                    hier mal kein Fehler

                                    18.8.2022, 14:26:00.045	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                    18.8.2022, 14:26:00.049	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                    18.8.2022, 14:26:00.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                    


                                    Fehler Nr.3

                                    18.8.2022, 14:29:00.047	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                    18.8.2022, 14:29:00.121	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                    18.8.2022, 14:29:00.121	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                    18.8.2022, 14:29:00.122	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                    18.8.2022, 14:29:00.122	[error]: javascript.0 (1151)     at writeValueReward1 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:19:23)
                                    18.8.2022, 14:29:00.126	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                    18.8.2022, 14:30:00.044	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                    18.8.2022, 14:30:00.125	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                    18.8.2022, 14:30:00.128	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                    
                                    

                                    Wie du siehst geht es manchmal gut, manchmal aber auch nicht. Wie würdest du das lösen?

                                    OliverIOO 1 Antwort Letzte Antwort
                                    0
                                    • U Unbekannt

                                      @oliverio
                                      Ich versuche es mal. Also hier dein Skript mit diesen Anpassungen:

                                      • Miner ID ergänzt/ausgetauscht
                                      • Zeile 6 &12 dp2 entfernt (benötige ich nicht)
                                      • Zeile 9 (url) zu (v_url) geändert (sonst bekomme ich den Fehler, das url nicht definiert ist)
                                      • Zeile 21 & 29 data.total ergänzt statt Fragezeichen
                                      • Zeile 30 gelöscht
                                      • Zeile 42 zum Testen auf jede Minute geändert

                                      Hier das Skript:

                                      
                                      var axios = require("axios");
                                      
                                      async function writeValueOverview() {
                                         var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.Total";
                                         var v_url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'
                                      
                                         var data = await getData(v_url); //abruf der daten
                                         log(data);  // ausgabe des ergebnisses auf der debug-console
                                         setState(dp1,data.total); // schreiben der summe in datenpunkt
                                      }
                                      
                                      async function writeValueReward1() {
                                         var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte24Stunden";
                                         var url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day'
                                      
                                         var data = await getData(url); //abruf der daten
                                         log(data);  // ausgabe des ergebnisses auf der debug-console
                                         setState(dp1,data.total); // schreiben des rewards in datenpunkt
                                      }
                                      async function writeValueReward2() {
                                         var dp1 = "0_userdata.0.Helium.TrendyGunmetalHare.letzte7Tage";
                                         var url = 'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'
                                      
                                         var data = await getData(url); //abruf der daten
                                         log(data);  // ausgabe des ergebnisses auf der debug-console
                                         setState(dp1,data.total); // schreiben des rewards in datenpunk
                                      }
                                      
                                      async function getData(url) {
                                         try {
                                             let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                             return res.data.data;
                                         } catch (e) {
                                             log(e)
                                         }
                                      }
                                      
                                      schedule('*/1 * * * *',function() {
                                         writeValueOverview();
                                         writeValueReward1();
                                         writeValueReward2();
                                      });
                                      

                                      Ich habe das Skript mal laufen gelassen und festgestellt, das Resultat nach jedem Abruf unterschiedlich ist. Mal bekomme ich einen Fehler, mal mehrere und manchmal keine.
                                      Hier die Ausgabe:

                                      Fehler Nr.1

                                      18.8.2022, 14:12:47.301	[info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                      18.8.2022, 14:12:47.310	[info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                      18.8.2022, 14:12:47.318	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: registered 0 subscriptions and 1 schedule
                                      18.8.2022, 14:13:00.128	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                      18.8.2022, 14:13:00.132	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2021-01-01T00:00:01Z'},'code':'ERR_BAD_REQUEST','status':429}
                                      18.8.2022, 14:13:00.133	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                      18.8.2022, 14:13:00.136	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                      18.8.2022, 14:13:00.136	[error]: javascript.0 (1151)     at writeValueOverview (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:10:23)
                                      18.8.2022, 14:13:00.361	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                      18.8.2022, 14:13:00.361	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                      18.8.2022, 14:13:00.362	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                      18.8.2022, 14:13:00.363	[error]: javascript.0 (1151)     at writeValueReward2 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:27:23)
                                      18.8.2022, 14:13:11.414	[info ]: javascript.0 (1151) Stop script script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                      


                                      Fehler Nr.2

                                      18.8.2022, 14:24:08.120	[info ]: javascript.0 (1151) Start javascript script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver
                                      18.8.2022, 14:24:08.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: registered 0 subscriptions and 1 schedule
                                      18.8.2022, 14:25:00.125	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-7%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                      18.8.2022, 14:25:00.126	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                      18.8.2022, 14:25:00.127	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                      18.8.2022, 14:25:00.127	[error]: javascript.0 (1151)     at writeValueReward2 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:27:23)
                                      18.8.2022, 14:25:00.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                      18.8.2022, 14:25:00.141	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                      


                                      hier mal kein Fehler

                                      18.8.2022, 14:26:00.045	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                      18.8.2022, 14:26:00.049	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                      18.8.2022, 14:26:00.131	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                      


                                      Fehler Nr.3

                                      18.8.2022, 14:29:00.047	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                      18.8.2022, 14:29:00.121	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'message':'Request failed with status code 429','name':'AxiosError','config':{'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'env':{},'headers':{'User-Agent':'Mozilla/5.0.'},'method':'get','url':'https://api.helium.io/v1/hotspots/112WPeSWTzHYzbQRZhQ95mJqpXjkeB1JpBLUS3amEAZiMANMH8Ty/rewards/sum/?min_time=-1%20day'},'code':'ERR_BAD_REQUEST','status':429}
                                      18.8.2022, 14:29:00.121	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: undefined
                                      18.8.2022, 14:29:00.122	[error]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: TypeError: Cannot read property 'total' of undefined
                                      18.8.2022, 14:29:00.122	[error]: javascript.0 (1151)     at writeValueReward1 (script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver:19:23)
                                      18.8.2022, 14:29:00.126	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                      18.8.2022, 14:30:00.044	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':1.49197495,'sum':149197495,'stddev':0.0097176223317734,'min':0,'median':0.00827458,'max':0,'avg':0.013321204910714285}
                                      18.8.2022, 14:30:00.125	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.10191292,'sum':10191292,'stddev':0.010497921837,'min':0,'median':0.01697798,'max':0,'avg':0.016985486666666667}
                                      18.8.2022, 14:30:00.128	[info ]: javascript.0 (1151) script.js.Allgemein.Crypto.Helium.Originalskript_von_Oliver: {'total':0.33453871,'sum':33453871,'stddev':0.010191871516,'min':0,'median':0.00766701,'max':0,'avg':0.0133815484}
                                      
                                      

                                      Wie du siehst geht es manchmal gut, manchmal aber auch nicht. Wie würdest du das lösen?

                                      OliverIOO Offline
                                      OliverIOO Offline
                                      OliverIO
                                      schrieb am zuletzt editiert von
                                      #24

                                      @unbekannt
                                      Schau ich mir Anfang der nö hatten Woche im Detail an. Bin Grad ni ht an einem Rechner

                                      Der Fehler 429 kann 2 Möglichkeiten haben.
                                      Einmal too many requests. Anbieter versuchen die Häufigkeit der Anfragen in einem bestimmten Zeitabschnitt zu limitieren. Das muss man beachten. Hab aber auf die schnelle keine Regel gefunden
                                      Allerdings hab ich gefunden das man einen User-Agent String mit angeben muss da ansonsten genau mit 429 abgebrochen wird. Evtl findest du dazu Details. Wenn du im Internet suchst dann findest Angaben bspw zu Chrome oder Firefox. Welcher ist relativ egal

                                      Meine Adapter und Widgets
                                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                      Links im Profil

                                      U 1 Antwort Letzte Antwort
                                      0
                                      • OliverIOO OliverIO

                                        @unbekannt
                                        Schau ich mir Anfang der nö hatten Woche im Detail an. Bin Grad ni ht an einem Rechner

                                        Der Fehler 429 kann 2 Möglichkeiten haben.
                                        Einmal too many requests. Anbieter versuchen die Häufigkeit der Anfragen in einem bestimmten Zeitabschnitt zu limitieren. Das muss man beachten. Hab aber auf die schnelle keine Regel gefunden
                                        Allerdings hab ich gefunden das man einen User-Agent String mit angeben muss da ansonsten genau mit 429 abgebrochen wird. Evtl findest du dazu Details. Wenn du im Internet suchst dann findest Angaben bspw zu Chrome oder Firefox. Welcher ist relativ egal

                                        U Offline
                                        U Offline
                                        Unbekannt
                                        schrieb am zuletzt editiert von Unbekannt
                                        #25

                                        @oliverio
                                        Ja, dass der Fehler wegen zu vieler Anfragen kommt, hatte ich auch recherchiert, daher wollte ich ja den Timeout setzen. Aber du meintest ja, dass es so wie ich es gemacht habe nicht optimal ist.

                                        Ich habe jetzt einen anderen Ansatz gewählt und einfach mal ganz pragmatisch den cronjob angepasst, damit läuft das Skript auf jeden Fall fehlerfrei.

                                        Ich danke dir auf jeden Fall für deinen Input, ich habe eine Menge gelernt :-)

                                        Für die, die es interessiert, hier das funktionierende Skript. Ihr müsst nur "dp1" und die Miner-ID anpassen:

                                        
                                        var axios = require("axios");
                                        
                                        async function writeValueOverview() {
                                           var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.Total";
                                           var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2022-08-01T00:00:01Z'
                                        
                                           var data = await getData(url); //abruf der daten
                                           log(data);  // ausgabe des ergebnisses auf der debug-console
                                           setState(dp1,data.total); // schreiben der summe in datenpunkt
                                        }
                                        
                                        async function writeValueReward1() {
                                           var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte24Stunden";
                                           var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-1%20day'
                                        
                                           var data = await getData(url); //abruf der daten
                                           log(data);  // ausgabe des ergebnisses auf der debug-console
                                           setState(dp1,data.total); // schreiben des rewards in datenpunkt
                                        }
                                        
                                        async function writeValueReward2() {
                                           var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte7Tage";
                                           var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-7%20day'
                                        
                                           var data = await getData(url); //abruf der daten
                                           log(data);  // ausgabe des ergebnisses auf der debug-console
                                           setState(dp1,data.total); // schreiben des rewards in datenpunk
                                        }
                                        
                                        async function writeValueReward3() {
                                           var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte30Tage";
                                           var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-30%20day'
                                        
                                           var data = await getData(url); //abruf der daten
                                           log(data);  // ausgabe des ergebnisses auf der debug-console
                                           setState(dp1,data.total); // schreiben des rewards in datenpunk
                                        } 
                                        
                                        async function getData(url) {
                                           try {
                                               let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                               return res.data.data;
                                           } catch (e) {
                                               log(e)
                                           }
                                        }
                                        
                                        schedule('35 0,30 * * * *',function() {
                                           writeValueOverview();
                                        });
                                        schedule('40 0,30 * * * *',function() {
                                           writeValueReward1();
                                        });
                                        schedule('45 0,30 * * * *',function() {
                                           writeValueReward2();
                                        });
                                        schedule('50 0,30 * * * *',function() {
                                           writeValueReward3();
                                        });
                                        

                                        OliverIOO 2 Antworten Letzte Antwort
                                        0
                                        • U Unbekannt

                                          @oliverio
                                          Ja, dass der Fehler wegen zu vieler Anfragen kommt, hatte ich auch recherchiert, daher wollte ich ja den Timeout setzen. Aber du meintest ja, dass es so wie ich es gemacht habe nicht optimal ist.

                                          Ich habe jetzt einen anderen Ansatz gewählt und einfach mal ganz pragmatisch den cronjob angepasst, damit läuft das Skript auf jeden Fall fehlerfrei.

                                          Ich danke dir auf jeden Fall für deinen Input, ich habe eine Menge gelernt :-)

                                          Für die, die es interessiert, hier das funktionierende Skript. Ihr müsst nur "dp1" und die Miner-ID anpassen:

                                          
                                          var axios = require("axios");
                                          
                                          async function writeValueOverview() {
                                             var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.Total";
                                             var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?max_time=2029-01-01T00:00:01Z&min_time=2022-08-01T00:00:01Z'
                                          
                                             var data = await getData(url); //abruf der daten
                                             log(data);  // ausgabe des ergebnisses auf der debug-console
                                             setState(dp1,data.total); // schreiben der summe in datenpunkt
                                          }
                                          
                                          async function writeValueReward1() {
                                             var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte24Stunden";
                                             var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-1%20day'
                                          
                                             var data = await getData(url); //abruf der daten
                                             log(data);  // ausgabe des ergebnisses auf der debug-console
                                             setState(dp1,data.total); // schreiben des rewards in datenpunkt
                                          }
                                          
                                          async function writeValueReward2() {
                                             var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte7Tage";
                                             var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-7%20day'
                                          
                                             var data = await getData(url); //abruf der daten
                                             log(data);  // ausgabe des ergebnisses auf der debug-console
                                             setState(dp1,data.total); // schreiben des rewards in datenpunk
                                          }
                                          
                                          async function writeValueReward3() {
                                             var dp1 = "0_userdata.0.Helium.NoisyMauveOsprey.letzte30Tage";
                                             var url = 'https://api.helium.io/v1/hotspots/11wWXAuRHec8cfqLz3tc5CaVbMhUX4SW7YWHGRYGRm8WqULrFtY/rewards/sum/?min_time=-30%20day'
                                          
                                             var data = await getData(url); //abruf der daten
                                             log(data);  // ausgabe des ergebnisses auf der debug-console
                                             setState(dp1,data.total); // schreiben des rewards in datenpunk
                                          } 
                                          
                                          async function getData(url) {
                                             try {
                                                 let res = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0.' } });
                                                 return res.data.data;
                                             } catch (e) {
                                                 log(e)
                                             }
                                          }
                                          
                                          schedule('35 0,30 * * * *',function() {
                                             writeValueOverview();
                                          });
                                          schedule('40 0,30 * * * *',function() {
                                             writeValueReward1();
                                          });
                                          schedule('45 0,30 * * * *',function() {
                                             writeValueReward2();
                                          });
                                          schedule('50 0,30 * * * *',function() {
                                             writeValueReward3();
                                          });
                                          

                                          OliverIOO Offline
                                          OliverIOO Offline
                                          OliverIO
                                          schrieb am zuletzt editiert von OliverIO
                                          #26

                                          @unbekannt
                                          das hatte hier ich als andere alternative auch geschrieben
                                          24d54e68-8fed-4c60-b86d-3a65c8cf9689-image.png

                                          die skript detail sachen kann ich fühestens erst ab montag wieder schauen

                                          Meine Adapter und Widgets
                                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                          Links im Profil

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          781

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe