Folding@Home-Statistiken auf LED-Display anzeigen

Statistiken zu Folding@Home zur Bereitstellung von Rechenzeit für die Viren-Erforschung per API abrufen und anzeigen: Nicht nur für "Heise-Falter" interessant.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 9 Beiträge

(Bild: Karl Pelzer)

Von
Inhaltsverzeichnis

Seit Beginn der Corona-Krise kann man bei Folding@Home an der Erforschung des Virus mitarbeiten, indem man dem Projekt seine ungenutzte Rechenpower von CPU und GPU zur Verfügung stellt. Man kann anonym beitragen, ein Donor-Konto einrichten oder mit diesem Donor-Konto ein Team unterstützen.

Mittlerweile gibt es auch ein Folding@Home-Team von Heise, die "Heise-Falter", dem ich mich angeschlossen habe. Mit einem Donor-Konto bekommt man Punkte für errechnete Workunits (WUs). Da man auch mit mehreren Rechnern mit einem gemeinsamen Konto rechnen kann, werden die erreichten Punkte zentral gespeichert. Über das Webinterface des Clients kann man diese Informationen abrufen. Dabei kam mir die Idee, dass man das auch irgendwie abfragen können muss. So habe ich ein Display gebaut, das meine Statistiken mithilfe eines Raspberry Pi abruft und auf Displaymodulen mit einfarbigen 8×8 LEDs anzeigt. Die Module verwenden den Treiberbaustein MAX7219.

Das Folding@Home-Display (Quelle: Karl Pelzer)

Zuerst benötigt man natürlich die Daten von Folding@Home. Nach etwas Recherche bin ich auf diese Beschreibung der Web-API gestoßen. Das Konzept ist simpel: Der Aufruf https://stats.foldingathome.org/api/donor/IhrDonorName liefert ein JSON-Dokument zurück, das sich in Python leicht in seine Bestandteile zerlegen lässt. Probieren Sie den Aufruf einfach mal im Browser aus und schauen Sie sich das Ergebnis an. So sieht es in Python aus:

import requests
r = requests.get(f"https://stats.foldingathome.org/api/donor/IhrDonorName")
donor = r.json()
print (donor)

Damit wären die Grundlagen für die Software gelegt. Nun zur Hardware.

Zum Einsatz kommen ein Raspberry Pi Zero W und zwei Display-Module, die ich als Dreierset in einer Vorweihnachtsaktion günstig bei Amazon erstanden habe. Seither warten sie ungenutzt auf ihre große Chance. Der Händler bewarb die Display-Module mit einem kostenlosen E-Book und verschiedenen Beispielen, doch das E-Book bezog sich nur auf Arduino und die verlinkte Bibliothek war auch nicht hilfreich. Leider gestaltete sich die Suche nach einer passenden Bibliothek schwierig, obwohl es zu dem MAX 7219 Treiber-Baustein eine Vielzahl von Bibliotheken gibt – denn die meisten von ihnen geben auf meinen Displays nur Pixelbrösel aus.

Lieferumfang: Modul mit festgelöteten Eingangspins, Kabel und Ausgangspins zum selber anlöten.

(Bild: Karl Pelzer)

Schließlich wurde ich bei der Bibliothek luma.led_matrix auf GitHub fündig. Auf der Homepage des Autors, Richard Hull, gibt es eine ausführliche Anleitung für die Installation unter Python 2 und Python 3, die Verkabelung und einige Beispiele.

Wenn man nur ein Display-Modul verwenden möchte, kann man mit meinem Beispielprogramm direkt loslegen. Da die Module elektrisch und softwareseitig einfach kaskadierbar sind, kann man auch mehrere Module hintereinander schalten. In der Initialisierungsroutine muss lediglich die entsprechende Anzahl 8×8-Matrizen mitgegeben werden. Bei einem Modul sind es vier, bei zwei sind es acht, und so weiter. Unter Umständen muss man die Displays mit einer eigenen Spannungsquelle verbinden, damit der Raspi nicht in die Knie geht.