Anleitung zu Better Wetter

Eine mit ThingSpeak verbundene Wetterstation aus einem NodeMCU (ESP8266) / M5Stack (ESP32), einem BME280 und einem Display.

Zurück zur Seite der Wetterstation

Libraries

BME280 https://github.com/finitespace/BME280
TFT_eSPI https://github.com/Bodmer/TFT_eSPI
JPEGDecoder https://github.com/Bodmer/JPEGDecoder
JSON_Decoder https://github.com/Bodmer/JSON_Decoder
DarkSkyWeather https://github.com/Bodmer/DarkSkyWeather
ezTime (evtl. Anpassungen für neuste Version nötig) https://github.com/ropg/ezTime
ArduinoJson https://github.com/bblanchon/ArduinoJson
ESP32WebServer (nur für ESP32) https://github.com/Pedroalbuquerque/ESP32WebServer

Kompatibilität

Kompatibel mit dem ESP8266 und dem ESP32. Getestet mit einem NodeMCU (ESP8266) und einem M5Stack (ESP32).
Die richtigen Pins werden auf dem ESP32 und dem M5Stack automatisch ausgewählt, müssen für andere Geräte aber eventuell geändert werden. Es werden automatisch die richtigen Bibliotheken, je nach verwendetem Mikrocontroller ausgewählt. Die TFT_eSPI Bibliothek muss je nach verwendetem Display eventuell anders eingestellt werden (z. B. beim M5Stack).


Einstellungen

Wenn bool SetupMode = true ist, wird nach dem Start des Gerätes ein Access Point aufgebaut, über den eine Verbindung zum WLAN hergestellt werden kann. Dann muss in ssid und password nichts eingetragen sein. Auf dem Display werden dann Anweisungen dafür angezeigt. Da die WLAN-Zugangsdaten (derzeit) nicht über einen Reset hinweg gespeichert werden, ist dies nicht zu empfehlen, wenn die Wetterstation oft vom Strom getrennt wird. Für diesen Fall kann bool SetupMode = false sein, dann müssen in ssid und password die SSID und das Passwort des zu verwendenden Netzwerks eingetragen werden.

Dark Sky Einstellungen
In api_key muss der API Key von https://darksky.net/dev/ eingetragen werden. In latitude und longitude müssen Längen und Breitengrad des Ortes für die Wettervorhersage eingetragen werden.

ThingSpeak Einstellungen
In channelID muss die ID des Kanals, an den die Wetterstation ihre Messdaten senden soll eingetragen werden. In writeAPIKey muss der Write API Key für diese. In readChannelID muss die ID des Kanals, von dem die Messdaten einer andere Wetterstation abgerufen werden sollen. Dieser Kanal muss öffentlich sein.


Übertragen

Wird normal mit dem Arduino IDE übertragen.
Der data Ordner muss mit dem Arduino ESP8266 filesystem uploader für den ESP8266 oder dem Arduino ESP32 filesystem uploader für den ESP32 übertragen werden.


Anschließen

Es muss ein Display (ich weiß nicht, ob es auch ohne geht (ich denke ja), ist auf jeden Fall nicht sinnvoll ohne Display) angeschlossen sein. Außerdem muss ein BME280 per I²C angeschlossen sein. Auf dem ESP8266 standardmäßig SDA an D6 und SCL an D2, auf dem ESP32 SDA an 22 und SCL an 21.


Probleme

Falls FS.h nicht vorhanden ist, muss der ESP8266/ESP32 über sein Git-Repo. installiert werden. Dafür muss https://github.com/esp8266/Arduino oder https://github.com/espressif/arduino-esp32 nach hardware im Sketchbook-Ordner geklont werden und darin in tools get.py mit Python ausgeführt werden. Meiner Erfahrung nach funktioniert es auch, wenn der ESP32 auf diese Weise installiert ist und der ESP8266 nur über das Arduino IDE.