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. Kryptokurse von CoinMarketCap abfragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    814

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Kryptokurse von CoinMarketCap abfragen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 4 Kommentatoren 912 Aufrufe 4 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.
  • S Offline
    S Offline
    smartysmart
    schrieb am zuletzt editiert von smartysmart
    #1

    Hallo Leute,
    CoinMarketCap bietet eine kostenlose API an um die aktuellen Kryptokurse für alle Kryptowährungen abzufragen.
    Leider fehlen mir die Programmierkenntnisse um mit der API Dokumentation ein Blocky oder Adapter zu basteln.

    Ist hier jemand der sich damit auskennt, zeit und Lust hat mir dabei zu helfen ?

    https://coinmarketcap.com/api/pricing/

    https://coinmarketcap.com/api/documentation/v1/

    VG

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • S smartysmart

      Hallo Leute,
      CoinMarketCap bietet eine kostenlose API an um die aktuellen Kryptokurse für alle Kryptowährungen abzufragen.
      Leider fehlen mir die Programmierkenntnisse um mit der API Dokumentation ein Blocky oder Adapter zu basteln.

      Ist hier jemand der sich damit auskennt, zeit und Lust hat mir dabei zu helfen ?

      https://coinmarketcap.com/api/pricing/

      https://coinmarketcap.com/api/documentation/v1/

      VG

      haus-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @smartysmart Mit Blockly geht das aktuell leider nicht, weil man einen custom header setzen muss.

      Aus dem Beispiel:

      curl -H "X-CMC_PRO_API_KEY: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c" -H "Accept: application/json" -d "start=1&limit=5000&convert=USD" -G https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest
      

      wäre also in einer eigenen Funktion:

      return httpGetAsync(
          'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=5000&convert=USD',
          {
              timeout: 1000,
              headers: {
                  'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
                  'Accept': 'application/json'
              }
          }
      );
      

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      S 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @smartysmart Mit Blockly geht das aktuell leider nicht, weil man einen custom header setzen muss.

        Aus dem Beispiel:

        curl -H "X-CMC_PRO_API_KEY: b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c" -H "Accept: application/json" -d "start=1&limit=5000&convert=USD" -G https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest
        

        wäre also in einer eigenen Funktion:

        return httpGetAsync(
            'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=5000&convert=USD',
            {
                timeout: 1000,
                headers: {
                    'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
                    'Accept': 'application/json'
                }
            }
        );
        
        S Offline
        S Offline
        smartysmart
        schrieb am zuletzt editiert von
        #3

        @haus-automatisierung Danke für den Denkanstoß

        Mithilfe von Claude Ai konnte ich dann mein Vorhaben doch noch umsetzen.
        Also alle die die sowas noch haben wollen, das wäre meine Lösung.

        on({ id: '0_userdata.0.Kryptokurse.kurse-abrufen' /* kurse-abrufen */, change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if (getState('0_userdata.0.Kryptokurse.kurse-abrufen').val == true) {
        
                                    const axios = require('axios');
        
        const apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
        const apiUrl = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest';
        
        const params = {
          symbol: 'BTC',
          convert: 'USD'
        };
        
        const headers = {
          'X-CMC_PRO_API_KEY': apiKey
        };
        
        axios.get(apiUrl, { params, headers })
          .then(response => {
            let BTCKurs = response.data.data.BTC.quote.USD.price;
            
            // Runden auf 2 Nachkommastellen
            BTCKurs = Number(BTCKurs.toFixed(2));
            
            console.log('BTC-Kurs (gerundet):', BTCKurs);
            
            // Setzen des gerundeten Wertes in ioBroker
            setState('0_userdata.0.Kryptokurse.BTC', BTCKurs, true, (err) => {
              if (err) {
                console.error('Fehler beim Setzen des BTC-Kurses in ioBroker:', err);
              } else {
                console.log('Gerundeter BTC-Kurs erfolgreich in ioBroker gesetzt');
              }
            });
          })
          .catch(error => {
            console.error('Fehler beim Abrufen des BTC-Kurses:', error);
          });
        
          }
        });
        
        
        
        
        haus-automatisierungH 2 Antworten Letzte Antwort
        0
        • S smartysmart

          @haus-automatisierung Danke für den Denkanstoß

          Mithilfe von Claude Ai konnte ich dann mein Vorhaben doch noch umsetzen.
          Also alle die die sowas noch haben wollen, das wäre meine Lösung.

          on({ id: '0_userdata.0.Kryptokurse.kurse-abrufen' /* kurse-abrufen */, change: 'ne' }, async (obj) => {
            let value = obj.state.val;
            let oldValue = obj.oldState.val;
            if (getState('0_userdata.0.Kryptokurse.kurse-abrufen').val == true) {
          
                                      const axios = require('axios');
          
          const apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
          const apiUrl = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest';
          
          const params = {
            symbol: 'BTC',
            convert: 'USD'
          };
          
          const headers = {
            'X-CMC_PRO_API_KEY': apiKey
          };
          
          axios.get(apiUrl, { params, headers })
            .then(response => {
              let BTCKurs = response.data.data.BTC.quote.USD.price;
              
              // Runden auf 2 Nachkommastellen
              BTCKurs = Number(BTCKurs.toFixed(2));
              
              console.log('BTC-Kurs (gerundet):', BTCKurs);
              
              // Setzen des gerundeten Wertes in ioBroker
              setState('0_userdata.0.Kryptokurse.BTC', BTCKurs, true, (err) => {
                if (err) {
                  console.error('Fehler beim Setzen des BTC-Kurses in ioBroker:', err);
                } else {
                  console.log('Gerundeter BTC-Kurs erfolgreich in ioBroker gesetzt');
                }
              });
            })
            .catch(error => {
              console.error('Fehler beim Abrufen des BTC-Kurses:', error);
            });
          
            }
          });
          
          
          
          
          haus-automatisierungH Online
          haus-automatisierungH Online
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @smartysmart Ist schon erstaunlich, wie umständlich der AI-Generierte Code immer ist... Wozu mache ich mir hier eigentlich die Arbeit und schlag eine Lösung vor?!

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Antwort Letzte Antwort
          2
          • S smartysmart

            @haus-automatisierung Danke für den Denkanstoß

            Mithilfe von Claude Ai konnte ich dann mein Vorhaben doch noch umsetzen.
            Also alle die die sowas noch haben wollen, das wäre meine Lösung.

            on({ id: '0_userdata.0.Kryptokurse.kurse-abrufen' /* kurse-abrufen */, change: 'ne' }, async (obj) => {
              let value = obj.state.val;
              let oldValue = obj.oldState.val;
              if (getState('0_userdata.0.Kryptokurse.kurse-abrufen').val == true) {
            
                                        const axios = require('axios');
            
            const apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
            const apiUrl = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest';
            
            const params = {
              symbol: 'BTC',
              convert: 'USD'
            };
            
            const headers = {
              'X-CMC_PRO_API_KEY': apiKey
            };
            
            axios.get(apiUrl, { params, headers })
              .then(response => {
                let BTCKurs = response.data.data.BTC.quote.USD.price;
                
                // Runden auf 2 Nachkommastellen
                BTCKurs = Number(BTCKurs.toFixed(2));
                
                console.log('BTC-Kurs (gerundet):', BTCKurs);
                
                // Setzen des gerundeten Wertes in ioBroker
                setState('0_userdata.0.Kryptokurse.BTC', BTCKurs, true, (err) => {
                  if (err) {
                    console.error('Fehler beim Setzen des BTC-Kurses in ioBroker:', err);
                  } else {
                    console.log('Gerundeter BTC-Kurs erfolgreich in ioBroker gesetzt');
                  }
                });
              })
              .catch(error => {
                console.error('Fehler beim Abrufen des BTC-Kurses:', error);
              });
            
              }
            });
            
            
            
            
            haus-automatisierungH Online
            haus-automatisierungH Online
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von haus-automatisierung
            #5

            @smartysmart Bitte mal so testen - ist viel sauberer:

            const apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
            
            on({ id: '0_userdata.0.Kryptokurse.kurse-abrufen', val: true }, async (obj) => {
                httpGet(
                    'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC&convert=USD',
                    {
                        timeout: 1000,
                        headers: {
                            'X-CMC_PRO_API_KEY': apiKey,
                            'Accept': 'application/json'
                        }
                    },
                    (err, response) => {
                        if (!err) {
                            const usdPrice = JSON.parse(response.data).data.BTC.quote.USD.price;
                            setState('0_userdata.0.Kryptokurse.BTC', Number(usdPrice.toFixed(2)), true);
                        } else {
                            console.error(err);
                        }
                    }
                );
            });
            

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            S 1 Antwort Letzte Antwort
            1
            • haus-automatisierungH haus-automatisierung

              @smartysmart Bitte mal so testen - ist viel sauberer:

              const apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
              
              on({ id: '0_userdata.0.Kryptokurse.kurse-abrufen', val: true }, async (obj) => {
                  httpGet(
                      'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC&convert=USD',
                      {
                          timeout: 1000,
                          headers: {
                              'X-CMC_PRO_API_KEY': apiKey,
                              'Accept': 'application/json'
                          }
                      },
                      (err, response) => {
                          if (!err) {
                              const usdPrice = JSON.parse(response.data).data.BTC.quote.USD.price;
                              setState('0_userdata.0.Kryptokurse.BTC', Number(usdPrice.toFixed(2)), true);
                          } else {
                              console.error(err);
                          }
                      }
                  );
              });
              
              S Offline
              S Offline
              shellyrulestheworld
              schrieb am zuletzt editiert von
              #6

              Hallo @haus-automatisierung

              ich habe deinen Code ausprobiert. Ich habe ihn in ein JS Script kopiert und die Datenpunkte unter 0_userdata.0 angelegt.

              bceca24f-2fe8-431d-b10f-5d32431fd57f-image.png

              e5219685-1c11-4b23-a5fd-c37e52978449-image.png

              leider werden diese nicht befüllt. Hast du eine Idee, was ich falsch mache?

              S 1 Antwort Letzte Antwort
              0
              • S shellyrulestheworld

                Hallo @haus-automatisierung

                ich habe deinen Code ausprobiert. Ich habe ihn in ein JS Script kopiert und die Datenpunkte unter 0_userdata.0 angelegt.

                bceca24f-2fe8-431d-b10f-5d32431fd57f-image.png

                e5219685-1c11-4b23-a5fd-c37e52978449-image.png

                leider werden diese nicht befüllt. Hast du eine Idee, was ich falsch mache?

                S Offline
                S Offline
                shellyrulestheworld
                schrieb am zuletzt editiert von
                #7
                
                javascript.0
                2024-08-19 17:57:49.999	error	script.js.BTC.BTC_Kurse: timeout of 1000ms exceeded
                
                javascript.0
                2024-08-19 17:57:49.998	error	script.js.BTC.BTC_Kurse: httpGet(url=https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC&convert=USD, error=timeout of 1000ms exceeded)
                
                S 1 Antwort Letzte Antwort
                0
                • S shellyrulestheworld
                  
                  javascript.0
                  2024-08-19 17:57:49.999	error	script.js.BTC.BTC_Kurse: timeout of 1000ms exceeded
                  
                  javascript.0
                  2024-08-19 17:57:49.998	error	script.js.BTC.BTC_Kurse: httpGet(url=https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=BTC&convert=USD, error=timeout of 1000ms exceeded)
                  
                  S Offline
                  S Offline
                  shellyrulestheworld
                  schrieb am zuletzt editiert von
                  #8

                  jetzt habe ich den Timeout erhöht und es funktioniert. Herzlichen Dank für deinen Code...

                  OliverIOO 1 Antwort Letzte Antwort
                  1
                  • S shellyrulestheworld

                    jetzt habe ich den Timeout erhöht und es funktioniert. Herzlichen Dank für deinen Code...

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

                    @shellyrulestheworld

                    ist hier evtl nicht so wichtig, aber toFixed rundet nicht kaufmännisch

                    (1.104).toFixed(2) = 1.10
                    (1.105).toFixed(2) = 1.10
                    (1.106).toFixed(2) = 1.11
                    

                    besser ist

                    (Math.round(1.104*100)/100).toFixed(2) = 1.10
                    (Math.round(1.105*100)/100).toFixed(2) = 1.11
                    (Math.round(1.106*100)/100).toFixed(2) = 1.11
                    
                    

                    toFixed ist nur als Formatierungsfunktion zu gebrauchen um 0 aufzufüllen damit man auf die Anzahl nachkommastellen kommt

                    Als allgemeine Funktion kann man sowas nehmen, diese Funktion bildet auch andere Zahlsysteme ab, aber alles was anders wie 10 ist, muss man noch weitere Schritte vornehmen.
                    also einfach nur

                    console.log(toFixedNumber(1.105,2));
                    
                    function toFixedNumber(num, digits, base){
                      const pow = Math.pow(base ?? 10, digits);
                      return Math.round(num*pow) / pow;
                    }```

                    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
                    1
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    668

                    Online

                    32.6k

                    Benutzer

                    82.0k

                    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