Inhaltsverzeichnis:
- Schritt 1: API-Schlüssel und URL von Openweather.org beziehen
- Schritt 2: Anschlussdiagramm
- Schritt 3: Arduino-Code
- Schritt 4: Verarbeitungscode
Video: (IOT-Projekt) Wetterdaten mit ESP8266 und Openweather API abrufen - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
In diesem anweisbaren werden wir ein einfaches IOT-Projekt aufbauen, in dem die Wetterdaten unserer Stadt von openweather.com/api abgerufen und mit Verarbeitungssoftware angezeigt werden.
Lieferungen:
- Arduino
- ESP8266 oder ein anderes ESP-Modul
- Arduino-IDE
- Verarbeitungssoftware
- Steckbrett
- Überbrückungsdrähte männlich zu männlich und männlich zu weiblich
Schritt 1: API-Schlüssel und URL von Openweather.org beziehen
- Konto erstellen in https://openweathermap.org (Bild 1)
- Nachdem Sie sich angemeldet haben, gehen Sie zu API-Schlüsseln und Sie erhalten den API-Schlüssel wie im Bild gezeigt. (Bild 2)
- Kopieren Sie den API-Schlüssel und speichern Sie ihn in einer Notepad-Datei. (Bild 3)
- Gehen Sie zur API-Option (Bild 4)
- Gehen Sie zur API-Dokumentoption, wie in Bild gezeigt (Bild 5)
- Kopieren Sie die URL aus dem und angezeigten und speichern Sie sie in einer Notepad-Datei (Bild 6)
Schritt 2: Anschlussdiagramm
Schritt 3: Arduino-Code
Bevor Sie diesen Code in Arduino kopieren, stellen Sie sicher, dass Sie das ESP8266-Board mit dem Boards-Manager in Arduino ide heruntergeladen haben.
#enthalten
#include #include #include const char* ssid = "Ihre SSID"; const char* password = "Ihr SSID PASSWORD";// Ihr Domainname mit URL-Pfad oder IP-Adresse mit Pfad String openWeatherMapApiKey = "Fügen Sie Ihren API-Schlüssel hier ein"; // Ersetzen Sie durch Ihren Ländercode und Ihre Stadt String city = "Mumbai"; String countryCode = "IN"; Zeichenfolgendaten[16]; // DER STANDARDTIMER IST ZU TESTZWECKEN AUF 10 SEKUNDEN GESETZT // Überprüfen Sie für eine endgültige Anwendung die API-Aufruflimits pro Stunde/Minute, um zu vermeiden, dass Sie gesperrt/gesperrt werden unsigned long lastTime = 0; // Timer auf 10 Minuten eingestellt (600000) // unsigned long timerDelay = 600000; // Timer auf 10 Sekunden setzen (10000) unsigned long timerDelay = 10000; String jsonBuffer; Void setup () { Serial.begin (115200); WiFi.begin(ssid, Passwort); //Seriell.println("Verbinden"); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Mit dem WiFi-Netzwerk mit IP-Adresse verbunden: "); // Serial.println (WiFi.localIP ()); // // Serial.println ("Timer auf 10 Sekunden eingestellt (timerDelay-Variable), es dauert 10 Sekunden, bis der erste Messwert veröffentlicht wird."); } void loop() { // Senden Sie eine HTTP GET-Anfrage if ((millis() - lastTime) > timerDelay) { // Überprüfen Sie den WLAN-Verbindungsstatus if(WiFi.status()== WL_CONNECTED){ String serverPath = "https://api.openweathermap.org/data/2.5/weather?q=" + Stadt + ", " + countryCode + "&APPID=" + "d5b56fd07988143ae141503ed9d81742" + "&units=metric"; jsonBuffer = httpGETRequest(serverPath.c_str()); //Seriell.println(jsonBuffer); JSONVar myObject = JSON.parse(jsonBuffer); // JSON.typeof(jsonVar) kann verwendet werden, um den Typ der Variablen zu ermitteln if (JSON.typeof(myObject) == "undefined") { //Serial.println("Parsing input failed!"); Rückkehr; } // Serial.print ("JSON-Objekt = "); // Serial.println (myObject); // Serial.print ("Temperatur: "); // Serial.println (myObject["main"]["temp"]); // Serial.print ("Druck: "); // Serial.println (myObject["main"]["pressure"]); // Serial.print ("Feuchtigkeit: "); // Serial.println (myObject["main"]["humidity"]); // Serial.print ("Windgeschwindigkeit: "); // Serial.println (myObject["wind"]["speed"]); int temp = myObject["main"]["temp"]; long pres = myObject["main"]["pressure"]; int feucht = myObject["main"]["humidity"]; int wind = myObject["wind"]["speed"]; String country = JSON.stringify(myObject["sys"]["country"]); String city1 = JSON.stringify(myObject["name"]); String Wetter = JSON.stringify(myObject["Wetter"][0]["Beschreibung"]); Zeichenfolgensymbol = JSON.stringify(myObject["Wetter"][0]["Symbol"]); data[0]= String(temp); Daten[1]= "/"; data[2]= String(pres); Daten[3]= "/"; data[4]= String(feucht); Daten[5]= "/"; Daten[6]= String(Wind); Daten[7]= "/"; Daten[8]= Land; Daten[9]= "/"; Daten[10]= Stadt1; Daten[11]= "/"; Daten[12]= Wetter; Daten[13]= "/"; Daten[14]= Symbol; Daten[15]= "\n"; for (int i = 0; i0) {// Serial.print ("HTTP-Antwortcode: "); // Serial.println (httpResponseCode); Nutzlast = http.getString(); } Else {Serial.print ("Fehlercode: "); Serial.println (httpResponseCode); } // Freie Ressourcen http.end(); Nutzlast zurückgeben; }
Schritt 4: Verarbeitungscode
Bevor Sie diesen Code ausführen, laden Sie die angegebenen Symbolbilder herunter, die verwendet werden, um das Wetter anzuzeigen. Und behalten Sie die Bilder und den Code im selben Ordner.
Importabwicklung.seriell.*;
Serieller myPort; PImage img; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; PImage img17; PImage img18; int-Temp; int pres; int feucht; int Wind; Zeichenfolge Stadt = " "; String Land = " "; Zeichenfolge Wetter =" "; Zeichenfolgensymbol = " "; Void setup () { Größe (500, 500); myPort = new Serial (dies, "COM3", 115200); img = loadImage("01d.png"); img2 = loadImage("01n.png"); img3 = loadImage("02d.png"); img4 = loadImage("02n.png"); img5 = loadImage("03d.png"); img6 = loadImage("03n.png"); img7 = loadImage("04d.png"); img8 = loadImage("04n.png"); img9 = loadImage("09d.png"); img10 = loadImage("09n.png"); img11 = loadImage("10d.png"); img12 = loadImage("10n.png"); img13 = loadImage("11d.png"); img14 = loadImage("11n.png"); img15 = loadImage("13d.png"); img16 = loadImage("13n.png"); img17 = loadImage("50d.png"); img18 = loadImage("50n.png"); aufrechtzuerhalten. Void Draw () { Hintergrund (72, 209, 204); Textgröße(22); füllen (54, 69, 79); text("Temperatur:", 25, 100); text(temp +"°C", 200, 100); text("Druck:", 25, 150); text(pres + "hpa", 200, 150); text("Luftfeuchtigkeit: ", 25, 200); text(feucht+" %", 200, 200); text("Wind:", 25, 250); Text(Wind+" m/s", 200, 250); text("Land/Stadt: ", 25, 300); Text(Land +"-"+ Stadt, 200, 300); text("Wetter: ", 25, 350); Text(Wetter, 200, 350); if(icon.contains("01d")){image(img, 380, 15); aufrechtzuerhalten. Sonst if (icon.contains ("01n")) { image (img2, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("02d")){image(img3, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("02n")){image(img4, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("03d")){image(img5, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("03n")){image(img6, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("04d")){image(img7, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("04n")){image(img8, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("09d")){image(img9, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("09n")){image(img10, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("10d")){image(img11, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("10n")){image(img12, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("11d")){image(img13, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("11n")){image(img14, 380, 15); aufrechtzuerhalten. Sonst if (icon == "13d") { image (img15, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("13n")){image(img16, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("50d")){image(img17, 380, 15); aufrechtzuerhalten. Sonst if(icon.contains("50n")){image(img18, 380, 15); }} void serialEvent(Serial myPort){ if (myPort.available() > 0){ String data = myPort.readStringUntil('\n'); if(data!= null){data = trim(data); String items = split(data, '/'); if (items.length > 1) {temp = int(items[0]); pres = int (Elemente[1]); feucht = int(items[2]); wind = int(items[3]); city = items[4].replace("\"", ""); country = items[5].replace("\"", ""); Wetter = items[6].replace("\"", ""); icon = items[7].replace("\"", ""); } } } }
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Uhrzeit und Datum aus dem Internet abrufen - Tutorial: 9 Schritte
Abrufen von Uhrzeit und Datum aus dem Internet - Tutorial: In diesem Tutorial erfahren Sie, wie Sie mit M5Stack StickC und Visuino das Datum und die Uhrzeit vom NIST TIME-Server abrufen. Sehen Sie sich ein Demonstrationsvideo an
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: 3 Schritte
So verbinden Sie die Android-Anwendung mit AWS IOT und verstehen die Spracherkennungs-API: In diesem Tutorial erfahren Sie, wie Sie die Android-Anwendung mit dem AWS IOT-Server verbinden und die Spracherkennungs-API verstehen, die eine Kaffeemaschine steuert. Die Anwendung steuert die Kaffeemaschine über Alexa Sprachdienst, die c
Bodenfeuchtesensor und ESP8266 mit der AskSensors IoT Cloud verbinden – wikiHow
So verbinden Sie Bodenfeuchtigkeitssensor und ESP8266 mit der AskSensors IoT Cloud: Diese Anleitung zeigt Ihnen, wie Sie Ihren Bodenfeuchtigkeitssensor und ESP8266 mit der IoT-Cloud verbinden. Für dieses Projekt verwenden wir ein Knoten MCU ESP8266 WiFi-Modul und einen Bodenfeuchtigkeitssensor das misst den volumetrischen Inhalt des Wassers in der so
DIY IoT-Lampe für die Hausautomation -- ESP8266-Tutorial: 13 Schritte (mit Bildern)
DIY IoT-Lampe für die Hausautomation || ESP8266-Tutorial: In diesem Tutorial werden wir eine mit dem Internet verbundene intelligente Lampe erstellen. Dies wird tief in das Internet der Dinge eintauchen und eine Welt der Heimautomatisierung eröffnen! Die Lampe ist über WLAN verbunden und verfügt über ein offenes Nachrichtenprotokoll. Das heißt, Sie können wählen