Wie kann man die Daten herunterladen?

Ruft man die Daten im Browser ab, so wird eine SSL-Verbindung verwendet. Also müsste auch der ESP32 entsprechend programmiert werden. Dazu benötige ich ein Zertifikat. Das habe ich mir so geholt:

Stellenmarkt
  1. Teamleiter SAP Sales & Service (m/w/x) - SAP SD/CS Teamleitung
    über duerenhoff GmbH, Raum Köln
  2. Full Stack Entwickler (m/w/d) Service-Plattform
    CLAAS KGaA mbH, Herzebrock-Clarholz
Detailsuche

Im Browser auf das Tab mit dem JSON-Code und dort auf das Schloss-Symbol neben der URL klicken. Dann auf Verbindung sicher klicken, danach auf Weitere Informationen.

Es erscheint ein neues Fenster. Dort auf Zertifikat anzeigen klicken.

  • Corona-Inzidenz-Anzeige auf dem ESP32 (Bild: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Die Landkreis-Nummer findet sich unter OBJECTID. (Screenshot: Thomas Ell)
  • CSV-Datei zur Suche nach dem Landkreis (Screenshot: Thomas Ell)
  • Import Assistent bei Libreoffice Calc (Screenshot: Thomas Ell)
  • Tabelle mit OBJECTID und Landkreis (Screenshot: Thomas Ell)
  • Popupmenü (Screenshot: Thomas Ell)
  • Die URL erstellen (Screenshot: Thomas Ell)
  • Zertifikat anzeigen klicken (Screenshot: Thomas Ell)
  • Neuer Browser-Tab (Screenshot: Thomas Ell)
  • Zertifikat öffnen oder herunterladen (Screenshot: Thomas Ell)
  • In den eigenen Code kopieren (Screenshot: Thomas Ell)
Zertifikat anzeigen klicken (Screenshot: Thomas Ell)

Es öffnet sich ein neues Browser-Tab. Dort auf Amazon Root CA 1 und dann unten auf PEM (Zertifikat) klicken.

  • Corona-Inzidenz-Anzeige auf dem ESP32 (Bild: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Die Landkreis-Nummer findet sich unter OBJECTID. (Screenshot: Thomas Ell)
  • CSV-Datei zur Suche nach dem Landkreis (Screenshot: Thomas Ell)
  • Import Assistent bei Libreoffice Calc (Screenshot: Thomas Ell)
  • Tabelle mit OBJECTID und Landkreis (Screenshot: Thomas Ell)
  • Popupmenü (Screenshot: Thomas Ell)
  • Die URL erstellen (Screenshot: Thomas Ell)
  • Zertifikat anzeigen klicken (Screenshot: Thomas Ell)
  • Neuer Browser-Tab (Screenshot: Thomas Ell)
  • Zertifikat öffnen oder herunterladen (Screenshot: Thomas Ell)
  • In den eigenen Code kopieren (Screenshot: Thomas Ell)
Neuer Browser-Tab (Screenshot: Thomas Ell)
Golem Karrierewelt
  1. Deep-Dive Kubernetes – Observability, Monitoring & Alerting: virtueller Ein-Tages-Workshop
    22.09.2022, Virtuell
  2. Informationssicherheit in der Automobilindustrie nach VDA-ISA und TISAX® mit Zertifikat: Zwei-Tage-Workshop
    22./23.11.2022, Virtuell
Weitere IT-Trainings

Dann gibt es die Möglichkeit, das Zertifikat in einem Editor zu öffnen oder es herunterzuladen.

  • Corona-Inzidenz-Anzeige auf dem ESP32 (Bild: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Die Landkreis-Nummer findet sich unter OBJECTID. (Screenshot: Thomas Ell)
  • CSV-Datei zur Suche nach dem Landkreis (Screenshot: Thomas Ell)
  • Import Assistent bei Libreoffice Calc (Screenshot: Thomas Ell)
  • Tabelle mit OBJECTID und Landkreis (Screenshot: Thomas Ell)
  • Popupmenü (Screenshot: Thomas Ell)
  • Die URL erstellen (Screenshot: Thomas Ell)
  • Zertifikat anzeigen klicken (Screenshot: Thomas Ell)
  • Neuer Browser-Tab (Screenshot: Thomas Ell)
  • Zertifikat öffnen oder herunterladen (Screenshot: Thomas Ell)
  • In den eigenen Code kopieren (Screenshot: Thomas Ell)
Zertifikat öffnen oder herunterladen (Screenshot: Thomas Ell)

Aus dem Editor kann es mit Cut-and-copy in den eigenen Code kopiert werden.

  • Corona-Inzidenz-Anzeige auf dem ESP32 (Bild: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Deutschlandkarte mit den einzelnen Landkreisen auf dem COVID-19-Datenhub (Screenshot: Thomas Ell)
  • Die Landkreis-Nummer findet sich unter OBJECTID. (Screenshot: Thomas Ell)
  • CSV-Datei zur Suche nach dem Landkreis (Screenshot: Thomas Ell)
  • Import Assistent bei Libreoffice Calc (Screenshot: Thomas Ell)
  • Tabelle mit OBJECTID und Landkreis (Screenshot: Thomas Ell)
  • Popupmenü (Screenshot: Thomas Ell)
  • Die URL erstellen (Screenshot: Thomas Ell)
  • Zertifikat anzeigen klicken (Screenshot: Thomas Ell)
  • Neuer Browser-Tab (Screenshot: Thomas Ell)
  • Zertifikat öffnen oder herunterladen (Screenshot: Thomas Ell)
  • In den eigenen Code kopieren (Screenshot: Thomas Ell)
In den eigenen Code kopieren (Screenshot: Thomas Ell)

Die JSON-Daten müssen über eine verschlüsselte Verbindung heruntergeladen werden. Dazu habe ich die Bibliothek WiFiClientSecure verwendet.

  1. #include <WiFiClientSecure.h></em>

Mit Hilfe der genannten Bibliothek kann die durch die URL bestimmte Abfrage durchgeführt und das vom Server zurückgegebene JSON als String empfangen werden. Um auf einzelne Attribute der Daten zuzugreifen, müssen sie in ein JSON-Objekt umgewandelt werden.

Bei einem meiner ersten Versuche mit der JSON-Bibliothek bekam ich schon beim Kompilieren einen Speicherfehler und sann darüber nach, wie ich den String so verkleinern konnte, dass es zu keiner Fehlermeldung kam. Die vom GIS zurückgegebene Datenmenge enthielt sehr viele Geokoordinaten, die ich für meinen Zweck überhaupt nicht benötigte. Darum kürzte ich den String mit folgenden Anweisungen:

  1. long pos = payload.indexOf("geometry\"");
  2. payload = payload.substring(0, pos - 2) + "}]}";

Mit folgenden drei Zeilen bekomme ich daraus ein JSON-Objekt:

  1. DynamicJsonDocument doc(2048);
  2. deserializeJson(doc, payload);
  3. JsonObject obj = doc.as<JsonObject>();

Und mit einer einzigen weiteren Zeile den gesuchten Wert:

  1. cases7_per_100k = round ((double) (obj["features"][0]["attributes"]["cases7_per_100k"]) * 10) / 10;

Es gibt ein paar Nachkommastellen, die man so entfernen kann:

  1. char buffer[10];
  2. dtostrf(cases7_per_100k, 3, 1, buffer);

In buffer steht der gewünschte Wert.

Wie oft updaten?

Das RKI findet es sicher nicht lustig, wenn wir die Daten alle paar Sekunden anfordern, obwohl sie sich nur einmal täglich ändern. Darum muss das Programm so gestaltet werden, dass es ebenfalls nur einmal am Tag die Daten anfordert. Ideal wäre ein Zeitpunkt, kurz nachdem das RKI die Daten aktualisiert hat.

Dann müssten wir aber erst einmal wissen, wann das ist. Und dann müsste das ESP32 die aktuelle Uhrzeit kennen. Das kann man zwar machen, erfordert aber einiges an Aufwand. Um die Lösung möglichst einfach zu halten, schlage ich vor, einfach nur jede oder jede zweite Stunde die Daten abzurufen. Sollten die Daten in der Nacht upgedatet werden, so haben wir sie jeden Fall am nächsten Morgen.

Dieser Artikel erschien zuerst bei Steinlaus.de, dem Blog von Thomas Ell alias Tinkerpete. Dort findet sich auch das dokumentierte Programm.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Was ist JSON?
  1.  
  2. 1
  3. 2
  4. 3


Vögelchen 21. Jul 2022 / Themenstart

Du solltest das Denken nicht den Qerdenkern überlassen und deren dumme Phrasen...

webfraggle2 19. Jul 2022 / Themenstart

Im API Explorer unter Ausgabeoptionen -> Rückgabegeometrie auf false stellen. Oder in der...

Yian 14. Jul 2022 / Themenstart

Das Statistische Bundesamt währe auch ein gute Quelle. Die Daten einer Behörde sind...

AllDayPiano 13. Jul 2022 / Themenstart

Ja das ist schon richtig aber das, was der Autor daraus ableiten möchte, ist fraglich.

Kommentieren



Aktuell auf der Startseite von Golem.de
Elon Musk und Manchester United
Der Meme-Lord braucht die Blutgrätsche

Wenn Musk twittert, zittern die Anleger und nun auch Fußball-Fans. Wie sich der Milliardär endgültig ins Abseits bewegt und wie die Öffentlichkeit damit umgehen sollte.
Ein IMHO von Lennart Mühlenmeier

Elon Musk und Manchester United: Der Meme-Lord braucht die Blutgrätsche
Artikel
  1. Anti-Scalper: Amazon verkauft Playstation 5 nur noch mit Einladung
    Anti-Scalper
    Amazon verkauft Playstation 5 nur noch mit Einladung

    Prime ist nicht mehr nötig, aber dafür eine Einladung: Wegen anhaltender Lieferengpässe hat Amazon den Bestellvorgang bei der PS5 geändert.

  2. Wheelhome Vikenze III-e: Winziges elektrisches Wohnmobil mit Solardach
    Wheelhome Vikenze III-e
    Winziges elektrisches Wohnmobil mit Solardach

    Wheelhome hat mit dem Vikenze III-e ein elektrisches Wohnmobil für ein bis zwei Personen vorgestellt, das sich selbst dank Solarzellen mit Strom versorgt.

  3. Post-Quanten-Kryptografie: Die neuen Kryptoalgorithmen gegen Quantencomputer
    Post-Quanten-Kryptografie
    Die neuen Kryptoalgorithmen gegen Quantencomputer

    Die US-Behörde NIST standardisiert neue Public-Key-Algorithmen - um vor zukünftigen Quantencomputern sicher zu sein.
    Eine Analyse von Hanno Böck

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PS5 bestellbar bei Amazon & Co. • MSI Geburtstags-Rabatte • Neuer Saturn-Flyer • Game of Thrones reduziert • MindStar (MSI RTX 3070 599€) • Günstig wie nie: MSI 32" WHD 175 Hz 549€, Zotac RTX 3080 12GB 829€, Samsung SSD 1TB/2TB (PS5) 111€/199,99€ • Bester 2.000€-Gaming-PC[Werbung]
    •  /