Raspberry Pi Pico W: Aktuellen Bitcoin-Preis in Euro anzeigen

Bitcoin ist die populärste Kryptowährung weltweit. Wer Bitcoins hat oder in irgendeiner Form investiert ist, der ist vielleicht daran interessiert, den aktuellen Kurs bzw. Wert in Euro für einen Bitcoin anzuzeigen.
Den aktuellen Bitcoin-Kurs kann man natürlich von diversen Webseiten beziehen. Schöner ist es, wenn man den Kurs auf einem gut sichtbar platzierten Display anzeigen kann.

Der folgende Programmcode ist nicht komplett oder vollständig. Er zeigt im wesentliche nur, wie eine API einmalig abgefragt wird und die Daten dargestellt werden.
Denkbar wäre, den Aufbau mit einem Display und einer regelmäßigen Aktualisierung zu ergänzen.

Coindesk-API

Coindesk ist eine Plattform, die Informationen rund um Kryptowährungen und Dienstleistungen anbietet. Unter anderem eine API, von der man den aktuellen Bitcoin Price Index (BPI) abrufen kann.

Die API-URL lautet:

Die Daten liegen im JSON-Datenformat vor.

Alternative API:

Programmcode

Im folgenden Programmcode müssen die Zugangsdaten für das WLAN eingetragen werden. Die URL für die API ist schon korrekt gewählt.

Nach dem Programmstart und WLAN-Verbindungsaufbau werden die Daten per HTTP-Request abgefragt. Die Daten liegen dann als JSON-Datensatz vor. Aus diesem werden verschiedene Daten auslesen. Der Programmcode beschränkt sich auf die Währung und den Bitcoin-Wert in Euro.

# Bibliotheken laden
import machine
import network
import urequests as requests
import time

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW   = 'WLANPASSWORT'
network.country('DE')

# Coindesk-API
apiURL  = 'https://api.coindesk.com/v1/bpi/currentprice.json'
apiData = ''

# WLAN-Status-LED
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# API-Daten abrufen
print()
print('HTTP-Request an', apiURL)
response = requests.get(apiURL)
print('Status-Code:', response.status_code)
if response.status_code == 200:
    # JSON-Datensatz umwandeln
    apiData = response.json()
# Verbindung schließen
response.close()

# Daten verarbeiten und ausgeben
if (len(apiData) > 0):
    chartName  = apiData['chartName']
    chartCurr  = apiData['bpi']['EUR']['code']
    chartPrice = apiData['bpi']['EUR']['rate_float']
    # Daten-Ausgabe
    print()
    print("%s: %s %s" % (chartName, chartPrice, chartCurr))
else:
    print()
    print('Keine Daten vorhanden!')

Der Programmcode sendet einmal einen HTTP-Request an die Coindesk-API und gibt dann die Daten in der Kommandozeile/Shell aus. Der Programmcode wird danach automatisch beendet. Die Verbindung zum WLAN bleibt bestehen.

Hinweis: Die URL des HTTP-Requests (Kommandozeile/Shell) liefert einen JSON-Datensatz. Diese URL kann man auch in einem Browser aufruft. Im Datensatz sind zusätzliche Informationen enthalten, die man anzeigen oder verarbeiten kann.

Erweiterung

Mit diesem Programmcode haben wir nur die Grundlagen für den Datenabruf geschaffen. Wie und wo diese Daten weiterverarbeitet oder angezeigt werden, bleibt Deiner Fantasie überlassen.

Die Ausgabe auf der Kommandozeile ist natürlich nicht besonders attraktiv. Wenn jemand ein Display hat, kann man das zur Ausgabe der Daten verwenden und die Abfrage einmal oder auch mehrmals am Tag durchführen lassen.

Ergänzen lässt sich der Programmcode noch um die Ermittlung des aktuellen Datums und der Uhrzeit per NTP, um die interne RTC beim Start des Programmcodes einzustellen. So kann man die Abfrage zu einer bestimmten Uhrzeit steuern.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Pico WLAN Edition

Elektronik-Set Pico WLAN Edition

Hardware-nahes Programmieren mit dem Mikrocontroller Raspberry Pi Pico W und MicroPython.

  • Raspberry Pi Pico W mit gelöteten Stiftleisten
  • Spezielles Steckbrett mit GPIO-Beschriftung
  • Einführung ins Hardware-nahe Programmieren
  • Schwerpunkte: WLAN, MQTT und Internet
  • Deutschsprachige Anleitung als PDF-Datei zum Download

In unseren Online-Workshops bieten wir intensiven Erfahrungsaustausch in kleinen Gruppen und Unterstützung bei individuellen Problemen.

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren