Stylische Wetteranzeige mit dem ESP32

In einem Instructable wurde eine WiFi-Wetteranzeige vorgestellt, die (vorhergesagte) Wetterdaten als abstrakte Farben in einem selbst gebauten Rahmen darstellt. Inspiriert von dieser Idee wird hier ein ähnliches Projekt umgesetzt, welches Wetterlage, Temperatur und Luftfeuchtigkeit als Farben anzeigt.

Wetter-Symbole

Verwendete Bauteile

Programmierung des ESP32

Um die Wetterdaten zur Anzeige zu holen, wird hier ein ESP32-Modul verwendet, welches sich mit einem Webservice verbindet, die Daten dann verarbeitet und an die WS2812B-LED-Module weitergibt. Zum Übertragen des Sketches an das ESP32-Board muss zunächst die Arduino-IDE vorbereitet werden.

Holen der Wetterdaten

Die Wetterdaten werden von OpenWeather geholt, einer Website, die eine Reihe von kostenlosen APIs zur Verfügung stellt, um sowohl das aktuelle als auch das vorhergesagte Wetter eines beliebigen Ortes der Erde in maschinenlesbarem Format (JSON) zu erhalten. Um diesen Dienst nutzen zu können, muss man sich (kostenlos) registrieren, um einen sogenannten API-Key zu erhalten, welcher zur Abfrage der Schnittstellen zwingend notwendig ist.

Ich verwendet die Schnittstelle von OpenWeather, welche die aktuellen Wetterdaten anhand einer festen CityID mit folgender URL holt:
api.openweathermap.org/data/2.5/weather?id=CITY_ID&appid=API_KEY
Dabei wird API_KEY durch den eigenen Api-Key ersetzt und die CITY_ID durch die Id der gewünschten Stadt, aus der die Wetterdaten geholt werden sollen. Diese Id kann ermittelt werden, indem man die entsprechenden Stadt-Daten herunterlädt und einsieht.

Beispiele für Städte

Stadt Land ID
Munich DE 2867714
City of Edinburgh GB 3333229
Kyoto JP 1857910
Tromsø NO 6453316

Hinweis: Will man die Daten (z.B. Temperatur) im metrischen System bzw. Celsius-Graden erhalten, dann muss man in der URL der API noch zusätzlich &units=metric anhängen.

Verarbeiten (Parsen) der Wetterdaten

Die Schnittstellen von OpenWeather liefern JSON zurück und müssen im ESP32 verarbeitet werden, um an die Wetter-Bedingungen zu kommen, welche erfreulicherweise als Zahlen definiert sind: siehe Wetter-Codes.
Zum Parsen wird hier die Arduino-Library ArduinoJson verwendet, die es sehr einfach macht, die benötigten Wetter-Daten auszulesen.

Daten in JSON-Format von OpenWeather
Abb.: Die Daten von OpenWeather werden in JSON-Format zurückgeliefert und hier soll die id unter der Position weather ausgelesen und interpretiert werden.

Zum Verwenden der Library "ArduinoJson" wird in der Arduino IDE im Menüpunkt Werkzeuge » Board » Boardverwalter nach "ArduinoJson" gesucht und diese dann installiert:

Installieren von ArduinoJson

Prototyp & Sketch

Der Prototyp auf dem Breadboard wird mit drei einzelnen WS2812B-LED-Modulen und eine ESP32-DEV-Board aufgebaut (Verdrahtung siehe RGB-LED-Modul WS2812B).
Der Sketch liest alle 60 Minuten die aktuellen Wetterdaten von OpenWeather für eine gegebene Position (z.B. eigener Standort) und zeigt dabei die Werte für Wetterlage, Temperatur und Luftfeuchtigkeit als einen bestimmten Farbwert auf je einer RGB-LED an.
Der Sketch kann hier heruntergeladen werden:

Sketch: weather.zip
Prototyp auf dem Breadboard
Abb.: Der Prototyp auf dem Breadboard zeigt auf drei unterschiedlichen RGB-LEDs das aktuelle Wetter. Das kleine Stück Papier ist nur als Diffusor gedacht, damit die Farben bei der Aufnahme halbwegs sichtbar sind.

Standalone-Aufbau

- fehlt noch -

Weitere Modifikationen

zurück