Wetterdaten von Openweather mit der API 3.0 auf einem TFT anzeigen



Seite als PDF

Ziel des Projekts

Mit der API (Appli­ca­ti­on Pro­gramming Inter­face = Pro­gram­mier­schnitt­stel­le) von Openweathermap.org und den damit erho­be­nen Daten sol­len die Wet­ter­da­ten auf einem TFT-Dis­play mit 320×240 Pixeln, einem ESP32 2,8 Zoll TFT (CYD) und in etwas aus­führ­li­che­rer Form im Seri­el­len Moni­tor ange­zeigt wer­den. Die Schrift­ar­ten wer­den von der Biblio­thel u8g2 zur Ver­fü­gung gestellt.

Darstellung der Daten

TFT-Displays

⇒Pin­be­le­gung ver­schie­de­ner TFT-Dis­plays 320×240 Pixel

Vorbereitung

Zunächst benö­tigst du einen API-Schlüs­sel von Openweathermap.org:

🔗 https://openweathermap.org/api

Um den Zugang zu nut­zen, musst du dei­ne Zah­lungs­da­ten hin­ter­le­gen.

Der API-Schlüs­sel erlaubt 1000 Zugrif­fe am Tag. Das ent­spricht einem Zugriff alle 86,4 Sekun­den.
Quel­le: 🔗https://openweathermap.org/price#weather

Um sicher­zu­ge­hen kannst du die Anzahl der Zugrif­fe beschrän­ken:
Quel­le: 🔗 https://home.openweathermap.org/subscriptions

Du kannst die Anzahl der Zugrif­fe fest­stel­len:

Quel­le: 🔗 https://home.openweathermap.org/statistics/onecall_30

Benötigte Bauteile

  • ESP32-Mikro­con­trol­ler/E­SP8266-Mikro­con­trol­ler
  • TFT
  • Lei­tungs­dräh­te

Lei­der wer­den vie­le Namen für den ⇒SPI-Bus ver­wen­det.

Pinbelegung der Mikrocontroller (Beispiele)

ESP32-Wroom

Nano ESP32

Wemos D1

XIAO-ESP32-C3

Board installieren

Benötigte Bibliotheken

Schrif­ten der Biblio­thek u8g2
ESP32 CYD 320×240 Pixel Adafruit ST7789

Erläuterung zu JSON

JSON (Java­Script Object Nota­ti­on) dient dem Aus­tausch von Daten zwi­schen einem Ser­ver und einer Web­an­wen­dung. JSON-Daten sind eine Samm­lung von Schlüs­sel-Wert-Paa­ren. Die Biblio­thek fil­tert aus den Roh­da­ten die­se Schlüs­sel-Wert-Paa­re her­aus.

Die Daten für dt, sun­ri­se und sun­set wer­den im Unix­for­mat ange­ge­ben (Anzahl der Sekun­den seit 1.1.1970 0 Uhr UTC). Zu UTC müs­sen 3600 bzw. 7200 Sekun­den addiert wer­den (MEZ -> eine Stun­de vor­aus, MESZ -> zwei Stun­den vor­aus).

Bei­spiel JSON-Wer­te beim Auf­ruf für Ber­gisch Glad­bach, Schlüs­sel und Wert wer­den in ecki­ge Klam­mern ein­ge­schlos­sen.

Abruf der Daten von openweathermap.org

Vorbereitung

Du benö­tigst die Geo­ko­or­di­na­ten (Län­gen­grad = lon, Brei­ten­grad = lat) des gewünsch­ten Orts. Am ein­fachs­ten geht das mit 🔗 Open­wea­ther­map selbst.

Aufruf der API

http://api.openweathermap.org/data/3.0//onecall?&lat=50.9833&lon=7.1333&APPID=xxxxxxxx&units=metric&exclude=daily,hourly,minutely
  • lat, lon -> Brei­ten­grad, Län­gen­grad
  • APPID -> dei­ne APPID
  • units=metric -> metri­sche Maß­an­ga­ben, die Tem­pe­ra­tur wird als Stan­dard in Kel­vin ange­zeigt
  • exclude=daily,hourly,minutely,alerts -> kei­ne Daten der Wet­ter­vor­her­sa­ge, kei­ne Warn­mel­dun­gen anzei­gen
  • lang=de -> Aus­ga­be der Beschrei­bun­gen auf deutsch

Manch­mal wer­den meh­re­re Ver­su­che benö­tigt um die Zeit zu syn­chro­ni­sie­ren und den Open­wea­ther-Ser­ver zu errei­chen.

Im Web­brow­ser kön­nen noch wei­te­re Daten abge­ru­fen wer­den:

Wet­ter für his­to­ri­sche Daten (seit 2.1.1979)

api.openweathermap.org/data/3.0/onecall/day_summary?&lat=50.9833&lon=7.1333&date=1979-01-02&appid=xxxxxxxx&units=metric

Wet­ter­über­blick als Text (in Eng­lisch)

api.openweathermap.org/data/3.0/onecall/overview?&lat=50.9833&lon=7.133&appid=xxxxxxxx&units=metric

Das Programm für TFT 320 ✕ 240

Einbinden der Bibliotheken und Definition der Variablen

Der ein­zi­ge Unter­schied zwi­schen den Mikro­con­trol­lern ist die Zuord­nung der SPI-Pins ab Zei­le 15.
Die benö­tig­ten WiFi-Biblio­the­ken wer­den ent­spre­chend (ESP32 oder ESP8266) aus­ge­wählt.

Der setup-Teil

Der Fort­schritt der WiFi-Ver­bin­dung und der Syn­chro­ni­sa­ti­on der Zeit wird auf dem TFT ange­zeigt.
Wenn in 90 Sekun­den kei­ne Ver­bin­dung zu einem Zeit­ser­ver her­ge­stellt wer­den konn­te, wird das Pro­gramm been­det. Nach einem erneu­ten Hoch­la­den kommt zumeist die Ver­bin­dung schnell zustan­de.

Der loop-Teil

Funktion ServerAntwortHolen()

Im loop-Teil wird die Funk­ti­on Ser­ver­Ant­wort­ho­len() auf­ge­ru­fen. Sie holt die Wet­ter­da­ten als String, der im loop-Teil in Schlüs­sel-Wert-Paa­re umge­wan­delt wird.

Quellen


Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ähnliche Projekte


Letzte Aktualisierung: Feb. 8, 2026 @ 22:58

Inhalt