COVID-19 (Coronavirus): Live-Ticker mit Sense HAT #MonthOfMaking

2 Kommentare Autor: Jürgen (jdo)

Aus zwei aktuellen Anlässen ist hier nun mein Beitrag zum Coronavirus COVID-19 und zum #MonthOfMaking von der Raspberry Pi Foundation. Wenn sich zwei Fliegen schon mit einer Klappe schlagen lassen, dann sollte man das auch tun, oder? Da wir sowieso alle dem Untergang geweiht sind, ist es besser, den Beitrag so schnell wie möglich zu veröffentlichen. Schon bald wird ihn möglicherweise niemand mehr lesen können. Am Freitag ist auch noch der 13.! Uns bleibt wirklich nichts erspart …

Mein Freund aus Australien hat mir von Hamster- oder Panik-Käufen in Australien erzählt. Eine Frau hat 196 Rollen Klopapier gekauft. Beim Klopapier stehen in einigen Supermärkten nun Aufsichten, damit jeder nur eine bestimmte Menge kaufen kann. 196 Rollen – also, selbst wenn man eine Rolle pro Tag verscheißt … die Panik ist schlimmer als das Virus, wie mir scheint.

Ich mag den Podcast des NDR, in dem der Virologe Professor Christian Drosten Fakten nüchtern erklärt, sehr gern. Er ist gut, hilfreich und rückt die Situation doch sehr ins rechte Licht. Er spricht Tacheles und benutzt dann auch schon Ausdrücke wie gefährliches Halbwissen, wenn es angemessen ist. Einfach reinhören, das lohnt sich.

Wo bekomme ich die Daten her?

Die Updates für die Daten bekomme ich von https://covid19.mathdro.id/api, beziehungsweise möchte ich die Daten für Deutschland haben und benutze deswegen die URL https://covid19.mathdro.id/api/confirmed. Das Ergebnis sieht dann zum Beispiel so aus:

Covid-19 (Coronavirus) in Deutschland

COVID-19 (Coronavirus) in Deutschland

Um die URL abzufragen, benutze ich cfscraper. Ich weiß nicht, ob es in diesem Fall notwendig ist, aber bei meinem Bitcoin-Tracker brauche ich es, da sonst Cloudflare dazwischenfunkt. Du kannst es via PIP installieren. Ist das nicht vorhanden, dann installiere es:

sudo apt install python3-pip

Danach folgt ein

pip3 install cfscrape

Ebenso kannst Du gleich überprüfen, ob Sense HAT bereits installiert ist:

sudo apt-get install sense-hat

Der Live-Ticker zu COVID-19 (Coronavirus)

Nun habe ich alle Komponenten, um an die Daten zu kommen. Mein Programm sieht so aus – ich frage nur die Daten aus Deutschland ab und lasse sie über meinen Sense HAT anzeigen.

from sense_hat import SenseHat
import json
import cfscrape

sense = SenseHat()
scraper = cfscrape.create_scraper()

blue = (0, 0, 255)
yellow = (255, 255, 0)
red = (255, 0, 0)
green = (0, 255, 0)
black = (0, 0, 0)

url = 'https://covid19.mathdro.id/api/confirmed'
cfurl = scraper.get(url).content
data = json.loads(cfurl)

infectedDE = data[8]['confirmed']
deathsDE = data[8]['deaths']
recoveredDE = data[8]['recovered']

sense.set_rotation(90)
sense.show_message(str(infectedDE), text_colour=yellow, scroll_speed=0.1)
sense.show_message(str(deathsDE), text_colour=red, scroll_speed=0.1)
sense.show_message(str(recoveredDE), text_colour=green, scroll_speed=0.1)

sense.clear()

Die bestätigten Infektionen werden in Gelb angezeigt. Bestätigte Todesfälle gibt es in Deutschland derzeit keine und deswegen wird der Sense HAT eine rote 0 aus. Wiedergenese Menschen werden in Grün angezeigt.

Die Zeile sense.set_rotation(90) brauche ich, weil mein Sense HAT nach außen verlegt ist und an der Wand hängt. Vielleicht ist das bei Dir nicht notwendig. Wie Du siehst, reicht für so eine kleine Spielerei sogar ein Raspberry Pi A+ aus. Ein Pi Zero W würde natürlich auch funktionieren, wenn die Pins entsprechend vorhanden sind.

Sense HAT hängt an der Wand und zeigt die Zahlen zu COVID-19 an

Sense HAT hängt an der Wand und zeigt die Zahlen zu COVID-19 an

Update: Dass sich die Zahlen laufend verändern, war zu erwarten. In der Zwischenzeit gibt es leider auch erste Todesfälle in Deutschland.

Du kannst das Script anpassen, wie Du möchtest. Vielleicht willst Du ein anderes Land haben, oder mehrere Länder oder auch die weltweiten Daten.

Update: Daten ändern sich

Deutschland ist nun nicht mehr wie oben beschrieben an 8. Stelle, sondern in Bundesländer aufgeschlüsselt. Aber das ist egal, da wir sowieso den ganzen Datensatz laden. Dann fragen wir eben ab, wo Deutschland vorkommt und summieren die Zahlen entsprechend. Das Script ändert sich wie folgt:

from sense_hat import SenseHat
import json
import cfscrape

sense = SenseHat()
scraper = cfscrape.create_scraper()

blue = (0, 0, 255)
yellow = (255, 255, 0)
red = (255, 0, 0)
green = (0, 255, 0)
black = (0, 0, 0)

url = 'https://covid19.mathdro.id/api/confirmed'
cfurl = scraper.get(url).content
data = json.loads(cfurl)

infectedDE= int()
deathsDE= int()
recoveredDE= int()

for val in data:
    if val['countryRegion'] == 'Germany':
        infectedDE = val['confirmed'] + infectedDE
        deathsDE = val['deaths'] + deathsDE
        recoveredDE = val['recovered'] + recoveredDE

sense.set_rotation(90)
sense.show_message(str(infectedDE), text_colour=yellow, scroll_speed=0.1)
sense.show_message(str(deathsDE), text_colour=red, scroll_speed=0.1)
sense.show_message(str(recoveredDE), text_colour=green, scroll_speed=0.1)

sense.clear()

Damit bist Du dann auf der sicheren Seite.

Ich habe übrigens auch einen verbesserten Coronavirus-Ticker geschrieben, der die neuesten Zahlen sogar auf das Smartphone liefert.

Nette Pi-Konstellation

Suchst Du ein VPN für den Raspberry Pi? NordVPN* bietet einen Client, der mit Raspberry Pi OS (32-Bit / 64-Bit) und Ubuntu für Raspberry Pi (64-Bit) funktioniert.




 Alle Kommentare als Feed abonnieren

2 Kommentare zu “COVID-19 (Coronavirus): Live-Ticker mit Sense HAT #MonthOfMaking”

  1. björn says:

    hallo,
    habe versucht das ganze nach zu bauen ohne den sensor hat.sollte mal auf ein hd44780
    aber da stimmt ja schon was nich bei auslesen irgendwo liest er eine falsche zeile und nich für gesamt deutschland komme nur auf 760 infizierten
    und das stimmt ja nun nicht
    bitte im hilfe
    code wurde nix geändern nur den sensorhat rausgenohmen

    lg Björn

    • jdo says:

      Du hast recht, weil die Datenstruktur dort wiederholt geändert wurde. Du hast die Daten für Mecklenburg-Vorpommern bekommen.

      Willst Du hier das Ergebnis richtig haben, musst Du die Zahlen in der for-Schleife summieren. Ich habe das Script am Ende des Beitrags angepasst und nun sollte es die richtigen Zahlen auswerfen.